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.
- {kinemotion-0.66.0 → kinemotion-0.66.2}/CHANGELOG.md +12 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/PKG-INFO +1 -1
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/Dockerfile +2 -1
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/local-testing.md +2 -2
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/setup-issue-12.md +67 -67
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/quick-start.md +1 -1
- {kinemotion-0.66.0 → kinemotion-0.66.2}/pyproject.toml +1 -1
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/debug_overlay_utils.py +2 -2
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_debug_overlay_utils.py +3 -3
- {kinemotion-0.66.0 → kinemotion-0.66.2}/uv.lock +1 -1
- kinemotion-0.66.0/backend/docs/fly-deployment.md +0 -226
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/api-reference-quick-commands.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/cloud-run-cpu-specifications-investigation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/supabase-authentication-setup-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/testing-backend-authentication-quick-reference.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/auth-provider-comparison-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/auth-providers-comparison-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-authentication-quick-start.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-authentication-setup-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-authentication-technical-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-google-oauth-setup-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-production-setup-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-quick-start-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/camera-angle-empirical-validation-results-45-superior-for-media-pipe.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/camera-perspective-analysis-45deg-vs-lateral.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/cmj-landing-detection-window-validation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/cmj-physiological-bounds-for-validation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/cmj-validation-implementation-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/drop-jump-vs-cmj-key-differences.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/biomechanics/technical-implementation-45deg-perspective-correction.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/codebase-architecture-overview.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/validation-architecture-visual-hierarchy-after-refactoring.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/validation-code-duplication-evidence.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/validation-module-architecture-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/codebase/validation-refactoring-complete-architecture-improvement.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/automated-deployment-setup-git-hub-actions-with-workload-identity-federation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/backend-repository-split-migration-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/backend-repository-split-step-by-step-execution-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/cloud-run-security-least-privilege-service-account-setup.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/cors-and-memory-issues-production-debugging-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/current-kinemotion-architecture-correct-deployment-setup.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/frontend-repository-split-migration-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/frontend-repository-split-step-by-step-execution-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/production-deployment-guide-vercel-google-cloud-run.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/quick-deployment-commands-vercel-and-cloud-run.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/deployment/vercel-monorepo-deployment-best-practice.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3-d-validation-status-and-pending-work.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3d-and-cross-platform-determinism-investigation-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3d-final-strategy-accuracy-and-robustness.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3d-media-pipe-enhancement-plan.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/athlete-pose3d-phase-1-implementation-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-authentication-and-logging-status.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-code-coverage-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-code-duplication-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-granular-logging-implementation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-kinemotion-decoupling-strategy.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/backend-sonar-cloud-integration-status.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/basic-memory-naming-hook-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/ci-caching-issue-investigation-deep-squat-test-failure.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/ci-vs-local-test-failure-investigation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/claude-code-hook-configuration.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/cmj-phase-detection-testing-gap-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/commit-review-r2-video-storage-migration-fe74d1f.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/comprehensive-timing-instrumentation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/cross-platform-determinism-analysis-final-results.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/database-setup-scripts-complete-implementation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/development-standards-quality-gates.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/drop-jump-detection-complete-fix-all-metrics-within-target.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/drop-jump-detection-failure-analysis-per-video-breakdown.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/drop-jump-fix-drop-start-successful-landing-and-takeoff-remain.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/fast-api-app.py Refactoring Plan - Modular Architecture.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/fast-api-refactoring-completion-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/feature-request-system-configuration.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/follow-up-improvements-to-r2-video-storage-migration.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/frontend-dependencies-analysis-nov-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/google-oauth-setup-script-final-review-production-ready.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/google-oauth-setup-script-review-issues-and-recommendations.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/hook-complete-audit-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/hook-configuration-audit.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/hook-quick-reference.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/i18n-implementation-plan-for-validation-messages.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/keyboard-interrupt-test-suite-failure-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/model-import-conflict-resolution-fast-api-refactoring.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/non-deterministic-analysis-root-cause-and-solution.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/optimal-timing-implementation-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/p0-p1-p2-test-suite-fixes-final-report.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/pose-detection-baseline-evaluation-results.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/pose-detection-optimization-complete-success-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/pose-detection-parameter-optimization-framework.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/pyright-strict-mode-fix-patterns.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/structured-logging-implementation-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/structured-logging-implementation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/supabase-dashboard-navigation-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/supabase-database-integration-setup.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/supabase-documentation-validation-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-coverage-asymmetry-analysis-cmj-vs-drop-jump.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-coverage-equivalence-achievement-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-suite-comprehensive-review-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-suite-comprehensive-review-structure-and-gaps.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-suite-p0-p1-p2-fixes-complete-report.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/test-suite-p0-p1-p2-fixes-progress-report.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/unused-and-experimental-features-strategy.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/unused-code-detection-prompt-template.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/unused-code-identification-and-decorator-application-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/unused-code-verification-final-pass-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/using-multiple-mcp-reasoning-servers-simultaneously.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/velocity-threshold-empirical-validation-study.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/development/vercel-authentication-options-for-user-id-tracking.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/documentation/backend-debug-video-logging-reference.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/documentation/debug-video-logging-complete-end-to-end-reference.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/documentation/kinemotion-logs-in-cloud-logging-production-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/documentation/kinemotion-logs-in-cloud-logging-ready.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/fixes/complete-solution-i-os-structured-logging.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/fixes/debug-video-codec-fix-and-logging-enhancement.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/fixes/i-phone-video-playback-issue-vp9-codec-not-supported.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/agent-documentation-standards-update.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/backend-authentication-architecture-decision.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/backend-authentication-implementation-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/documentation-audit-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/i18n-documentation-cleanup-completed.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/issue-12-mvp-scaffolding-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/issue-12-unblocked-tasks-breakdown.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/issue-12-use-real-metrics-now.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/kinemotion-project-setup-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/kinemotion-supabase-production-configuration.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/mcp-sequential-thinking-alternatives-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/performance-optimization-pose-tracker-pool-timing-instrumentation-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/project-state-summary-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/specialized-subagents-routing-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/supabase-setup-instructions-for-kinemotion.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/project-management/version-mismatch-analysis-kinemotion-0370-vs-0300.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/research/performance-improvement-analysis-30s-18s.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/deployment-decision-analysis-for-kinemotion.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/mvp-feedback-collection-plan.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/mvp-first-strategic-direction.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/mvp-validation-checkpoints.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/pose2sim-migration-evaluation-and-strategy.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/strategic-priority-tasks-current-roadmap.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/strategy/third-party-auth-providers-with-free-tiers-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/biomechanics-specialist.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/computer-vision-engineer.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/devops-cicd-engineer.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/frontend-developer.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/ml-data-scientist.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/project-manager.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/python-backend-developer.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/qa-test-engineer.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/agents/technical-writer.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.claude/settings.local.json +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.cursor/mcp.json +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.dockerignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.envrc +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.gitattributes +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/dependabot.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/pull_request_template.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/workflows/deploy-backend.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/workflows/docs.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/workflows/release.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.github/workflows/test.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.gitignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.mcp.json +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.pre-commit-config.yaml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.readthedocs.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/.gitignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/backend-cors-fastapi-middleware-order.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/camera-perspective-validation-study.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/code_style_and_conventions.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/current-project-architecture.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/deployment-checklist-and-known-issues.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/deployment-setup-complete.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/github-project-setup-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/mvp-first-strategy.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/mvp-roadmap-and-priorities.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/project_overview.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/specialist-agents-routing.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/memories/suggested_commands.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.serena/project.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.tool-versions +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/.vercelignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/CLAUDE.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/CODE_OF_CONDUCT.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/CONTRIBUTING.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/Dockerfile +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/GEMINI.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/LICENSE +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/SECURITY.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/.coveragerc +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/.dockerignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/.env.example +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/docs/implementation-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/docs/setup.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/docs/tests.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/pyproject.toml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/analysis_api.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/config.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/dependencies.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/exceptions.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app/main.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/app.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/auth.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/database.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/logging_config.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/middleware.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/models/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/models/database.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/models/responses.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/models/storage.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/analysis.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/database.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/health.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/routes/platform.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/analysis_service.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/storage_service.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/validation.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/services/video_processor.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/types.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/utils/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/src/kinemotion_backend/utils/rate_limiter.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/supabase-schema.sql +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/conftest.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_api_endpoints.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_error_handling.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_health.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_r2_integration.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/backend/tests/test_validation.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/data/athletepose3d/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/data/athletepose3d/annotations/.gitkeep +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/data/athletepose3d/ground_truth/.gitkeep +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/data/athletepose3d/videos/.gitkeep +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/api/cmj.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/api/core.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/api/dropjump.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/api/overview.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/I18N-README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/agents-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/errors-findings.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/feature-request-system.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/feedback-system-setup.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-architecture-diagram.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-cheat-sheet.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-quick-start-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/i18n-validation-messages-specification.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/supabase-database-setup.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/test-suite-review-december-2025.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/testing-standards.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/testing.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/type-hints.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/validation-plan.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/validation-roadmap.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/development/wallball-norep-detection.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/bulk-processing.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/camera-setup.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/cloud-run-deployment.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/cmj-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/cmj-recording-protocol-es.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/cmj-recording-protocol.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/deployment-checklist.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/supabase-setup/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/supabase-setup/quickstart.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/supabase-setup/scripts-reference.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/guides/supabase-setup/setup-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/index.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/cloud-run-quick-reference.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/json-output-format.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/json-structure-comparison.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/parameters.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/reference/pose-systems.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/HOW-TO-FIND-DOIS.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/dois.txt +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/download.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/pyproject.toml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/paper-downloader/uv.lock +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/MANUAL-DOWNLOAD-GUIDE.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/convert_pdfs.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Ward_Putting-i-in-Team.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2011_Harper_10-to-5-Jump-Test.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2014_Samozino_FV-Imbalance.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/jump-performance/2022_Wells_Golf-Clubhead-CMJ.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2016_Moore_Economical-Running-Technique.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/smartphone-technology/2022_Bishop_MyJumpLab-Validation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/markdown/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/online-references-for-papers.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Ward_Putting-i-in-Team.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2011_Harper_10-to-5-Jump-Test.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2014_Samozino_FV-Imbalance.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/jump-performance/2022_Wells_Golf-Clubhead-CMJ.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Moore_Economical-Running-Technique.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/smartphone-technology/2022_Bishop_MyJumpLab-Validation.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/research/thirdparty/pdfs/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.pdf +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/1-STRATEGIC_SUMMARY.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/2-STRATEGIC_ANALYSIS.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/MVP_FEEDBACK_COLLECTION.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/MVP_VALIDATION_CHECKPOINTS.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/STYLE_GUIDE.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/01-executive-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/02-technical-assessment.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/03-refactoring-roadmap.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BIOMECHANICS/01-executive-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BIOMECHANICS/02-technical-assessment.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BIOMECHANICS/03-reference-guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/BIOMECHANICS/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/COMPUTER_VISION/01-executive-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/COMPUTER_VISION/02-real-time-architecture.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/COMPUTER_VISION/03-implementation-checklist.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/COMPUTER_VISION/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/01-agent-consensus.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/02-critical-findings.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/03-roadmap-adjustments.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/04-decision-points.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/risk-register.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/CONSOLIDATED/timeline-roadmap.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/DEVOPS_CI_CD/01-executive-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/DEVOPS_CI_CD/02-infrastructure-assessment.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/DEVOPS_CI_CD/03-implementation-roadmap.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/DEVOPS_CI_CD/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/01-executive-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/02-technical-assessment.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/03-parameter-specifications.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/QA_TESTING/01-executive-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/QA_TESTING/02-roadmap-assessment.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/QA_TESTING/03-testing-checklists.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/QA_TESTING/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/TECHNICAL_WRITING/01-executive-summary.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/TECHNICAL_WRITING/02-documentation-strategy.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/TECHNICAL_WRITING/03-action-plan.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/agent-assessments/TECHNICAL_WRITING/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/strategy/pose2sim-migration-evaluation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/framerate.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/implementation-details.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/imu-metadata.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/real-time-analysis.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/technical/triple-extension.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/translations/es/camera-setup.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/validation/athletepose3d-methodology.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/validation/determinism-test.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/validation/known-height-validation.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/docs/validation-status.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/examples/bulk/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/examples/bulk/bulk_processing.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/examples/bulk/simple_example.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/examples/programmatic_usage.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.editorconfig +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.env.example +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.gitattributes +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.gitignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.yarn/releases/yarn-4.12.0.cjs +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/.yarnrc.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/index.html +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/package.json +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/App.i18n.integration.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/App.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/App.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/Auth.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/Auth.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ErrorBoundary.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ErrorBoundary.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ErrorDisplay.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/FeatureRequestButton.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/FeedbackForm.css +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/FeedbackForm.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/FeedbackForm.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LanguageSwitcher.css +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LanguageSwitcher.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LanguageSwitcher.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LoadingSpinner.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/LoadingSpinner.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/RecentUploads.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/RecentUploads.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ResultsDisplay.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ResultsDisplay.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/ResultsSkeleton.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/UploadForm.test.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/components/UploadForm.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/config/links.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useAnalysis.test.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useAnalysis.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useAuth.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useBackendVersion.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useDatabaseStatus.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useLanguage.test.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useLanguage.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/hooks/useRecentUploads.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/i18n/config.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/i18n/locales/en/translation.json +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/i18n/locales/es/translation.json +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/i18n/locales/fr/translation.json +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/index.css +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/lib/supabase.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/main.tsx +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/test/setup.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/types/api.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/src/vite-env.d.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/vercel.json +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/vite.config.ts +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/frontend/yarn.lock +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/justfile +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/local_dev.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/mkdocs.yml +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/.gitignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/.gitignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/api_demo.ipynb +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/batch_processing_demo.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/demos/sample_data/.gitkeep +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/presentation_guide.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/revealjs/.gitignore +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/revealjs/Makefile +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/revealjs/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/revealjs/slides.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/presentation/speaker_script.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/requirements-docs.txt +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/samples/cmjs/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/SCRIPTS_QUICKREF.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/analyze_determinism_variance.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/ap3d/PENDING.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/ap3d/ap3d_validator.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/ap3d/prepare_ap3d_data.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/ap3d/validate_baseline.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/basic-memory-utils.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/debug_contact_states.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/debug_detection.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/find_unused_features.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/generate_test_data.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/optimize_detection_params.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/plot_cmj_velocities.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/plot_validation_results.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/plot_velocities.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/prepare_ground_truth.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/README.md +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/add-issue.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/batch-set-fields.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/helpers.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/list.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/set-field.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/set-status.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project/summary.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/project.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/setup-github-deploy.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/setup-google-oauth.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/setup-supabase-local.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/setup-supabase-production.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/supabasedb/setup-supabase-database.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/supabasedb/setup_supabase_db.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/test_acceleration_standing.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/test_determinism.sh +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/test_drop_start_debug.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/scripts/validate_known_heights.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/sonar-project.properties +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/api.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cli.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/analysis.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/api.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/cli.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/debug_overlay.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/joint_angles.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/kinematics.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/metrics_validator.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/cmj/validation_bounds.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/auto_tuning.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/cli_utils.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/determinism.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/experimental.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/filtering.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/formatting.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/metadata.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/pipeline_utils.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/pose.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/quality.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/smoothing.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/timing.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/types.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/validation.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/core/video_io.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/analysis.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/api.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/cli.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/debug_overlay.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/kinematics.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/metrics_validator.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/dropjump/validation_bounds.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/src/kinemotion/py.typed +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cli/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cli/test_cmj.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cli/test_dropjump.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cli/test_imports.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_analysis.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_api.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_cli.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_joint_angles.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_kinematics.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/cmj/test_physiological_bounds.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/conftest.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_auto_tuning.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_cli_utils.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_filtering.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_formatting.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_metadata.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_pipeline_utils.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_pose.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_quality.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_smoothing.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_timing.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_validation.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/core/test_video_io.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/__init__.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_adaptive_threshold.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_analysis.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_api.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_cli.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_contact_detection.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_kinematics.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_physiological_bounds.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/tests/dropjump/test_validation_integration.py +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/typings/mediapipe/__init__.pyi +0 -0
- {kinemotion-0.66.0 → kinemotion-0.66.2}/typings/mediapipe/solutions/__init__.pyi +0 -0
- {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.
|
|
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
|
|
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
|
|
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) │ │
|
|
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
|
|
86
|
+
### Backend: Deploy to Google Cloud Run
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
cd backend
|
|
88
|
+
Backend deploys automatically via GitHub Actions when you push to main.
|
|
90
89
|
|
|
91
|
-
|
|
92
|
-
#
|
|
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
|
-
|
|
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
|
-
#
|
|
104
|
-
|
|
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
|
-
|
|
100
|
+
gcloud run services logs tail kinemotion-backend --project=kinemotion-backend
|
|
108
101
|
|
|
109
|
-
# Your backend is
|
|
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-
|
|
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-
|
|
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
|
|
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-
|
|
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
|
|
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-
|
|
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
|
|
284
|
+
### 4. Set secrets in Google Cloud Secret Manager
|
|
284
285
|
|
|
285
286
|
```bash
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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.
|
|
306
|
+
### 3. Google Cloud Run + Vercel + Supabase
|
|
308
307
|
|
|
309
|
-
- **Backend:**
|
|
308
|
+
- **Backend:** Google Cloud Run (video processing, auto-scales)
|
|
310
309
|
- **Frontend:** Vercel free tier (industry standard for React)
|
|
311
|
-
- **
|
|
312
|
-
- **
|
|
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
|
-
|
|
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
|
-
#
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
#
|
|
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
|
|
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: `
|
|
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
|
|
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
|
-
│
|
|
458
|
-
│
|
|
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 (
|
|
467
|
+
│ Backend (Cloud Run) │
|
|
470
468
|
│ https://kinemotion- │
|
|
471
|
-
│
|
|
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
|
-
|
|
492
|
-
|
|
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
|
|
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
|
|
|
@@ -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
|
|
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", "
|
|
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", "
|
|
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
|
|
203
|
-
assert codec
|
|
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!"
|
|
@@ -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/)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/api/supabase-authentication-setup-guide.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kinemotion-0.66.0 → kinemotion-0.66.2}/.basic-memory/authentication/supabase-quick-start-guide.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|