pushframe 5.1.8__tar.gz → 5.1.9__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.1.8 → pushframe-5.1.9}/CHANGELOG.md +15 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/PKG-INFO +1 -1
- {pushframe-5.1.8 → pushframe-5.1.9}/docs/ERRORS.md +1 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/__init__.py +1 -1
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/enumerate.py +14 -3
- {pushframe-5.1.8 → pushframe-5.1.9}/pyproject.toml +1 -1
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_google_album.py +7 -2
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_enumerate.py +27 -3
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_version.py +1 -1
- {pushframe-5.1.8 → pushframe-5.1.9}/uv.lock +1 -1
- {pushframe-5.1.8 → pushframe-5.1.9}/.env.sample +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.freebuff/project-id +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.github/workflows/release.yml +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.github/workflows/tests.yml +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.gitignore +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.gsd/dispatch-isolation-sentinel.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/MILESTONES.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/PROJECT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/REQUIREMENTS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/RETROSPECTIVE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/ROADMAP.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/STATE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/WINDOWS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/ARCHITECTURE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/CONCERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/CONVENTIONS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/INTEGRATIONS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/STACK.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/STRUCTURE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/TESTING.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/config.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/gsync-apply-budget-none-crash.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/knowledge-base.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/login-475-null-creds.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/resolved/cli-status-verbose-logging.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/resolved/inspect-asset-null-fields.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/resolved/select-asset-401-unauthorized.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/status-crash-401-trip.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-REQUIREMENTS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-ROADMAP.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-LIVE-EVIDENCE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-ROADMAP.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/.gitkeep +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-03-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-03-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-SECURITY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-UAT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-REQUIREMENTS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-ROADMAP.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-SECURITY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-UAT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-SECURITY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-03-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-03-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-REVIEW-FIX.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-SECURITY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-03-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-03-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-04-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-04-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-LIVE-FINDINGS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-REVIEW-FIX.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/.gitkeep +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-REVIEW-FIX.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/.gitkeep +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-03-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-03-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-04-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-04-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-LIVE-FINDINGS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-SECURITY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-UAT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/COVERAGE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.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.1.8 → pushframe-5.1.9}/.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.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-quick/260708-dt9-add-progress-feedback-to-aura-cli-sync-a/260708-dt9-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-quick/260708-dt9-add-progress-feedback-to-aura-cli-sync-a/260708-dt9-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-quick/260708-dt9-add-progress-feedback-to-aura-cli-sync-a/deferred-items.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-quick/260708-fyr-batch-refactor-of-sync-apply-write-path-/260708-fyr-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-quick/260708-fyr-batch-refactor-of-sync-apply-write-path-/260708-fyr-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-quick/260708-fyr-batch-refactor-of-sync-apply-write-path-/260708-fyr-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-quick/README.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-REQUIREMENTS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-ROADMAP.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-03-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-03-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-04-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-04-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-05-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-05-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-06-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-06-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-LIVE-FINDINGS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-PATTERNS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-REVIEW.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-REQUIREMENTS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-ROADMAP.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-03-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-03-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-DECISION-RECORD.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-DISCUSSION-LOG.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-LIVE-FINDINGS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/COVERAGE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-DISCUSS-CHECKPOINT.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/COVERAGE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-03-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-03-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-UAT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-REQUIREMENTS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-ROADMAP.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/20-pushframe-rename-migration-repo-switch/20-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-02-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-02-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/OPERATOR-STEPS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/24-token-first-sessions-preflight-sweep-sec-01-03-prf-01-02/24-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/24-token-first-sessions-preflight-sweep-sec-01-03-prf-01-02/24-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/24-token-first-sessions-preflight-sweep-sec-01-03-prf-01-02/24-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/24-token-first-sessions-preflight-sweep-sec-01-03-prf-01-02/24-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/24-token-first-sessions-preflight-sweep-sec-01-03-prf-01-02/24-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/25-multi-frame-mappings-systemd-user-scheduling-mtf-01-03-tmr-01-03/25-01-PLAN.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/25-multi-frame-mappings-systemd-user-scheduling-mtf-01-03-tmr-01-03/25-01-SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/25-multi-frame-mappings-systemd-user-scheduling-mtf-01-03-tmr-01-03/25-CONTEXT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/25-multi-frame-mappings-systemd-user-scheduling-mtf-01-03-tmr-01-03/25-RESEARCH.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/25-multi-frame-mappings-systemd-user-scheduling-mtf-01-03-tmr-01-03/25-VERIFICATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/ALBUM-ACCESS-V4-ADDENDUM.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/ALBUM-ACCESS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/ARCHITECTURE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/BROWSER-AUTOMATION.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/FEATURES.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/PITFALLS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/STACK.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/SUMMARY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/state.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.planning/todos/completed/2026-07-06-promote-debug-flag-to-a-global-cli-convention.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/.python-version +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/CLAUDE.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/LICENSE +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/README.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/SECURITY.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/VERIFICATION-REPORT.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/docs/CLI.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/docs/DEVELOPING.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/docs/INTERNALS.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/docs/agents/domain.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/docs/agents/issue-tracker.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/docs/agents/triage-labels.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/docs/superpowers/specs/2026-07-09-write-rate-limiter-design.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/main.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/packaging/control-template +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/packaging/lintian-overrides +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/packaging/postinst +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/packaging/pushframe.copyright +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/probes/.gitignore +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/probes/README.md +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/probes/browser_bootstrap.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/probes/common.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/probes/cookie_vault.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/probes/fidelity_check.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/probes/rpc_capture.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/probes/shared_link_probe.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/__init__.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/accountApi.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/activityApi.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/assetApi.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/baseApi.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/frameApi.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/notificationApi.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/peopleApi.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/playlistApi.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aura.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aws/__init__.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aws/awsclient.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aws/s3client.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aws/sqsclient.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/cache.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/cli.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/client.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/config_store.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/doctor.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/exif.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/export.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/__init__.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/bootstrap.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/cache.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/client.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/manifest.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/parsers.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/redaction.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/vault.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/gsync.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/migration.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/__init__.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/activity.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/asset.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/frame.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/meta.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/person.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/user.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/pairs.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/preflight.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/ratelimit.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/reconcile.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/schedule.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/session.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/sync.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/utils/dt.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/utils/io.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/utils/settings.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/scripts/build-deb.sh +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/scripts/make-apt-key.sh +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/scripts/publish-apt-repo.sh +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-apt-journey-container.sh +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-config-journey-container.sh +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-deb-container.sh +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-install-journey-container.sh +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-multipair-journey-container.sh +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/conftest.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/asset_unprocessed.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/assets_page1.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/assets_page2.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/assets_placeholders.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/error_envelope.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/frame_detail.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/frames.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/google_rpc_snackc_page.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/google_share_page_sample.html +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/login.json +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/probe_af_initdata_sample.html +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/offline.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_asset_partial.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_asset_unprocessed.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_aura_logger.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_batch_update_contract.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_budget_identity.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_apply.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_google_link.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_inspect.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_push_budget_geo.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_reconcile.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_status.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_status_google.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_sync.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_client_rate_limit.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_config_wizard.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_docs_hint.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_doctor.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_execute_plan.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_execute_plan_budget_geo.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_fixtures_validity.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_cache.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_client.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_manifest.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_parsers.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_vault.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_gsync_all.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_gsync_engine.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_gsync_execute.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_imports.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_logout.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_migration.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_network_guard.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_offline_read_path.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_pairs.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_preflight_sweep.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_preflight_vault.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_prep_upload_formats.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_probe_browser.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_probe_shared_link.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_ratelimit.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_read_path.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_reconcile.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_retry_401.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_schedule.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_session.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_settings_budget.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_settings_resolution.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_sync_engine.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_token_refresh_extension.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_write_endpoints_failloud.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_write_formats_live.py +0 -0
- {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_write_throttling.py +0 -0
|
@@ -12,6 +12,21 @@ every channel.
|
|
|
12
12
|
`pushframe` is an unofficial community CLI for Aura Frames digital photo
|
|
13
13
|
frames; it is not affiliated with Aura Frames Inc.
|
|
14
14
|
|
|
15
|
+
## [5.1.9] - 2026-10-01
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **`google-sync`/`google-album` no longer fail on albums whose final page is
|
|
20
|
+
short** (2026-10-01 live drift, the 757-item "Cadre" album): Google now
|
|
21
|
+
emits a continuation token even on a short final page (300+300+157), and
|
|
22
|
+
the past-the-end request answers the null-payload shape — which the loop
|
|
23
|
+
read as the September transient, burned its single retry on and failed
|
|
24
|
+
loud, hard-blocking every run on that album. The loop now treats a short
|
|
25
|
+
page (< 300 items) as terminal — the paginated-API convention — and never
|
|
26
|
+
requests past it; the single-retry transient recovery stays for the
|
|
27
|
+
genuine mid-listing case. One new test reproduces the drift with the live
|
|
28
|
+
page counts.
|
|
29
|
+
|
|
15
30
|
## [5.1.8] - 2026-10-01
|
|
16
31
|
|
|
17
32
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pushframe
|
|
3
|
-
Version: 5.1.
|
|
3
|
+
Version: 5.1.9
|
|
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
|
|
@@ -58,6 +58,7 @@ twice.
|
|
|
58
58
|
| `⚠ N of M photos … would be hidden — over the … mass-hide safety threshold` | The plan hides more than 20 % of the frame's photos, so it demands explicit confirmation | Read the counts; `y` only if that is really what you want |
|
|
59
59
|
| `SKIPPED (--scheduled): this plan would hide too many photos …` | Same gate in scheduled mode: the run **skips and logs** instead of proceeding | Run `google-sync` manually, review the plan, apply deliberately |
|
|
60
60
|
| `google-sync failed: reading frame assets failed: …` | The frame listing itself failed | Re-run; if persistent, `pushframe status` / `pushframe inspect` to check the account and frame |
|
|
61
|
+
| `snAcKc carries a null inner payload on HTTP 200 …` | Google answered a page request with an empty envelope. One automatic retry already ran; if it recurs on every run it means the past-the-end request shape Google now answers with null (a listing-size change) — fixed in 5.1.9+; on older versions, update | Update pushframe; if it persists on the latest version, wait a few minutes and re-run |
|
|
61
62
|
|
|
62
63
|
## Writes, budget, pacing
|
|
63
64
|
|
|
@@ -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.1.
|
|
4
|
+
__version__ = "5.1.9"
|
|
@@ -189,8 +189,10 @@ def enumerate_album(session, album_id: str, *, page_key: str | None = None,
|
|
|
189
189
|
"""Enumerate EVERY photo of an album (D-06) via the RPC-first protocol:
|
|
190
190
|
|
|
191
191
|
batch-1 = snAcKc(album_id, None, None, page_key) → 300 items; swap the
|
|
192
|
-
LAST AH_ cursor per page until no token
|
|
193
|
-
|
|
192
|
+
LAST AH_ cursor per page until no token, a 0-item page, or a SHORT page
|
|
193
|
+
(< PAGE_SIZE — the live-proven terminal signal, see the loop below).
|
|
194
|
+
Fail-loud on HTTP != 200 or a malformed envelope (never a silent
|
|
195
|
+
partial listing).
|
|
194
196
|
|
|
195
197
|
`album_id` is the SHARE token (the /share/<id> path segment — what the
|
|
196
198
|
/albums listing carries and what the live proof used). `page_key` is
|
|
@@ -213,7 +215,16 @@ def enumerate_album(session, album_id: str, *, page_key: str | None = None,
|
|
|
213
215
|
known = {i["id"] for i in listing.items}
|
|
214
216
|
fresh = [i for i in page_items if i["id"] not in known]
|
|
215
217
|
listing.items.extend(fresh)
|
|
216
|
-
|
|
218
|
+
# A SHORT page (< PAGE_SIZE) is the end of the listing — even when
|
|
219
|
+
# Google still mints a continuation token on it. Live drift,
|
|
220
|
+
# 2026-10-01 (the 757-item "Cadre" album: 300+300+157, page 3 short
|
|
221
|
+
# WITH a token): requesting the past-the-end page answers the
|
|
222
|
+
# null-payload shape, which used to read as the September transient,
|
|
223
|
+
# burn the single retry and fail loud — blocking the user entirely.
|
|
224
|
+
# Stopping on the short page is the paginated-API convention and
|
|
225
|
+
# costs nothing: the items above are already the complete listing.
|
|
226
|
+
if (next_token is None or not page_items
|
|
227
|
+
or len(page_items) < PAGE_SIZE):
|
|
217
228
|
listing.exhausted_cleanly = True
|
|
218
229
|
return listing
|
|
219
230
|
token = next_token
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pushframe"
|
|
3
|
-
version = "5.1.
|
|
3
|
+
version = "5.1.9"
|
|
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"
|
|
@@ -24,6 +24,7 @@ from pushframe.cli import ( # noqa: E402
|
|
|
24
24
|
resolve_album,
|
|
25
25
|
run_google_album,
|
|
26
26
|
)
|
|
27
|
+
from pushframe.google import enumerate as _enum # noqa: E402
|
|
27
28
|
from pushframe.google.client import GoogleSession # noqa: E402
|
|
28
29
|
from pushframe.google.parsers import AlbumSummary # noqa: E402
|
|
29
30
|
|
|
@@ -156,7 +157,10 @@ def _session() -> GoogleSession:
|
|
|
156
157
|
transport=httpx.MockTransport(_router()))
|
|
157
158
|
|
|
158
159
|
|
|
159
|
-
def test_google_album_by_name_full_enumeration_and_disk_weight(capsys):
|
|
160
|
+
def test_google_album_by_name_full_enumeration_and_disk_weight(capsys, monkeypatch):
|
|
161
|
+
# The synthetic pages carry 5 items each — the full-page size, so the
|
|
162
|
+
# short-page-terminal rule (live drift 2026-10-01) never fires early.
|
|
163
|
+
monkeypatch.setattr(_enum, "PAGE_SIZE", 5)
|
|
160
164
|
rc = run_google_album("corse", session=_session())
|
|
161
165
|
assert rc == 0
|
|
162
166
|
out = capsys.readouterr().out
|
|
@@ -189,9 +193,10 @@ def test_google_album_not_found_prints_albums_and_exits_2(capsys):
|
|
|
189
193
|
assert "Famille 2024" in out
|
|
190
194
|
|
|
191
195
|
|
|
192
|
-
def test_google_album_by_direct_link_resolves_and_enumerates(capsys):
|
|
196
|
+
def test_google_album_by_direct_link_resolves_and_enumerates(capsys, monkeypatch):
|
|
193
197
|
"""A pasted share link works: the id is extracted and the page_key from
|
|
194
198
|
the listing (when the link lacks one) comes from the /albums match."""
|
|
199
|
+
monkeypatch.setattr(_enum, "PAGE_SIZE", 5) # synthetic full pages = 5 items
|
|
195
200
|
rc = run_google_album(f"https://photos.google.com/share/{ALBUM_ID_1}",
|
|
196
201
|
session=_session())
|
|
197
202
|
assert rc == 0
|
|
@@ -79,7 +79,8 @@ class _GoogleRouter:
|
|
|
79
79
|
def __init__(self, pages: list[int], *, page_key: str | None = PAGE_KEY,
|
|
80
80
|
rpc_status: int = 200, rpc_body: str | None = None,
|
|
81
81
|
albums_page: str | None = None,
|
|
82
|
-
null_positions: set[int] | None = None
|
|
82
|
+
null_positions: set[int] | None = None,
|
|
83
|
+
token_on_last_page: bool = False) -> None:
|
|
83
84
|
self.pages = pages
|
|
84
85
|
self.page_key = page_key
|
|
85
86
|
self.rpc_status = rpc_status
|
|
@@ -88,6 +89,10 @@ class _GoogleRouter:
|
|
|
88
89
|
# 1-based POST indices that answer the live-observed null-payload
|
|
89
90
|
# transient instead of a page (a null consumes nothing).
|
|
90
91
|
self.null_positions = null_positions or set()
|
|
92
|
+
# Live drift (2026-10-01, the 757-item "Cadre" album): Google emits
|
|
93
|
+
# a continuation token even on a SHORT final page; requesting past
|
|
94
|
+
# it answers the null-payload shape.
|
|
95
|
+
self.token_on_last_page = token_on_last_page
|
|
91
96
|
self.albums_gets = 0
|
|
92
97
|
self.post_count = 0
|
|
93
98
|
self.nulls_served = 0
|
|
@@ -143,7 +148,11 @@ class _GoogleRouter:
|
|
|
143
148
|
if page_idx >= len(self.pages):
|
|
144
149
|
return httpx.Response(400, text="too many pages requested")
|
|
145
150
|
has_next = page_idx + 1 < len(self.pages)
|
|
146
|
-
|
|
151
|
+
if has_next or (self.token_on_last_page
|
|
152
|
+
and page_idx + 1 == len(self.pages)):
|
|
153
|
+
next_token = _next_token(page_idx + 2)
|
|
154
|
+
else:
|
|
155
|
+
next_token = None
|
|
147
156
|
self._expected_token = next_token
|
|
148
157
|
return httpx.Response(200, text=_rpc_response(
|
|
149
158
|
_rpc_items(page_idx + 1, self.pages[page_idx]), next_token))
|
|
@@ -289,4 +298,19 @@ def test_null_retry_recovers_on_later_page_within_budget():
|
|
|
289
298
|
assert listing.page_count == 2
|
|
290
299
|
assert listing.exhausted_cleanly is True
|
|
291
300
|
assert router.post_count == 3 # page 1, null, retried page 2
|
|
292
|
-
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
def test_short_page_is_terminal_even_when_google_mints_a_token():
|
|
304
|
+
"""The 2026-10-01 live drift (the 757-item 'Cadre' album): Google emits
|
|
305
|
+
a continuation token even on a SHORT final page (157 < 300), and the
|
|
306
|
+
call past it answers the null-payload shape — which the old loop read
|
|
307
|
+
as the September transient, retried once, and failed loud, hard-blocking
|
|
308
|
+
the user. A short page IS the end of the listing: stop there, exhausted
|
|
309
|
+
cleanly, and never request the past-the-end page."""
|
|
310
|
+
router = _GoogleRouter([300, 300, 157], token_on_last_page=True)
|
|
311
|
+
listing = enumerate_album(_session(router), ALBUM_ID, page_key=PAGE_KEY)
|
|
312
|
+
assert len(listing.items) == 757 # 300 + 300 + 157, live counts
|
|
313
|
+
assert listing.exhausted_cleanly is True
|
|
314
|
+
assert listing.page_count == 3
|
|
315
|
+
assert router.post_count == 3 # the null page is never requested
|
|
316
|
+
assert router.nulls_served == 0
|
|
@@ -19,7 +19,7 @@ PYPROJECT = Path(__file__).resolve().parent.parent / "pyproject.toml"
|
|
|
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
21
|
metadata fix shipped in 5.0.4)."""
|
|
22
|
-
assert __version__ == "5.1.
|
|
22
|
+
assert __version__ == "5.1.9"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pushframe-5.1.8 → pushframe-5.1.9}/.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
|
|
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
|