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.
Files changed (421) hide show
  1. {pushframe-5.1.8 → pushframe-5.1.9}/CHANGELOG.md +15 -0
  2. {pushframe-5.1.8 → pushframe-5.1.9}/PKG-INFO +1 -1
  3. {pushframe-5.1.8 → pushframe-5.1.9}/docs/ERRORS.md +1 -0
  4. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/__init__.py +1 -1
  5. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/enumerate.py +14 -3
  6. {pushframe-5.1.8 → pushframe-5.1.9}/pyproject.toml +1 -1
  7. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_google_album.py +7 -2
  8. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_enumerate.py +27 -3
  9. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_version.py +1 -1
  10. {pushframe-5.1.8 → pushframe-5.1.9}/uv.lock +1 -1
  11. {pushframe-5.1.8 → pushframe-5.1.9}/.env.sample +0 -0
  12. {pushframe-5.1.8 → pushframe-5.1.9}/.freebuff/project-id +0 -0
  13. {pushframe-5.1.8 → pushframe-5.1.9}/.github/workflows/release.yml +0 -0
  14. {pushframe-5.1.8 → pushframe-5.1.9}/.github/workflows/tests.yml +0 -0
  15. {pushframe-5.1.8 → pushframe-5.1.9}/.gitignore +0 -0
  16. {pushframe-5.1.8 → pushframe-5.1.9}/.gsd/dispatch-isolation-sentinel.json +0 -0
  17. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/MILESTONES.md +0 -0
  18. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/PROJECT.md +0 -0
  19. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/REQUIREMENTS.md +0 -0
  20. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/RETROSPECTIVE.md +0 -0
  21. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/ROADMAP.md +0 -0
  22. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/STATE.md +0 -0
  23. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/WINDOWS.md +0 -0
  24. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/ARCHITECTURE.md +0 -0
  25. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/CONCERNS.md +0 -0
  26. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/CONVENTIONS.md +0 -0
  27. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/INTEGRATIONS.md +0 -0
  28. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/STACK.md +0 -0
  29. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/STRUCTURE.md +0 -0
  30. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/codebase/TESTING.md +0 -0
  31. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/config.json +0 -0
  32. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/gsync-apply-budget-none-crash.md +0 -0
  33. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/knowledge-base.md +0 -0
  34. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/login-475-null-creds.md +0 -0
  35. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/resolved/cli-status-verbose-logging.md +0 -0
  36. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/resolved/inspect-asset-null-fields.md +0 -0
  37. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/resolved/select-asset-401-unauthorized.md +0 -0
  38. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/debug/status-crash-401-trip.md +0 -0
  39. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-REQUIREMENTS.md +0 -0
  40. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-ROADMAP.md +0 -0
  41. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-01-PLAN.md +0 -0
  42. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-01-SUMMARY.md +0 -0
  43. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-02-PLAN.md +0 -0
  44. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-02-SUMMARY.md +0 -0
  45. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-CONTEXT.md +0 -0
  46. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-DISCUSSION-LOG.md +0 -0
  47. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-PATTERNS.md +0 -0
  48. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-RESEARCH.md +0 -0
  49. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-REVIEW.md +0 -0
  50. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-VERIFICATION.md +0 -0
  51. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-01-PLAN.md +0 -0
  52. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-01-SUMMARY.md +0 -0
  53. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-02-PLAN.md +0 -0
  54. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-02-SUMMARY.md +0 -0
  55. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-CONTEXT.md +0 -0
  56. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-DISCUSSION-LOG.md +0 -0
  57. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-LIVE-EVIDENCE.md +0 -0
  58. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-PATTERNS.md +0 -0
  59. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-RESEARCH.md +0 -0
  60. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-REVIEW.md +0 -0
  61. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-VERIFICATION.md +0 -0
  62. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-01-PLAN.md +0 -0
  63. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-01-SUMMARY.md +0 -0
  64. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-CONTEXT.md +0 -0
  65. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-DISCUSSION-LOG.md +0 -0
  66. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-PATTERNS.md +0 -0
  67. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-RESEARCH.md +0 -0
  68. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-REVIEW.md +0 -0
  69. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-VERIFICATION.md +0 -0
  70. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-ROADMAP.md +0 -0
  71. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/.gitkeep +0 -0
  72. {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
  73. {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
  74. {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
  75. {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
  76. {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
  77. {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
  78. {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
  79. {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
  80. {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
  81. {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
  82. {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
  83. {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
  84. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-REQUIREMENTS.md +0 -0
  85. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-ROADMAP.md +0 -0
  86. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-01-PLAN.md +0 -0
  87. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-01-SUMMARY.md +0 -0
  88. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-02-PLAN.md +0 -0
  89. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-02-SUMMARY.md +0 -0
  90. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-CONTEXT.md +0 -0
  91. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-DISCUSSION-LOG.md +0 -0
  92. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-PATTERNS.md +0 -0
  93. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-REVIEW.md +0 -0
  94. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-SECURITY.md +0 -0
  95. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-UAT.md +0 -0
  96. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-VERIFICATION.md +0 -0
  97. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-01-PLAN.md +0 -0
  98. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-01-SUMMARY.md +0 -0
  99. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-02-PLAN.md +0 -0
  100. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-02-SUMMARY.md +0 -0
  101. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-CONTEXT.md +0 -0
  102. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-DISCUSSION-LOG.md +0 -0
  103. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-PATTERNS.md +0 -0
  104. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-RESEARCH.md +0 -0
  105. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-REVIEW.md +0 -0
  106. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-SECURITY.md +0 -0
  107. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-VERIFICATION.md +0 -0
  108. {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
  109. {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
  110. {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
  111. {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
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {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
  118. {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
  119. {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
  120. {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
  121. {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
  122. {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
  123. {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
  124. {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
  125. {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
  126. {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
  127. {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
  128. {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
  129. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-CONTEXT.md +0 -0
  130. {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
  131. {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
  132. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-PATTERNS.md +0 -0
  133. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-RESEARCH.md +0 -0
  134. {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
  135. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-REVIEW.md +0 -0
  136. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-VERIFICATION.md +0 -0
  137. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/.gitkeep +0 -0
  138. {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
  139. {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
  140. {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
  141. {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
  142. {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
  143. {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
  144. {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
  145. {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
  146. {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
  147. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/.gitkeep +0 -0
  148. {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
  149. {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
  150. {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
  151. {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
  152. {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
  153. {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
  154. {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
  155. {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
  156. {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
  157. {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
  158. {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
  159. {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
  160. {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
  161. {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
  162. {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
  163. {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
  164. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/COVERAGE.md +0 -0
  165. {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
  166. {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
  167. {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
  168. {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
  169. {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
  170. {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
  171. {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
  172. {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
  173. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v2.0-quick/README.md +0 -0
  174. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-REQUIREMENTS.md +0 -0
  175. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-ROADMAP.md +0 -0
  176. {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
  177. {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
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-CONTEXT.md +0 -0
  189. {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
  190. {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
  191. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-PATTERNS.md +0 -0
  192. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-REVIEW.md +0 -0
  193. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-VERIFICATION.md +0 -0
  194. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-REQUIREMENTS.md +0 -0
  195. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-ROADMAP.md +0 -0
  196. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-01-PLAN.md +0 -0
  197. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-01-SUMMARY.md +0 -0
  198. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-02-PLAN.md +0 -0
  199. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-02-SUMMARY.md +0 -0
  200. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-03-PLAN.md +0 -0
  201. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-03-SUMMARY.md +0 -0
  202. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-CONTEXT.md +0 -0
  203. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-DECISION-RECORD.md +0 -0
  204. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-DISCUSSION-LOG.md +0 -0
  205. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-LIVE-FINDINGS.md +0 -0
  206. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/COVERAGE.md +0 -0
  207. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-01-PLAN.md +0 -0
  208. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-01-SUMMARY.md +0 -0
  209. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-02-PLAN.md +0 -0
  210. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-02-SUMMARY.md +0 -0
  211. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-CONTEXT.md +0 -0
  212. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-DISCUSS-CHECKPOINT.json +0 -0
  213. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-VERIFICATION.md +0 -0
  214. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/17-google-link-album-selection/COVERAGE.md +0 -0
  215. {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
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {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
  222. {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
  223. {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
  224. {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
  225. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-01-PLAN.md +0 -0
  226. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-01-SUMMARY.md +0 -0
  227. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-02-PLAN.md +0 -0
  228. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-02-SUMMARY.md +0 -0
  229. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-CONTEXT.md +0 -0
  230. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-RESEARCH.md +0 -0
  231. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v4.0-phases/19-debt-closeout/19-VERIFICATION.md +0 -0
  232. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-REQUIREMENTS.md +0 -0
  233. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-ROADMAP.md +0 -0
  234. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/20-pushframe-rename-migration-repo-switch/20-SUMMARY.md +0 -0
  235. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-01-PLAN.md +0 -0
  236. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-01-SUMMARY.md +0 -0
  237. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-02-PLAN.md +0 -0
  238. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-02-SUMMARY.md +0 -0
  239. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-CONTEXT.md +0 -0
  240. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-RESEARCH.md +0 -0
  241. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/21-debian-package-apt-repo/21-VERIFICATION.md +0 -0
  242. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-01-PLAN.md +0 -0
  243. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-01-SUMMARY.md +0 -0
  244. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-02-PLAN.md +0 -0
  245. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-02-SUMMARY.md +0 -0
  246. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-CONTEXT.md +0 -0
  247. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-RESEARCH.md +0 -0
  248. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/22-VERIFICATION.md +0 -0
  249. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/milestones/v5.0-phases/22-pypi-release-engineering/OPERATOR-STEPS.md +0 -0
  250. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-01-PLAN.md +0 -0
  251. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-01-SUMMARY.md +0 -0
  252. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-CONTEXT.md +0 -0
  253. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-RESEARCH.md +0 -0
  254. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/phases/23-config-wizard-precedence/23-VERIFICATION.md +0 -0
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {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
  262. {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
  263. {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
  264. {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
  265. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/ALBUM-ACCESS-V4-ADDENDUM.md +0 -0
  266. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/ALBUM-ACCESS.md +0 -0
  267. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/ARCHITECTURE.md +0 -0
  268. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/BROWSER-AUTOMATION.md +0 -0
  269. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/FEATURES.md +0 -0
  270. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/PITFALLS.md +0 -0
  271. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/STACK.md +0 -0
  272. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/research/SUMMARY.md +0 -0
  273. {pushframe-5.1.8 → pushframe-5.1.9}/.planning/state.json +0 -0
  274. {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
  275. {pushframe-5.1.8 → pushframe-5.1.9}/.python-version +0 -0
  276. {pushframe-5.1.8 → pushframe-5.1.9}/CLAUDE.md +0 -0
  277. {pushframe-5.1.8 → pushframe-5.1.9}/LICENSE +0 -0
  278. {pushframe-5.1.8 → pushframe-5.1.9}/README.md +0 -0
  279. {pushframe-5.1.8 → pushframe-5.1.9}/SECURITY.md +0 -0
  280. {pushframe-5.1.8 → pushframe-5.1.9}/VERIFICATION-REPORT.md +0 -0
  281. {pushframe-5.1.8 → pushframe-5.1.9}/docs/CLI.md +0 -0
  282. {pushframe-5.1.8 → pushframe-5.1.9}/docs/DEVELOPING.md +0 -0
  283. {pushframe-5.1.8 → pushframe-5.1.9}/docs/INTERNALS.md +0 -0
  284. {pushframe-5.1.8 → pushframe-5.1.9}/docs/agents/domain.md +0 -0
  285. {pushframe-5.1.8 → pushframe-5.1.9}/docs/agents/issue-tracker.md +0 -0
  286. {pushframe-5.1.8 → pushframe-5.1.9}/docs/agents/triage-labels.md +0 -0
  287. {pushframe-5.1.8 → pushframe-5.1.9}/docs/superpowers/specs/2026-07-09-write-rate-limiter-design.md +0 -0
  288. {pushframe-5.1.8 → pushframe-5.1.9}/main.py +0 -0
  289. {pushframe-5.1.8 → pushframe-5.1.9}/packaging/control-template +0 -0
  290. {pushframe-5.1.8 → pushframe-5.1.9}/packaging/lintian-overrides +0 -0
  291. {pushframe-5.1.8 → pushframe-5.1.9}/packaging/postinst +0 -0
  292. {pushframe-5.1.8 → pushframe-5.1.9}/packaging/pushframe.copyright +0 -0
  293. {pushframe-5.1.8 → pushframe-5.1.9}/probes/.gitignore +0 -0
  294. {pushframe-5.1.8 → pushframe-5.1.9}/probes/README.md +0 -0
  295. {pushframe-5.1.8 → pushframe-5.1.9}/probes/browser_bootstrap.py +0 -0
  296. {pushframe-5.1.8 → pushframe-5.1.9}/probes/common.py +0 -0
  297. {pushframe-5.1.8 → pushframe-5.1.9}/probes/cookie_vault.py +0 -0
  298. {pushframe-5.1.8 → pushframe-5.1.9}/probes/fidelity_check.py +0 -0
  299. {pushframe-5.1.8 → pushframe-5.1.9}/probes/rpc_capture.py +0 -0
  300. {pushframe-5.1.8 → pushframe-5.1.9}/probes/shared_link_probe.py +0 -0
  301. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/__init__.py +0 -0
  302. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/accountApi.py +0 -0
  303. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/activityApi.py +0 -0
  304. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/assetApi.py +0 -0
  305. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/baseApi.py +0 -0
  306. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/frameApi.py +0 -0
  307. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/notificationApi.py +0 -0
  308. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/peopleApi.py +0 -0
  309. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/api/playlistApi.py +0 -0
  310. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aura.py +0 -0
  311. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aws/__init__.py +0 -0
  312. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aws/awsclient.py +0 -0
  313. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aws/s3client.py +0 -0
  314. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/aws/sqsclient.py +0 -0
  315. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/cache.py +0 -0
  316. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/cli.py +0 -0
  317. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/client.py +0 -0
  318. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/config_store.py +0 -0
  319. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/doctor.py +0 -0
  320. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/exif.py +0 -0
  321. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/export.py +0 -0
  322. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/__init__.py +0 -0
  323. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/bootstrap.py +0 -0
  324. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/cache.py +0 -0
  325. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/client.py +0 -0
  326. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/manifest.py +0 -0
  327. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/parsers.py +0 -0
  328. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/redaction.py +0 -0
  329. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/google/vault.py +0 -0
  330. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/gsync.py +0 -0
  331. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/migration.py +0 -0
  332. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/__init__.py +0 -0
  333. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/activity.py +0 -0
  334. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/asset.py +0 -0
  335. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/frame.py +0 -0
  336. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/meta.py +0 -0
  337. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/person.py +0 -0
  338. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/models/user.py +0 -0
  339. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/pairs.py +0 -0
  340. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/preflight.py +0 -0
  341. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/ratelimit.py +0 -0
  342. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/reconcile.py +0 -0
  343. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/schedule.py +0 -0
  344. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/session.py +0 -0
  345. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/sync.py +0 -0
  346. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/utils/dt.py +0 -0
  347. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/utils/io.py +0 -0
  348. {pushframe-5.1.8 → pushframe-5.1.9}/pushframe/utils/settings.py +0 -0
  349. {pushframe-5.1.8 → pushframe-5.1.9}/scripts/build-deb.sh +0 -0
  350. {pushframe-5.1.8 → pushframe-5.1.9}/scripts/make-apt-key.sh +0 -0
  351. {pushframe-5.1.8 → pushframe-5.1.9}/scripts/publish-apt-repo.sh +0 -0
  352. {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-apt-journey-container.sh +0 -0
  353. {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-config-journey-container.sh +0 -0
  354. {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-deb-container.sh +0 -0
  355. {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-install-journey-container.sh +0 -0
  356. {pushframe-5.1.8 → pushframe-5.1.9}/scripts/test-multipair-journey-container.sh +0 -0
  357. {pushframe-5.1.8 → pushframe-5.1.9}/tests/conftest.py +0 -0
  358. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/asset_unprocessed.json +0 -0
  359. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/assets_page1.json +0 -0
  360. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/assets_page2.json +0 -0
  361. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/assets_placeholders.json +0 -0
  362. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/error_envelope.json +0 -0
  363. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/frame_detail.json +0 -0
  364. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/frames.json +0 -0
  365. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/google_rpc_snackc_page.json +0 -0
  366. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/google_share_page_sample.html +0 -0
  367. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/login.json +0 -0
  368. {pushframe-5.1.8 → pushframe-5.1.9}/tests/fixtures/probe_af_initdata_sample.html +0 -0
  369. {pushframe-5.1.8 → pushframe-5.1.9}/tests/offline.py +0 -0
  370. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_asset_partial.py +0 -0
  371. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_asset_unprocessed.py +0 -0
  372. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_aura_logger.py +0 -0
  373. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_batch_update_contract.py +0 -0
  374. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_budget_identity.py +0 -0
  375. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_apply.py +0 -0
  376. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_google_link.py +0 -0
  377. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_inspect.py +0 -0
  378. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_push_budget_geo.py +0 -0
  379. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_reconcile.py +0 -0
  380. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_status.py +0 -0
  381. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_status_google.py +0 -0
  382. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_cli_sync.py +0 -0
  383. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_client_rate_limit.py +0 -0
  384. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_config_wizard.py +0 -0
  385. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_docs_hint.py +0 -0
  386. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_doctor.py +0 -0
  387. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_execute_plan.py +0 -0
  388. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_execute_plan_budget_geo.py +0 -0
  389. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_fixtures_validity.py +0 -0
  390. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_cache.py +0 -0
  391. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_client.py +0 -0
  392. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_manifest.py +0 -0
  393. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_parsers.py +0 -0
  394. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_google_vault.py +0 -0
  395. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_gsync_all.py +0 -0
  396. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_gsync_engine.py +0 -0
  397. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_gsync_execute.py +0 -0
  398. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_imports.py +0 -0
  399. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_logout.py +0 -0
  400. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_migration.py +0 -0
  401. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_network_guard.py +0 -0
  402. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_offline_read_path.py +0 -0
  403. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_pairs.py +0 -0
  404. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_preflight_sweep.py +0 -0
  405. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_preflight_vault.py +0 -0
  406. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_prep_upload_formats.py +0 -0
  407. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_probe_browser.py +0 -0
  408. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_probe_shared_link.py +0 -0
  409. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_ratelimit.py +0 -0
  410. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_read_path.py +0 -0
  411. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_reconcile.py +0 -0
  412. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_retry_401.py +0 -0
  413. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_schedule.py +0 -0
  414. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_session.py +0 -0
  415. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_settings_budget.py +0 -0
  416. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_settings_resolution.py +0 -0
  417. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_sync_engine.py +0 -0
  418. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_token_refresh_extension.py +0 -0
  419. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_write_endpoints_failloud.py +0 -0
  420. {pushframe-5.1.8 → pushframe-5.1.9}/tests/test_write_formats_live.py +0 -0
  421. {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.8
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.8"
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 or a 0-item page. Fail-loud on
193
- HTTP != 200 or a malformed envelope (never a silent partial listing).
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
- if next_token is None or not page_items:
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.8"
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) -> 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
- next_token = _next_token(page_idx + 2) if has_next else None
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
- assert router.nulls_served == 1
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.8"
22
+ assert __version__ == "5.1.9"
23
23
 
24
24
 
25
25
  def test_version_matches_pyproject_single_source():
@@ -432,7 +432,7 @@ wheels = [
432
432
 
433
433
  [[package]]
434
434
  name = "pushframe"
435
- version = "5.1.8"
435
+ version = "5.1.9"
436
436
  source = { editable = "." }
437
437
  dependencies = [
438
438
  { name = "boto3" },
File without changes
File without changes
File without changes