kinemotion 0.66.0__tar.gz → 0.66.2__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.

Potentially problematic release.


This version of kinemotion might be problematic. Click here for more details.

Files changed (615) hide show
  1. {kinemotion-0.66.0 → kinemotion-0.66.2}/CHANGELOG.md +12 -0
  2. {kinemotion-0.66.0 → kinemotion-0.66.2}/PKG-INFO +1 -1
  3. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/Dockerfile +2 -1
  4. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/local-testing.md +2 -2
  5. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/setup-issue-12.md +67 -67
  6. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/quick-start.md +1 -1
  7. {kinemotion-0.66.0 → kinemotion-0.66.2}/pyproject.toml +1 -1
  8. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/debug_overlay_utils.py +2 -2
  9. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_debug_overlay_utils.py +3 -3
  10. {kinemotion-0.66.0 → kinemotion-0.66.2}/uv.lock +1 -1
  11. kinemotion-0.66.0/backend/docs/fly-deployment.md +0 -226
  12. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/README.md +0 -0
  13. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/api-reference-quick-commands.md +0 -0
  14. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/cloud-run-cpu-specifications-investigation.md +0 -0
  15. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/supabase-authentication-setup-guide.md +0 -0
  16. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/testing-backend-authentication-quick-reference.md +0 -0
  17. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/auth-provider-comparison-december-2025.md +0 -0
  18. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/auth-providers-comparison-december-2025.md +0 -0
  19. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-authentication-quick-start.md +0 -0
  20. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-authentication-setup-guide.md +0 -0
  21. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-authentication-technical-guide.md +0 -0
  22. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-google-oauth-setup-guide.md +0 -0
  23. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-production-setup-guide.md +0 -0
  24. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-quick-start-guide.md +0 -0
  25. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/camera-angle-empirical-validation-results-45-superior-for-media-pipe.md +0 -0
  26. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/camera-perspective-analysis-45deg-vs-lateral.md +0 -0
  27. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/cmj-landing-detection-window-validation.md +0 -0
  28. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/cmj-physiological-bounds-for-validation.md +0 -0
  29. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/cmj-validation-implementation-complete.md +0 -0
  30. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/drop-jump-vs-cmj-key-differences.md +0 -0
  31. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/technical-implementation-45deg-perspective-correction.md +0 -0
  32. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/codebase-architecture-overview.md +0 -0
  33. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/validation-architecture-visual-hierarchy-after-refactoring.md +0 -0
  34. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/validation-code-duplication-evidence.md +0 -0
  35. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/validation-module-architecture-analysis.md +0 -0
  36. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/validation-refactoring-complete-architecture-improvement.md +0 -0
  37. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/automated-deployment-setup-git-hub-actions-with-workload-identity-federation.md +0 -0
  38. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/backend-repository-split-migration-guide.md +0 -0
  39. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/backend-repository-split-step-by-step-execution-guide.md +0 -0
  40. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/cloud-run-security-least-privilege-service-account-setup.md +0 -0
  41. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/cors-and-memory-issues-production-debugging-guide.md +0 -0
  42. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/current-kinemotion-architecture-correct-deployment-setup.md +0 -0
  43. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/frontend-repository-split-migration-guide.md +0 -0
  44. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/frontend-repository-split-step-by-step-execution-guide.md +0 -0
  45. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/production-deployment-guide-vercel-google-cloud-run.md +0 -0
  46. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/quick-deployment-commands-vercel-and-cloud-run.md +0 -0
  47. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/vercel-monorepo-deployment-best-practice.md +0 -0
  48. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3-d-validation-status-and-pending-work.md +0 -0
  49. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3d-and-cross-platform-determinism-investigation-complete.md +0 -0
  50. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3d-final-strategy-accuracy-and-robustness.md +0 -0
  51. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3d-media-pipe-enhancement-plan.md +0 -0
  52. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3d-phase-1-implementation-complete.md +0 -0
  53. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-authentication-and-logging-status.md +0 -0
  54. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-code-coverage-analysis.md +0 -0
  55. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-code-duplication-analysis.md +0 -0
  56. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-granular-logging-implementation.md +0 -0
  57. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-kinemotion-decoupling-strategy.md +0 -0
  58. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-sonar-cloud-integration-status.md +0 -0
  59. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/basic-memory-naming-hook-analysis.md +0 -0
  60. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/ci-caching-issue-investigation-deep-squat-test-failure.md +0 -0
  61. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/ci-vs-local-test-failure-investigation.md +0 -0
  62. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/claude-code-hook-configuration.md +0 -0
  63. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/cmj-phase-detection-testing-gap-analysis.md +0 -0
  64. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/commit-review-r2-video-storage-migration-fe74d1f.md +0 -0
  65. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/comprehensive-timing-instrumentation.md +0 -0
  66. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/cross-platform-determinism-analysis-final-results.md +0 -0
  67. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/database-setup-scripts-complete-implementation.md +0 -0
  68. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/development-standards-quality-gates.md +0 -0
  69. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/drop-jump-detection-complete-fix-all-metrics-within-target.md +0 -0
  70. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/drop-jump-detection-failure-analysis-per-video-breakdown.md +0 -0
  71. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/drop-jump-fix-drop-start-successful-landing-and-takeoff-remain.md +0 -0
  72. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/fast-api-app.py Refactoring Plan - Modular Architecture.md +0 -0
  73. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/fast-api-refactoring-completion-summary.md +0 -0
  74. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/feature-request-system-configuration.md +0 -0
  75. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/follow-up-improvements-to-r2-video-storage-migration.md +0 -0
  76. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/frontend-dependencies-analysis-nov-2025.md +0 -0
  77. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/google-oauth-setup-script-final-review-production-ready.md +0 -0
  78. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/google-oauth-setup-script-review-issues-and-recommendations.md +0 -0
  79. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/hook-complete-audit-summary.md +0 -0
  80. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/hook-configuration-audit.md +0 -0
  81. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/hook-quick-reference.md +0 -0
  82. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/i18n-implementation-plan-for-validation-messages.md +0 -0
  83. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/keyboard-interrupt-test-suite-failure-analysis.md +0 -0
  84. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/model-import-conflict-resolution-fast-api-refactoring.md +0 -0
  85. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/non-deterministic-analysis-root-cause-and-solution.md +0 -0
  86. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/optimal-timing-implementation-summary.md +0 -0
  87. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/p0-p1-p2-test-suite-fixes-final-report.md +0 -0
  88. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/pose-detection-baseline-evaluation-results.md +0 -0
  89. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/pose-detection-optimization-complete-success-summary.md +0 -0
  90. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/pose-detection-parameter-optimization-framework.md +0 -0
  91. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/pyright-strict-mode-fix-patterns.md +0 -0
  92. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/structured-logging-implementation-complete.md +0 -0
  93. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/structured-logging-implementation.md +0 -0
  94. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/supabase-dashboard-navigation-december-2025.md +0 -0
  95. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/supabase-database-integration-setup.md +0 -0
  96. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/supabase-documentation-validation-december-2025.md +0 -0
  97. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-coverage-asymmetry-analysis-cmj-vs-drop-jump.md +0 -0
  98. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-coverage-equivalence-achievement-summary.md +0 -0
  99. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-suite-comprehensive-review-december-2025.md +0 -0
  100. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-suite-comprehensive-review-structure-and-gaps.md +0 -0
  101. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-suite-p0-p1-p2-fixes-complete-report.md +0 -0
  102. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-suite-p0-p1-p2-fixes-progress-report.md +0 -0
  103. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/unused-and-experimental-features-strategy.md +0 -0
  104. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/unused-code-detection-prompt-template.md +0 -0
  105. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/unused-code-identification-and-decorator-application-december-2025.md +0 -0
  106. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/unused-code-verification-final-pass-december-2025.md +0 -0
  107. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/using-multiple-mcp-reasoning-servers-simultaneously.md +0 -0
  108. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/velocity-threshold-empirical-validation-study.md +0 -0
  109. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/vercel-authentication-options-for-user-id-tracking.md +0 -0
  110. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/documentation/backend-debug-video-logging-reference.md +0 -0
  111. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/documentation/debug-video-logging-complete-end-to-end-reference.md +0 -0
  112. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/documentation/kinemotion-logs-in-cloud-logging-production-analysis.md +0 -0
  113. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/documentation/kinemotion-logs-in-cloud-logging-ready.md +0 -0
  114. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/fixes/complete-solution-i-os-structured-logging.md +0 -0
  115. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/fixes/debug-video-codec-fix-and-logging-enhancement.md +0 -0
  116. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/fixes/i-phone-video-playback-issue-vp9-codec-not-supported.md +0 -0
  117. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/agent-documentation-standards-update.md +0 -0
  118. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/backend-authentication-architecture-decision.md +0 -0
  119. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/backend-authentication-implementation-complete.md +0 -0
  120. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/documentation-audit-december-2025.md +0 -0
  121. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/i18n-documentation-cleanup-completed.md +0 -0
  122. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/issue-12-mvp-scaffolding-complete.md +0 -0
  123. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/issue-12-unblocked-tasks-breakdown.md +0 -0
  124. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/issue-12-use-real-metrics-now.md +0 -0
  125. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/kinemotion-project-setup-complete.md +0 -0
  126. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/kinemotion-supabase-production-configuration.md +0 -0
  127. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/mcp-sequential-thinking-alternatives-analysis.md +0 -0
  128. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/performance-optimization-pose-tracker-pool-timing-instrumentation-complete.md +0 -0
  129. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/project-state-summary-december-2025.md +0 -0
  130. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/specialized-subagents-routing-guide.md +0 -0
  131. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/supabase-setup-instructions-for-kinemotion.md +0 -0
  132. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/version-mismatch-analysis-kinemotion-0370-vs-0300.md +0 -0
  133. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/research/performance-improvement-analysis-30s-18s.md +0 -0
  134. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/deployment-decision-analysis-for-kinemotion.md +0 -0
  135. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/mvp-feedback-collection-plan.md +0 -0
  136. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/mvp-first-strategic-direction.md +0 -0
  137. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/mvp-validation-checkpoints.md +0 -0
  138. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/pose2sim-migration-evaluation-and-strategy.md +0 -0
  139. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/strategic-priority-tasks-current-roadmap.md +0 -0
  140. {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/third-party-auth-providers-with-free-tiers-december-2025.md +0 -0
  141. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/biomechanics-specialist.md +0 -0
  142. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/computer-vision-engineer.md +0 -0
  143. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/devops-cicd-engineer.md +0 -0
  144. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/frontend-developer.md +0 -0
  145. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/ml-data-scientist.md +0 -0
  146. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/project-manager.md +0 -0
  147. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/python-backend-developer.md +0 -0
  148. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/qa-test-engineer.md +0 -0
  149. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/technical-writer.md +0 -0
  150. {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/settings.local.json +0 -0
  151. {kinemotion-0.66.0 → kinemotion-0.66.2}/.cursor/mcp.json +0 -0
  152. {kinemotion-0.66.0 → kinemotion-0.66.2}/.dockerignore +0 -0
  153. {kinemotion-0.66.0 → kinemotion-0.66.2}/.envrc +0 -0
  154. {kinemotion-0.66.0 → kinemotion-0.66.2}/.gitattributes +0 -0
  155. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  156. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  157. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  158. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/dependabot.yml +0 -0
  159. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/pull_request_template.md +0 -0
  160. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/workflows/deploy-backend.yml +0 -0
  161. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/workflows/docs.yml +0 -0
  162. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/workflows/release.yml +0 -0
  163. {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/workflows/test.yml +0 -0
  164. {kinemotion-0.66.0 → kinemotion-0.66.2}/.gitignore +0 -0
  165. {kinemotion-0.66.0 → kinemotion-0.66.2}/.mcp.json +0 -0
  166. {kinemotion-0.66.0 → kinemotion-0.66.2}/.pre-commit-config.yaml +0 -0
  167. {kinemotion-0.66.0 → kinemotion-0.66.2}/.readthedocs.yml +0 -0
  168. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/.gitignore +0 -0
  169. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/backend-cors-fastapi-middleware-order.md +0 -0
  170. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/camera-perspective-validation-study.md +0 -0
  171. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/code_style_and_conventions.md +0 -0
  172. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/current-project-architecture.md +0 -0
  173. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/deployment-checklist-and-known-issues.md +0 -0
  174. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/deployment-setup-complete.md +0 -0
  175. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/github-project-setup-summary.md +0 -0
  176. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/mvp-first-strategy.md +0 -0
  177. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/mvp-roadmap-and-priorities.md +0 -0
  178. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/project_overview.md +0 -0
  179. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/specialist-agents-routing.md +0 -0
  180. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/suggested_commands.md +0 -0
  181. {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/project.yml +0 -0
  182. {kinemotion-0.66.0 → kinemotion-0.66.2}/.tool-versions +0 -0
  183. {kinemotion-0.66.0 → kinemotion-0.66.2}/.vercelignore +0 -0
  184. {kinemotion-0.66.0 → kinemotion-0.66.2}/CLAUDE.md +0 -0
  185. {kinemotion-0.66.0 → kinemotion-0.66.2}/CODE_OF_CONDUCT.md +0 -0
  186. {kinemotion-0.66.0 → kinemotion-0.66.2}/CONTRIBUTING.md +0 -0
  187. {kinemotion-0.66.0 → kinemotion-0.66.2}/Dockerfile +0 -0
  188. {kinemotion-0.66.0 → kinemotion-0.66.2}/GEMINI.md +0 -0
  189. {kinemotion-0.66.0 → kinemotion-0.66.2}/LICENSE +0 -0
  190. {kinemotion-0.66.0 → kinemotion-0.66.2}/README.md +0 -0
  191. {kinemotion-0.66.0 → kinemotion-0.66.2}/SECURITY.md +0 -0
  192. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/.coveragerc +0 -0
  193. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/.dockerignore +0 -0
  194. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/.env.example +0 -0
  195. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/README.md +0 -0
  196. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/docs/implementation-summary.md +0 -0
  197. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/docs/setup.md +0 -0
  198. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/docs/tests.md +0 -0
  199. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/pyproject.toml +0 -0
  200. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/__init__.py +0 -0
  201. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/analysis_api.py +0 -0
  202. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/__init__.py +0 -0
  203. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/config.py +0 -0
  204. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/dependencies.py +0 -0
  205. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/exceptions.py +0 -0
  206. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/main.py +0 -0
  207. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app.py +0 -0
  208. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/auth.py +0 -0
  209. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/database.py +0 -0
  210. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/logging_config.py +0 -0
  211. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/middleware.py +0 -0
  212. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/models/__init__.py +0 -0
  213. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/models/database.py +0 -0
  214. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/models/responses.py +0 -0
  215. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/models/storage.py +0 -0
  216. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/__init__.py +0 -0
  217. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/analysis.py +0 -0
  218. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/database.py +0 -0
  219. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/health.py +0 -0
  220. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/platform.py +0 -0
  221. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/__init__.py +0 -0
  222. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/analysis_service.py +0 -0
  223. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/storage_service.py +0 -0
  224. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/validation.py +0 -0
  225. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/video_processor.py +0 -0
  226. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/types.py +0 -0
  227. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/utils/__init__.py +0 -0
  228. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/utils/rate_limiter.py +0 -0
  229. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/supabase-schema.sql +0 -0
  230. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/README.md +0 -0
  231. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/__init__.py +0 -0
  232. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/conftest.py +0 -0
  233. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_api_endpoints.py +0 -0
  234. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_error_handling.py +0 -0
  235. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_health.py +0 -0
  236. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_r2_integration.py +0 -0
  237. {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_validation.py +0 -0
  238. {kinemotion-0.66.0 → kinemotion-0.66.2}/data/athletepose3d/README.md +0 -0
  239. {kinemotion-0.66.0 → kinemotion-0.66.2}/data/athletepose3d/annotations/.gitkeep +0 -0
  240. {kinemotion-0.66.0 → kinemotion-0.66.2}/data/athletepose3d/ground_truth/.gitkeep +0 -0
  241. {kinemotion-0.66.0 → kinemotion-0.66.2}/data/athletepose3d/videos/.gitkeep +0 -0
  242. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/README.md +0 -0
  243. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/api/cmj.md +0 -0
  244. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/api/core.md +0 -0
  245. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/api/dropjump.md +0 -0
  246. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/api/overview.md +0 -0
  247. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/I18N-README.md +0 -0
  248. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/agents-guide.md +0 -0
  249. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/errors-findings.md +0 -0
  250. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/feature-request-system.md +0 -0
  251. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/feedback-system-setup.md +0 -0
  252. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-architecture-diagram.md +0 -0
  253. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-cheat-sheet.md +0 -0
  254. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-quick-start-guide.md +0 -0
  255. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-summary.md +0 -0
  256. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-validation-messages-specification.md +0 -0
  257. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/supabase-database-setup.md +0 -0
  258. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/test-suite-review-december-2025.md +0 -0
  259. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/testing-standards.md +0 -0
  260. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/testing.md +0 -0
  261. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/type-hints.md +0 -0
  262. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/validation-plan.md +0 -0
  263. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/validation-roadmap.md +0 -0
  264. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/wallball-norep-detection.md +0 -0
  265. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/bulk-processing.md +0 -0
  266. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/camera-setup.md +0 -0
  267. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/cloud-run-deployment.md +0 -0
  268. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/cmj-guide.md +0 -0
  269. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/cmj-recording-protocol-es.md +0 -0
  270. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/cmj-recording-protocol.md +0 -0
  271. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/deployment-checklist.md +0 -0
  272. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/supabase-setup/README.md +0 -0
  273. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/supabase-setup/quickstart.md +0 -0
  274. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/supabase-setup/scripts-reference.md +0 -0
  275. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/supabase-setup/setup-guide.md +0 -0
  276. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/index.md +0 -0
  277. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/cloud-run-quick-reference.md +0 -0
  278. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/json-output-format.md +0 -0
  279. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/json-structure-comparison.md +0 -0
  280. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/parameters.md +0 -0
  281. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/pose-systems.md +0 -0
  282. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/HOW-TO-FIND-DOIS.md +0 -0
  283. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/README.md +0 -0
  284. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/dois.txt +0 -0
  285. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/download.py +0 -0
  286. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/pyproject.toml +0 -0
  287. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/uv.lock +0 -0
  288. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
  289. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/MANUAL-DOWNLOAD-GUIDE.md +0 -0
  290. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/README.md +0 -0
  291. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/convert_pdfs.py +0 -0
  292. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.md +0 -0
  293. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.md +0 -0
  294. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.md +0 -0
  295. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.md +0 -0
  296. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Ward_Putting-i-in-Team.md +0 -0
  297. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.md +0 -0
  298. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.md +0 -0
  299. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.md +0 -0
  300. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.md +0 -0
  301. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.md +0 -0
  302. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.md +0 -0
  303. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.md +0 -0
  304. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.md +0 -0
  305. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.md +0 -0
  306. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.md +0 -0
  307. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.md +0 -0
  308. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.md +0 -0
  309. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.md +0 -0
  310. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2011_Harper_10-to-5-Jump-Test.md +0 -0
  311. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.md +0 -0
  312. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2014_Samozino_FV-Imbalance.md +0 -0
  313. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.md +0 -0
  314. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.md +0 -0
  315. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.md +0 -0
  316. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2022_Wells_Golf-Clubhead-CMJ.md +0 -0
  317. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.md +0 -0
  318. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.md +0 -0
  319. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.md +0 -0
  320. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2016_Moore_Economical-Running-Technique.md +0 -0
  321. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.md +0 -0
  322. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.md +0 -0
  323. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.md +0 -0
  324. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.md +0 -0
  325. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.md +0 -0
  326. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/smartphone-technology/2022_Bishop_MyJumpLab-Validation.md +0 -0
  327. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.md +0 -0
  328. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.md +0 -0
  329. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.md +0 -0
  330. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.md +0 -0
  331. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.md +0 -0
  332. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.md +0 -0
  333. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/online-references-for-papers.md +0 -0
  334. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.pdf +0 -0
  335. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.pdf +0 -0
  336. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.pdf +0 -0
  337. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.pdf +0 -0
  338. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Ward_Putting-i-in-Team.pdf +0 -0
  339. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.pdf +0 -0
  340. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.pdf +0 -0
  341. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.pdf +0 -0
  342. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.pdf +0 -0
  343. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.pdf +0 -0
  344. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.pdf +0 -0
  345. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.pdf +0 -0
  346. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.pdf +0 -0
  347. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.pdf +0 -0
  348. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.pdf +0 -0
  349. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.pdf +0 -0
  350. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.pdf +0 -0
  351. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.pdf +0 -0
  352. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2011_Harper_10-to-5-Jump-Test.pdf +0 -0
  353. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.pdf +0 -0
  354. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2014_Samozino_FV-Imbalance.pdf +0 -0
  355. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.pdf +0 -0
  356. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.pdf +0 -0
  357. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.pdf +0 -0
  358. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2022_Wells_Golf-Clubhead-CMJ.pdf +0 -0
  359. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.pdf +0 -0
  360. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.pdf +0 -0
  361. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.pdf +0 -0
  362. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Moore_Economical-Running-Technique.pdf +0 -0
  363. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.pdf +0 -0
  364. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.pdf +0 -0
  365. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.pdf +0 -0
  366. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.pdf +0 -0
  367. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.pdf +0 -0
  368. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/smartphone-technology/2022_Bishop_MyJumpLab-Validation.pdf +0 -0
  369. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.pdf +0 -0
  370. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.pdf +0 -0
  371. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.pdf +0 -0
  372. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.pdf +0 -0
  373. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.pdf +0 -0
  374. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.pdf +0 -0
  375. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/1-STRATEGIC_SUMMARY.md +0 -0
  376. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/2-STRATEGIC_ANALYSIS.md +0 -0
  377. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/MVP_FEEDBACK_COLLECTION.md +0 -0
  378. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/MVP_VALIDATION_CHECKPOINTS.md +0 -0
  379. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/README.md +0 -0
  380. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/STYLE_GUIDE.md +0 -0
  381. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/01-executive-summary.md +0 -0
  382. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/02-technical-assessment.md +0 -0
  383. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/03-refactoring-roadmap.md +0 -0
  384. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/README.md +0 -0
  385. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BIOMECHANICS/01-executive-summary.md +0 -0
  386. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BIOMECHANICS/02-technical-assessment.md +0 -0
  387. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BIOMECHANICS/03-reference-guide.md +0 -0
  388. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BIOMECHANICS/README.md +0 -0
  389. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/COMPUTER_VISION/01-executive-summary.md +0 -0
  390. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/COMPUTER_VISION/02-real-time-architecture.md +0 -0
  391. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/COMPUTER_VISION/03-implementation-checklist.md +0 -0
  392. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/COMPUTER_VISION/README.md +0 -0
  393. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/01-agent-consensus.md +0 -0
  394. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/02-critical-findings.md +0 -0
  395. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/03-roadmap-adjustments.md +0 -0
  396. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/04-decision-points.md +0 -0
  397. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/README.md +0 -0
  398. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/risk-register.md +0 -0
  399. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/timeline-roadmap.md +0 -0
  400. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/DEVOPS_CI_CD/01-executive-summary.md +0 -0
  401. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/DEVOPS_CI_CD/02-infrastructure-assessment.md +0 -0
  402. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/DEVOPS_CI_CD/03-implementation-roadmap.md +0 -0
  403. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/DEVOPS_CI_CD/README.md +0 -0
  404. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/01-executive-summary.md +0 -0
  405. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/02-technical-assessment.md +0 -0
  406. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/03-parameter-specifications.md +0 -0
  407. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/README.md +0 -0
  408. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/QA_TESTING/01-executive-summary.md +0 -0
  409. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/QA_TESTING/02-roadmap-assessment.md +0 -0
  410. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/QA_TESTING/03-testing-checklists.md +0 -0
  411. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/QA_TESTING/README.md +0 -0
  412. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/TECHNICAL_WRITING/01-executive-summary.md +0 -0
  413. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/TECHNICAL_WRITING/02-documentation-strategy.md +0 -0
  414. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/TECHNICAL_WRITING/03-action-plan.md +0 -0
  415. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/TECHNICAL_WRITING/README.md +0 -0
  416. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/pose2sim-migration-evaluation.md +0 -0
  417. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/framerate.md +0 -0
  418. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/implementation-details.md +0 -0
  419. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/imu-metadata.md +0 -0
  420. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/real-time-analysis.md +0 -0
  421. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/triple-extension.md +0 -0
  422. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/translations/es/camera-setup.md +0 -0
  423. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/validation/athletepose3d-methodology.md +0 -0
  424. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/validation/determinism-test.md +0 -0
  425. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/validation/known-height-validation.md +0 -0
  426. {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/validation-status.md +0 -0
  427. {kinemotion-0.66.0 → kinemotion-0.66.2}/examples/bulk/README.md +0 -0
  428. {kinemotion-0.66.0 → kinemotion-0.66.2}/examples/bulk/bulk_processing.py +0 -0
  429. {kinemotion-0.66.0 → kinemotion-0.66.2}/examples/bulk/simple_example.py +0 -0
  430. {kinemotion-0.66.0 → kinemotion-0.66.2}/examples/programmatic_usage.py +0 -0
  431. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.editorconfig +0 -0
  432. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.env.example +0 -0
  433. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.gitattributes +0 -0
  434. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.gitignore +0 -0
  435. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.yarn/releases/yarn-4.12.0.cjs +0 -0
  436. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.yarnrc.yml +0 -0
  437. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/README.md +0 -0
  438. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/index.html +0 -0
  439. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/package.json +0 -0
  440. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/App.i18n.integration.test.tsx +0 -0
  441. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/App.test.tsx +0 -0
  442. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/App.tsx +0 -0
  443. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/Auth.test.tsx +0 -0
  444. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/Auth.tsx +0 -0
  445. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ErrorBoundary.test.tsx +0 -0
  446. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ErrorBoundary.tsx +0 -0
  447. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ErrorDisplay.tsx +0 -0
  448. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/FeatureRequestButton.tsx +0 -0
  449. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/FeedbackForm.css +0 -0
  450. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/FeedbackForm.test.tsx +0 -0
  451. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/FeedbackForm.tsx +0 -0
  452. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LanguageSwitcher.css +0 -0
  453. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LanguageSwitcher.test.tsx +0 -0
  454. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LanguageSwitcher.tsx +0 -0
  455. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LoadingSpinner.test.tsx +0 -0
  456. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LoadingSpinner.tsx +0 -0
  457. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/RecentUploads.test.tsx +0 -0
  458. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/RecentUploads.tsx +0 -0
  459. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ResultsDisplay.test.tsx +0 -0
  460. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ResultsDisplay.tsx +0 -0
  461. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ResultsSkeleton.tsx +0 -0
  462. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/UploadForm.test.tsx +0 -0
  463. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/UploadForm.tsx +0 -0
  464. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/config/links.ts +0 -0
  465. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useAnalysis.test.ts +0 -0
  466. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useAnalysis.ts +0 -0
  467. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useAuth.ts +0 -0
  468. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useBackendVersion.ts +0 -0
  469. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useDatabaseStatus.ts +0 -0
  470. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useLanguage.test.ts +0 -0
  471. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useLanguage.ts +0 -0
  472. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useRecentUploads.ts +0 -0
  473. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/i18n/config.ts +0 -0
  474. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/i18n/locales/en/translation.json +0 -0
  475. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/i18n/locales/es/translation.json +0 -0
  476. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/i18n/locales/fr/translation.json +0 -0
  477. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/index.css +0 -0
  478. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/lib/supabase.ts +0 -0
  479. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/main.tsx +0 -0
  480. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/test/setup.ts +0 -0
  481. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/types/api.ts +0 -0
  482. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/vite-env.d.ts +0 -0
  483. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/vercel.json +0 -0
  484. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/vite.config.ts +0 -0
  485. {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/yarn.lock +0 -0
  486. {kinemotion-0.66.0 → kinemotion-0.66.2}/justfile +0 -0
  487. {kinemotion-0.66.0 → kinemotion-0.66.2}/local_dev.sh +0 -0
  488. {kinemotion-0.66.0 → kinemotion-0.66.2}/mkdocs.yml +0 -0
  489. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/.gitignore +0 -0
  490. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/README.md +0 -0
  491. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/.gitignore +0 -0
  492. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/README.md +0 -0
  493. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/api_demo.ipynb +0 -0
  494. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/batch_processing_demo.py +0 -0
  495. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/sample_data/.gitkeep +0 -0
  496. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/presentation_guide.md +0 -0
  497. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/revealjs/.gitignore +0 -0
  498. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/revealjs/Makefile +0 -0
  499. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/revealjs/README.md +0 -0
  500. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/revealjs/slides.md +0 -0
  501. {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/speaker_script.md +0 -0
  502. {kinemotion-0.66.0 → kinemotion-0.66.2}/requirements-docs.txt +0 -0
  503. {kinemotion-0.66.0 → kinemotion-0.66.2}/samples/cmjs/README.md +0 -0
  504. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/README.md +0 -0
  505. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/SCRIPTS_QUICKREF.md +0 -0
  506. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/analyze_determinism_variance.py +0 -0
  507. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/ap3d/PENDING.md +0 -0
  508. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/ap3d/ap3d_validator.py +0 -0
  509. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/ap3d/prepare_ap3d_data.py +0 -0
  510. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/ap3d/validate_baseline.py +0 -0
  511. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/basic-memory-utils.sh +0 -0
  512. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/debug_contact_states.py +0 -0
  513. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/debug_detection.py +0 -0
  514. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/find_unused_features.py +0 -0
  515. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/generate_test_data.py +0 -0
  516. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/optimize_detection_params.py +0 -0
  517. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/plot_cmj_velocities.py +0 -0
  518. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/plot_validation_results.py +0 -0
  519. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/plot_velocities.py +0 -0
  520. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/prepare_ground_truth.py +0 -0
  521. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/README.md +0 -0
  522. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/add-issue.sh +0 -0
  523. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/batch-set-fields.sh +0 -0
  524. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/helpers.sh +0 -0
  525. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/list.sh +0 -0
  526. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/set-field.sh +0 -0
  527. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/set-status.sh +0 -0
  528. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/summary.sh +0 -0
  529. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project.sh +0 -0
  530. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/setup-github-deploy.sh +0 -0
  531. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/setup-google-oauth.sh +0 -0
  532. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/setup-supabase-local.sh +0 -0
  533. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/setup-supabase-production.sh +0 -0
  534. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/supabasedb/setup-supabase-database.sh +0 -0
  535. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/supabasedb/setup_supabase_db.py +0 -0
  536. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/test_acceleration_standing.py +0 -0
  537. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/test_determinism.sh +0 -0
  538. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/test_drop_start_debug.py +0 -0
  539. {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/validate_known_heights.py +0 -0
  540. {kinemotion-0.66.0 → kinemotion-0.66.2}/sonar-project.properties +0 -0
  541. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/__init__.py +0 -0
  542. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/api.py +0 -0
  543. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cli.py +0 -0
  544. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/__init__.py +0 -0
  545. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/analysis.py +0 -0
  546. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/api.py +0 -0
  547. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/cli.py +0 -0
  548. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/debug_overlay.py +0 -0
  549. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/joint_angles.py +0 -0
  550. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/kinematics.py +0 -0
  551. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/metrics_validator.py +0 -0
  552. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/validation_bounds.py +0 -0
  553. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/__init__.py +0 -0
  554. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/auto_tuning.py +0 -0
  555. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/cli_utils.py +0 -0
  556. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/determinism.py +0 -0
  557. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/experimental.py +0 -0
  558. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/filtering.py +0 -0
  559. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/formatting.py +0 -0
  560. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/metadata.py +0 -0
  561. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/pipeline_utils.py +0 -0
  562. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/pose.py +0 -0
  563. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/quality.py +0 -0
  564. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/smoothing.py +0 -0
  565. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/timing.py +0 -0
  566. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/types.py +0 -0
  567. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/validation.py +0 -0
  568. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/video_io.py +0 -0
  569. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/__init__.py +0 -0
  570. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/analysis.py +0 -0
  571. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/api.py +0 -0
  572. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/cli.py +0 -0
  573. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/debug_overlay.py +0 -0
  574. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/kinematics.py +0 -0
  575. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/metrics_validator.py +0 -0
  576. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/validation_bounds.py +0 -0
  577. {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/py.typed +0 -0
  578. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/__init__.py +0 -0
  579. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cli/__init__.py +0 -0
  580. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cli/test_cmj.py +0 -0
  581. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cli/test_dropjump.py +0 -0
  582. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cli/test_imports.py +0 -0
  583. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/__init__.py +0 -0
  584. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_analysis.py +0 -0
  585. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_api.py +0 -0
  586. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_cli.py +0 -0
  587. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_joint_angles.py +0 -0
  588. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_kinematics.py +0 -0
  589. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_physiological_bounds.py +0 -0
  590. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/conftest.py +0 -0
  591. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/__init__.py +0 -0
  592. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_auto_tuning.py +0 -0
  593. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_cli_utils.py +0 -0
  594. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_filtering.py +0 -0
  595. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_formatting.py +0 -0
  596. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_metadata.py +0 -0
  597. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_pipeline_utils.py +0 -0
  598. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_pose.py +0 -0
  599. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_quality.py +0 -0
  600. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_smoothing.py +0 -0
  601. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_timing.py +0 -0
  602. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_validation.py +0 -0
  603. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_video_io.py +0 -0
  604. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/__init__.py +0 -0
  605. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_adaptive_threshold.py +0 -0
  606. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_analysis.py +0 -0
  607. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_api.py +0 -0
  608. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_cli.py +0 -0
  609. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_contact_detection.py +0 -0
  610. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_kinematics.py +0 -0
  611. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_physiological_bounds.py +0 -0
  612. {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_validation_integration.py +0 -0
  613. {kinemotion-0.66.0 → kinemotion-0.66.2}/typings/mediapipe/__init__.pyi +0 -0
  614. {kinemotion-0.66.0 → kinemotion-0.66.2}/typings/mediapipe/solutions/__init__.pyi +0 -0
  615. {kinemotion-0.66.0 → kinemotion-0.66.2}/typings/mediapipe/solutions/pose.pyi +0 -0
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  <!-- version list -->
9
9
 
10
+ ## kinemotion-v0.66.2 (2025-12-19)
11
+
12
+ ### Fix
13
+
14
+ - **codecs**: remove Fly.io references, document actual Cloud Run architecture
15
+
16
+ ## kinemotion-v0.66.1 (2025-12-19)
17
+
18
+ ### Fix
19
+
20
+ - **warnings**: remove redundant 'h264' codec, use standard 'avc1' only
21
+
10
22
  ## kinemotion-v0.66.0 (2025-12-19)
11
23
 
12
24
  ### Feat
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kinemotion
3
- Version: 0.66.0
3
+ Version: 0.66.2
4
4
  Summary: Video-based kinematic analysis for athletic performance
5
5
  Project-URL: Homepage, https://github.com/feniix/kinemotion
6
6
  Project-URL: Repository, https://github.com/feniix/kinemotion
@@ -12,12 +12,13 @@ ENV PYTHONUNBUFFERED=1 \
12
12
  PYTHONPATH=/app/src
13
13
 
14
14
  # Install system dependencies required for MediaPipe and OpenCV
15
- # ffmpeg: Video processing
15
+ # ffmpeg: Video processing (includes libx264 for H.264 encoding)
16
16
  # libsm6, libxext6, libxrender-dev: OpenCV/MediaPipe GUI support
17
17
  # libgomp1: OpenMP for NumPy optimization
18
18
  # hadolint ignore=DL3008
19
19
  RUN apt-get update && apt-get install -y --no-install-recommends \
20
20
  ffmpeg \
21
+ libx264-dev \
21
22
  libsm6 \
22
23
  libxext6 \
23
24
  libxrender-dev \
@@ -1,6 +1,6 @@
1
1
  # Issue #12: Local Testing Guide
2
2
 
3
- This guide shows how to test the complete MVP stack locally before deploying to Fly.io and Vercel.
3
+ This guide shows how to test the complete MVP stack locally before deploying to Google Cloud Run and Vercel.
4
4
 
5
5
  ## Prerequisites
6
6
 
@@ -582,4 +582,4 @@ If local testing fails:
582
582
  ______________________________________________________________________
583
583
 
584
584
  **Status:** Ready for local testing
585
- **Next:** Deploy to Fly.io + Vercel after confirming local testing works
585
+ **Next:** Deploy to Cloud Run + Vercel after confirming local testing works (automatic via GitHub Actions)
@@ -12,7 +12,7 @@ This document provides a complete setup guide for the Kinemotion Web UI MVP (Iss
12
12
  ▼ ▼
13
13
  ┌─────────────┐ ┌──────────────────┐
14
14
  │ Frontend │ │ Backend │
15
- │ (Vercel) │ │ (Fly.io)
15
+ │ (Vercel) │ │ (Cloud Run)
16
16
  │ │ │ │
17
17
  │ React+Vite │◄────────┤ FastAPI + uv │
18
18
  │ Yarn │ API │ Real metrics │
@@ -83,30 +83,23 @@ yarn dev
83
83
 
84
84
  ## Deployment
85
85
 
86
- ### Backend: Deploy to Fly.io
86
+ ### Backend: Deploy to Google Cloud Run
87
87
 
88
- ```bash
89
- cd backend
88
+ Backend deploys automatically via GitHub Actions when you push to main.
90
89
 
91
- # Install Fly CLI if needed
92
- # https://fly.io/docs/hands-on/install-flyctl/
93
-
94
- # Launch app (first time only)
95
- flyctl launch --image-label kinemotion-backend
90
+ ```bash
91
+ # Manual deployment (if needed)
92
+ # Ensure you have gcloud CLI installed and authenticated
96
93
 
97
- # Optional: Set R2 storage credentials
98
- flyctl secrets set R2_ENDPOINT=https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
99
- flyctl secrets set R2_ACCESS_KEY=YOUR_KEY
100
- flyctl secrets set R2_SECRET_KEY=YOUR_SECRET
101
- flyctl secrets set R2_BUCKET_NAME=kinemotion
94
+ cd backend
102
95
 
103
- # Deploy
104
- flyctl deploy --remote-only
96
+ # Build and push to Google Cloud Run
97
+ # This is handled by .github/workflows/deploy-backend.yml automatically
105
98
 
106
99
  # View logs
107
- flyctl logs
100
+ gcloud run services logs tail kinemotion-backend --project=kinemotion-backend
108
101
 
109
- # Your backend is now live at https://kinemotion-api.fly.dev
102
+ # Your backend is live at https://kinemotion-backend-1008251132682.us-central1.run.app
110
103
  ```
111
104
 
112
105
  ### Frontend: Deploy to Vercel
@@ -118,12 +111,12 @@ cd frontend
118
111
  # 1. Visit https://vercel.com/new
119
112
  # 2. Select this repository
120
113
  # 3. Set Root Directory: frontend
121
- # 4. Add environment variable: VITE_API_URL=https://kinemotion-api.fly.dev
114
+ # 4. Add environment variable: VITE_API_URL=https://kinemotion-backend-1008251132682.us-central1.run.app
122
115
  # 5. Deploy
123
116
 
124
117
  # Option 2: Deploy via Vercel CLI
125
118
  vercel --cwd=frontend
126
- # Set: VITE_API_URL=https://kinemotion-api.fly.dev
119
+ # Set: VITE_API_URL=https://kinemotion-backend-1008251132682.us-central1.run.app
127
120
 
128
121
  # Your frontend is now live at https://kinemotion-mvp.vercel.app
129
122
  ```
@@ -137,14 +130,12 @@ kinemotion/
137
130
  │ │ ├── __init__.py
138
131
  │ │ └── app.py ← Main FastAPI application
139
132
  │ ├── pyproject.toml ← Dependencies (uv)
140
- │ ├── Dockerfile ← Container for Fly.io
141
- │ ├── fly.toml ← Fly.io configuration
133
+ │ ├── Dockerfile ← Container for Cloud Run
142
134
  │ ├── .env.example ← Environment template
143
135
  │ ├── .dockerignore
144
136
  │ ├── README.md ← Backend docs
145
137
  │ ├── SETUP.md ← Backend deployment guide
146
138
  │ ├── IMPLEMENTATION_SUMMARY.md ← Technical details
147
- │ ├── FLY_DEPLOYMENT.md ← Fly.io guide
148
139
  │ └── uv.lock ← Locked dependencies
149
140
 
150
141
  ├── frontend/ ← React frontend (can move to separate repo later)
@@ -178,7 +169,7 @@ kinemotion/
178
169
 
179
170
  ## API Endpoints
180
171
 
181
- ### Backend: `http://localhost:8000` (dev) or `https://kinemotion-api.fly.dev` (prod)
172
+ ### Backend: `http://localhost:8000` (dev) or `https://kinemotion-backend-1008251132682.us-central1.run.app` (prod)
182
173
 
183
174
  #### Health Check
184
175
 
@@ -237,7 +228,17 @@ R2_BUCKET_NAME=kinemotion
237
228
 
238
229
  # API Configuration
239
230
  LOG_LEVEL=info
240
- CORS_ORIGINS=http://localhost:3000,http://localhost:5173,https://kinemotion-mvp.vercel.app
231
+ CORS_ORIGINS=http://localhost:3000,http://localhost:5173,https://kinemotion.vercel.app
232
+
233
+ # R2 Storage (optional - leave empty for development)
234
+ R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
235
+ R2_ACCESS_KEY=your_access_key
236
+ R2_SECRET_KEY=your_secret_key
237
+ R2_BUCKET_NAME=kinemotion
238
+
239
+ # Supabase Database (configured in Google Cloud Secret Manager for production)
240
+ SUPABASE_URL=https://smutfsalcbnfveqijttb.supabase.co
241
+ SUPABASE_ANON_KEY=your_key_here
241
242
  ```
242
243
 
243
244
  ### Frontend (`frontend/.env`)
@@ -247,7 +248,7 @@ CORS_ORIGINS=http://localhost:3000,http://localhost:5173,https://kinemotion-mvp.
247
248
  VITE_API_URL=http://localhost:8000
248
249
 
249
250
  # Production
250
- # VITE_API_URL=https://kinemotion-api.fly.dev
251
+ # VITE_API_URL=https://kinemotion-backend-1008251132682.us-central1.run.app
251
252
  ```
252
253
 
253
254
  ## Cloudflare R2 Setup (Optional)
@@ -280,14 +281,12 @@ R2 is optional for MVP - videos can be stored temporarily without it. To enable:
280
281
  # Format: https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
281
282
  ```
282
283
 
283
- ### 4. Set Fly.io secrets
284
+ ### 4. Set secrets in Google Cloud Secret Manager
284
285
 
285
286
  ```bash
286
- cd backend
287
- flyctl secrets set R2_ENDPOINT=https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
288
- flyctl secrets set R2_ACCESS_KEY=YOUR_ACCESS_KEY
289
- flyctl secrets set R2_SECRET_KEY=YOUR_SECRET_KEY
290
- flyctl secrets set R2_BUCKET_NAME=kinemotion
287
+ # R2 credentials are stored in Google Cloud Secret Manager
288
+ # and accessed by Cloud Run service account
289
+ # See backend deployment documentation for details
291
290
  ```
292
291
 
293
292
  ## Key Design Decisions
@@ -304,12 +303,14 @@ flyctl secrets set R2_BUCKET_NAME=kinemotion
304
303
  - **Benefit:** Works without R2, scales up gracefully
305
304
  - **Implementation:** Backend gracefully handles missing R2 credentials
306
305
 
307
- ### 3. Fly.io + Vercel
306
+ ### 3. Google Cloud Run + Vercel + Supabase
308
307
 
309
- - **Backend:** Fly.io free tier (3GB RAM, adequate for video processing)
308
+ - **Backend:** Google Cloud Run (video processing, auto-scales)
310
309
  - **Frontend:** Vercel free tier (industry standard for React)
311
- - **Storage:** Cloudflare R2 free tier (10GB/month, covers MVP volume)
312
- - **Total Cost:** $0 for realistic MVP testing
310
+ - **Database:** Supabase (PostgreSQL database)
311
+ - **Authentication:** Supabase Auth (OAuth, email/password)
312
+ - **Storage:** Cloudflare R2 (video and results file storage)
313
+ - **Total Cost:** Minimal for MVP testing
313
314
 
314
315
  ### 4. Separate Backend/Frontend Directories
315
316
 
@@ -360,22 +361,19 @@ ls -lh your_video.mp4
360
361
  file your_video.mp4
361
362
 
362
363
  # Check backend logs
363
- flyctl logs # For production
364
+ gcloud run services logs tail kinemotion-backend --project=kinemotion-backend
364
365
  # or check terminal for local development
365
366
  ```
366
367
 
367
368
  ### R2 upload fails (if R2 configured)
368
369
 
369
370
  ```bash
370
- # Verify credentials are set correctly
371
- flyctl secrets list
372
-
373
- # Test R2 connection
374
- flyctl ssh console
375
- # Then in console:
376
- import boto3
377
- s3 = boto3.client('s3', endpoint_url=os.getenv('R2_ENDPOINT'), ...)
378
- s3.head_bucket(Bucket=os.getenv('R2_BUCKET_NAME'))
371
+ # Check R2 credentials in Google Cloud Secret Manager
372
+ gcloud secrets versions access latest --secret=R2_ACCESS_KEY --project=kinemotion-backend
373
+ gcloud secrets versions access latest --secret=R2_SECRET_KEY --project=kinemotion-backend
374
+
375
+ # Verify endpoint and bucket name are correct
376
+ # Test R2 connection from Cloud Run logs
379
377
  ```
380
378
 
381
379
  ## Testing Checklist
@@ -390,10 +388,11 @@ s3.head_bucket(Bucket=os.getenv('R2_BUCKET_NAME'))
390
388
  - [ ] Results display correctly
391
389
  - [ ] Error messages are user-friendly
392
390
  - [ ] Mobile responsive on phone
393
- - [ ] Backend deploys to Fly.io
391
+ - [ ] Backend deploys to Cloud Run (automatic via GitHub Actions)
394
392
  - [ ] Frontend deploys to Vercel
395
393
  - [ ] Production URLs work
396
394
  - [ ] R2 download links work (if R2 configured)
395
+ - [ ] Supabase integration works
397
396
 
398
397
  ## Next Steps
399
398
 
@@ -424,7 +423,6 @@ s3.head_bucket(Bucket=os.getenv('R2_BUCKET_NAME'))
424
423
  - `backend/README.md` - Backend overview
425
424
  - `backend/docs/setup.md` - Setup and deployment
426
425
  - `backend/docs/implementation-summary.md` - Technical details
427
- - `backend/docs/fly-deployment.md` - Fly.io specific guide
428
426
  - `backend/docs/tests.md` - Test documentation
429
427
 
430
428
  - **Frontend:**
@@ -441,10 +439,10 @@ s3.head_bucket(Bucket=os.getenv('R2_BUCKET_NAME'))
441
439
  For issues:
442
440
 
443
441
  1. Check troubleshooting section above
444
- 1. Review backend logs: `flyctl logs`
442
+ 1. Review backend logs: `gcloud run services logs tail kinemotion-backend --project=kinemotion-backend`
445
443
  1. Check frontend console (browser DevTools)
446
444
  1. Review README files in backend/ and frontend/
447
- 1. Check GitHub issues #10, #11 for status
445
+ 1. Check GitHub issues for known problems
448
446
 
449
447
  ## Architecture Diagram
450
448
 
@@ -454,8 +452,8 @@ Coach (Phone/Desktop)
454
452
 
455
453
  ┌─────────────────────────┐
456
454
  │ Frontend (Vercel) │
457
- http://kinemotion-
458
- mvp.vercel.app
455
+ https://kinemotion.
456
+ │ vercel.app
459
457
  │ │
460
458
  │ React + Vite + Yarn │
461
459
  │ - Upload form │
@@ -466,30 +464,32 @@ Coach (Phone/Desktop)
466
464
  │ (multipart: video + jump_type)
467
465
 
468
466
  ┌─────────────────────────┐
469
- │ Backend (Fly.io)
467
+ │ Backend (Cloud Run)
470
468
  │ https://kinemotion- │
471
- api.fly.dev
469
+ backend...run.app
472
470
  │ │
473
471
  │ FastAPI + Python 3.12 │
474
472
  │ - Upload handler │
475
473
  │ - Real metrics (CMJ/DJ) │
476
474
  │ - R2 integration │
475
+ │ - Supabase client │
477
476
  │ - Error handling │
478
477
  └────────────┬────────────┘
479
- │ Upload/download
480
- │ Results JSON
481
-
482
- ┌──────────────────┐
483
- │ Cloudflare R2 │
484
- │ (Optional) │
485
- │ │
486
- │ - Videos (temp) │
487
- │ - Results (JSON) │
488
- │ - Debug videos │
489
- └──────────────────┘
490
478
 
491
- ▼ Download links
492
- (Frontend)
479
+ ┌────────┴────────┐
480
+ │ │
481
+ ▼ ▼
482
+ ┌─────────────┐ ┌──────────────────┐
483
+ │ Supabase │ │ Cloudflare R2 │
484
+ │ │ │ │
485
+ │ - Auth │ │ - Videos (temp) │
486
+ │ - Database │ │ - Results (JSON) │
487
+ │ - Sessions │ │ - Debug videos │
488
+ │ - Metadata │ └──────────────────┘
489
+ └─────────────┘ │
490
+
491
+ (Frontend)
492
+ Download links
493
493
  ```
494
494
 
495
495
  ______________________________________________________________________
@@ -119,7 +119,7 @@ This shows all available endpoints with interactive testing.
119
119
 
120
120
  ## Next Steps
121
121
 
122
- - **Local testing works?** → Deploy to Fly.io + Vercel
122
+ - **Local testing works?** → Deploy to Cloud Run + Vercel (automatic via GitHub Actions)
123
123
  - **Issues?** → See [`local-testing.md`](guides/local-testing.md) for detailed troubleshooting
124
124
  - **Ready to deploy?** → Follow [`setup-issue-12.md`](guides/setup-issue-12.md)
125
125
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kinemotion"
3
- version = "0.66.0"
3
+ version = "0.66.2"
4
4
  description = "Video-based kinematic analysis for athletic performance"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10,<3.13"
@@ -68,11 +68,11 @@ def create_video_writer(
68
68
  needs_resize = (display_width != width) or (display_height != height)
69
69
 
70
70
  # Try browser-compatible codecs first
71
- # avc1/h264: H.264 (Most compatible, including iOS)
71
+ # avc1: H.264 (Most compatible, including iOS)
72
72
  # mp4v: MPEG-4 (Poor browser support, will trigger ffmpeg re-encoding for H.264)
73
73
  # ⚠️ CRITICAL: VP9 (vp09) is EXCLUDED - not supported on iOS/iPhone/iPad browsers!
74
74
  # Adding VP9 will break debug video playback on all iOS devices.
75
- codecs_to_try = ["avc1", "h264", "mp4v"]
75
+ codecs_to_try = ["avc1", "mp4v"]
76
76
 
77
77
  writer = None
78
78
  used_codec = "mp4v" # Default fallback
@@ -76,7 +76,7 @@ class TestCodecSelection:
76
76
  )
77
77
 
78
78
  assert codec != "vp09", "VP9 codec used! This breaks iOS."
79
- assert codec in ["avc1", "h264", "mp4v"], f"Unexpected codec: {codec}"
79
+ assert codec in ["avc1", "mp4v"], f"Unexpected codec: {codec}"
80
80
 
81
81
 
82
82
  class TestVideoWriterCreation:
@@ -199,6 +199,6 @@ class TestRegressionIOS:
199
199
  fps=30.0,
200
200
  )
201
201
 
202
- # Should use H.264 (avc1/h264) not VP9
203
- assert codec in ["avc1", "h264"]
202
+ # Should use H.264 (avc1) not VP9
203
+ assert codec == "avc1", f"Expected avc1, got {codec}"
204
204
  assert codec != "vp09", "VP9 breaks iPhone playback!"
@@ -913,7 +913,7 @@ wheels = [
913
913
 
914
914
  [[package]]
915
915
  name = "kinemotion"
916
- version = "0.65.0"
916
+ version = "0.66.1"
917
917
  source = { editable = "." }
918
918
  dependencies = [
919
919
  { name = "click" },
@@ -1,226 +0,0 @@
1
- # Fly.io Deployment Guide
2
-
3
- Complete deployment configuration for the Kinemotion backend on Fly.io.
4
-
5
- ## Files Created
6
-
7
- 1. **`Dockerfile`** - Multi-stage Python 3.12 container optimized for video processing
8
- 1. **`fly.toml`** - Fly.io configuration with free tier settings
9
- 1. **`.dockerignore`** - Excludes unnecessary files from Docker build
10
-
11
- ## Quick Start
12
-
13
- ### 1. Install Fly CLI
14
-
15
- ```bash
16
- curl -L https://fly.io/install.sh | sh
17
- flyctl auth login
18
- ```
19
-
20
- ### 2. Initialize and Deploy
21
-
22
- ```bash
23
- cd backend
24
- flyctl launch --image-label kinemotion-backend
25
- # OR deploy existing app:
26
- flyctl deploy --remote-only
27
- ```
28
-
29
- ### 3. Set Required Secrets
30
-
31
- For Cloudflare R2 storage (optional but recommended for production):
32
-
33
- ```bash
34
- # Get credentials from Cloudflare R2 dashboard
35
- flyctl secrets set R2_ENDPOINT=https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
36
- flyctl secrets set R2_ACCESS_KEY=YOUR_ACCESS_KEY
37
- flyctl secrets set R2_SECRET_KEY=YOUR_SECRET_KEY
38
- flyctl secrets set R2_BUCKET_NAME=kinemotion
39
- ```
40
-
41
- ### 4. Update CORS Origins (Optional)
42
-
43
- To add your frontend domain:
44
-
45
- ```bash
46
- flyctl config set env.CORS_ORIGINS="https://your-domain.com,https://another-domain.com"
47
- ```
48
-
49
- ## Configuration Details
50
-
51
- ### Docker Image
52
-
53
- - **Base**: Python 3.12-slim (latest, most efficient)
54
- - **Dependencies**:
55
- - ffmpeg (video processing)
56
- - libsm6, libxext6, libxrender-dev (OpenCV/MediaPipe support)
57
- - libgomp1 (NumPy optimization)
58
- - **Package Manager**: uv (fast, deterministic dependency installation)
59
- - **Health Check**: `/health` endpoint monitored every 30 seconds
60
-
61
- ### Fly.io Settings
62
-
63
- - **App Name**: `kinemotion-api`
64
- - **Region**: `sjc` (San Jose, US - adjust in `fly.toml` if needed)
65
- - **Machine**: Free tier (shared CPU, 256MB memory, 1 worker)
66
- - **Port**: 8000 (internal and external)
67
- - **Workers**: 1 (single worker for free tier stability)
68
-
69
- ### Graceful Shutdown
70
-
71
- - **Timeout**: 60 seconds for video processing completion
72
- - **Health Check Grace Period**: 5 seconds on startup
73
- - **Restart**: Automatic on crash or deployment
74
-
75
- ## Environment Variables
76
-
77
- ### Default Configuration (in fly.toml)
78
-
79
- - `LOG_LEVEL`: "info" (set to "debug" for troubleshooting)
80
- - `WORKERS`: "1" (shared CPU safe setting)
81
- - `CORS_ORIGINS`: "https://kinemotion-mvp.vercel.app"
82
- - `PYTHONUNBUFFERED`: "1" (streaming output)
83
- - `PYTHONDONTWRITEBYTECODE`: "1" (reduce disk I/O)
84
-
85
- ### Secrets (set via `flyctl secrets set`)
86
-
87
- - `R2_ENDPOINT`: Cloudflare R2 endpoint
88
- - `R2_ACCESS_KEY`: R2 access key ID
89
- - `R2_SECRET_KEY`: R2 secret key
90
- - `R2_BUCKET_NAME`: S3 bucket name (default: "kinemotion")
91
-
92
- ## Performance Notes
93
-
94
- ### Free Tier Considerations
95
-
96
- 1. **Single Worker**: Video processing is CPU-bound, single worker prevents memory thrashing
97
- 1. **256MB Memory**: Sufficient for sequential video processing with temp file cleanup
98
- 1. **Graceful Timeout**: 60 seconds allows complete video analysis before shutdown
99
- 1. **Auto Restart**: Failed requests trigger immediate restart
100
-
101
- ### Expected Performance
102
-
103
- - **Typical analysis time**: 30-120 seconds (depends on video length/quality)
104
- - **Concurrent requests**: Limited to 1 (single worker)
105
- - **Queue timeout**: Requests will fail if processing exceeds 60s
106
-
107
- ### Upgrade Path
108
-
109
- For production with multiple concurrent requests:
110
-
111
- 1. Increase `WORKERS` to 2-4 in `fly.toml`
112
- 1. Upgrade machine to `shared-cpu-2x` or `shared-cpu-4x`
113
- 1. Increase memory_mb to 512-1024
114
- 1. Consider load balancing across multiple machines
115
-
116
- ## Monitoring
117
-
118
- ### View Logs
119
-
120
- ```bash
121
- flyctl logs
122
- flyctl logs -n 100 # Last 100 lines
123
- flyctl logs --follow # Stream logs
124
- ```
125
-
126
- ### Check Status
127
-
128
- ```bash
129
- flyctl status
130
- flyctl machine list
131
- flyctl machine status <machine_id>
132
- ```
133
-
134
- ### View Metrics
135
-
136
- ```bash
137
- flyctl metrics
138
- ```
139
-
140
- ## Common Issues
141
-
142
- ### "Out of memory" errors
143
-
144
- - Increase machine memory in `fly.toml`: `memory_mb = 512`
145
- - Or upgrade machine type: `cpu_kind = "shared-cpu-2x"`
146
- - Reduce concurrent workers or process videos sequentially
147
-
148
- ### Health check fails
149
-
150
- - Check logs: `flyctl logs | grep health`
151
- - Ensure `/health` endpoint is working: `curl https://kinemotion-api.fly.dev/health`
152
- - Increase `grace_period` in `fly.toml` if startup takes time
153
-
154
- ### Video analysis timeouts
155
-
156
- - Increase `timeout-graceful-shutdown` in `[processes]` section
157
- - Consider processing videos offline with async jobs
158
- - Implement video streaming/chunking for large files
159
-
160
- ### R2 storage errors
161
-
162
- - Verify secrets are set: `flyctl secrets list`
163
- - Check R2 credentials in Cloudflare dashboard
164
- - Ensure bucket name matches R2 settings
165
-
166
- ## Debugging
167
-
168
- ### Build locally
169
-
170
- ```bash
171
- docker build -t kinemotion-backend .
172
- docker run -p 8000:8000 kinemotion-backend
173
- ```
174
-
175
- ### Test health endpoint
176
-
177
- ```bash
178
- curl http://localhost:8000/health
179
- ```
180
-
181
- ### Test analysis endpoint
182
-
183
- ```bash
184
- curl -X POST -F "file=@test.mp4" -F "jump_type=cmj" \
185
- http://localhost:8000/api/analyze
186
- ```
187
-
188
- ## Useful Commands
189
-
190
- ```bash
191
- # Deploy changes
192
- flyctl deploy --remote-only
193
-
194
- # Check app info
195
- flyctl info
196
-
197
- # View environment variables
198
- flyctl config view
199
-
200
- # Scale machines (paid tier)
201
- flyctl scale count 2
202
-
203
- # Restart machines
204
- flyctl machines restart <machine_id>
205
-
206
- # SSH into machine (debugging)
207
- flyctl ssh console
208
-
209
- # View recent deployments
210
- flyctl releases
211
- ```
212
-
213
- ## Next Steps
214
-
215
- 1. **Customize Region**: Update `primary_region` in `fly.toml` (e.g., "lax", "iad", "lon")
216
- 1. **Add Domain**: Use `flyctl certs add your-domain.com`
217
- 1. **Configure Monitoring**: Set up alerts via Fly dashboard
218
- 1. **Optimize**: Monitor logs and metrics, adjust WORKERS if needed
219
- 1. **Scale**: Upgrade to paid machine when needed for production load
220
-
221
- ## References
222
-
223
- - [Fly.io Documentation](https://fly.io/docs/)
224
- - [Dockerfile Best Practices](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)
225
- - [Python on Fly.io](https://fly.io/docs/languages-and-frameworks/python/)
226
- - [Fly Machines API](https://fly.io/docs/reference/machines/)