alpha-visualizer 1.3.0__tar.gz → 1.3.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.
Files changed (689) hide show
  1. alpha_visualizer-1.3.0/.hypothesis/constants/812d29a19e56a27b → alpha_visualizer-1.3.2/.hypothesis/constants/64f671cc8bd3c7e4 +1 -1
  2. alpha_visualizer-1.3.0/.hypothesis/constants/ac0d9ed38453cfd0 → alpha_visualizer-1.3.2/.hypothesis/constants/a143537c99265376 +1 -1
  3. alpha_visualizer-1.3.0/.hypothesis/constants/04b2c2a699e215f4 → alpha_visualizer-1.3.2/.hypothesis/constants/e52ef865e1fc122f +1 -1
  4. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/CHANGELOG.md +28 -1
  5. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/PKG-INFO +1 -1
  6. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/openapi.json +1 -1
  7. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/errorMessage.test.ts +4 -2
  8. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/errorMessage.ts +2 -2
  9. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/__tests__/MaintenancePage.test.tsx +2 -2
  10. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/pyproject.toml +2 -2
  11. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/__init__.py +1 -1
  12. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/maintenance.py +6 -6
  13. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/run.py +6 -0
  14. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/strategies.py +6 -1
  15. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/services/forge_cli.py +42 -4
  16. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/services/jobs.py +9 -2
  17. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/BrowsePage-D2iIruQk.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/BrowsePage-BtjWf_pg.js +2 -2
  18. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/BrowsePage-D2iIruQk.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/BrowsePage-BtjWf_pg.js.map +1 -1
  19. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ChartDataTable-BihRD5zB.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ChartDataTable-B_PMsr6F.js +2 -2
  20. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ChartDataTable-BihRD5zB.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ChartDataTable-B_PMsr6F.js.map +1 -1
  21. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ComparePage-r2Kn5IKU.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ComparePage-BQLtkozx.js +2 -2
  22. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ComparePage-r2Kn5IKU.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ComparePage-BQLtkozx.js.map +1 -1
  23. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/DetailPage-DhT4BIhx.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/DetailPage-DkgwWfN1.js +2 -2
  24. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/DetailPage-DhT4BIhx.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/DetailPage-DkgwWfN1.js.map +1 -1
  25. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/EquityDrawdownPaneTV-BsdmPyAa.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/EquityDrawdownPaneTV-BqqjTDsR.js +2 -2
  26. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/EquityDrawdownPaneTV-BsdmPyAa.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/EquityDrawdownPaneTV-BqqjTDsR.js.map +1 -1
  27. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/IdeasPage-DaPbS4Yf.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/IdeasPage-CZt2Um3Q.js +2 -2
  28. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/IdeasPage-DaPbS4Yf.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/IdeasPage-CZt2Um3Q.js.map +1 -1
  29. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LivePage-Q3WKgh88.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/LivePage-nyToYYsN.js +2 -2
  30. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LivePage-Q3WKgh88.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/LivePage-nyToYYsN.js.map +1 -1
  31. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LiveTab-CYKQnJC8.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/LiveTab-CB_3VlBE.js +2 -2
  32. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LiveTab-CYKQnJC8.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/LiveTab-CB_3VlBE.js.map +1 -1
  33. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MaintenancePage-BP3oVssz.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/MaintenancePage-B2IUJ3dt.js +2 -2
  34. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MaintenancePage-BP3oVssz.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/MaintenancePage-B2IUJ3dt.js.map +1 -1
  35. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MetricsSummaryBarV2-gzksgQGt.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/MetricsSummaryBarV2-BXEamLE3.js +2 -2
  36. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MetricsSummaryBarV2-gzksgQGt.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/MetricsSummaryBarV2-BXEamLE3.js.map +1 -1
  37. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReportPage-Cf2NnZ2Z.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ReportPage-izblXE1Q.js +2 -2
  38. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReportPage-Cf2NnZ2Z.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ReportPage-izblXE1Q.js.map +1 -1
  39. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReturnDistributionChart-0hD8xUWa.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ReturnDistributionChart-D69B-itS.js +2 -2
  40. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReturnDistributionChart-0hD8xUWa.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ReturnDistributionChart-D69B-itS.js.map +1 -1
  41. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunLogDetails-BHJ70KpR.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/RunLogDetails-CG22uYt8.js +2 -2
  42. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunLogDetails-BHJ70KpR.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/RunLogDetails-CG22uYt8.js.map +1 -1
  43. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunsPage-DPkp5DAh.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/RunsPage-CXsBfoVg.js +2 -2
  44. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunsPage-DPkp5DAh.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/RunsPage-CXsBfoVg.js.map +1 -1
  45. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SettingsToggles-CNzWlW9f.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/SettingsToggles-tt-Rmlqz.js +2 -2
  46. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SettingsToggles-CNzWlW9f.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/SettingsToggles-tt-Rmlqz.js.map +1 -1
  47. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ShareCardButton-CN2fIICV.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ShareCardButton-DEt_rFr8.js +2 -2
  48. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ShareCardButton-CN2fIICV.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/ShareCardButton-DEt_rFr8.js.map +1 -1
  49. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/errorMessage-BzDBBHE6.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/errorMessage-CogRMclS.js +2 -2
  50. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/errorMessage-BzDBBHE6.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/errorMessage-CogRMclS.js.map +1 -1
  51. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/index-xSIYNDJt.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/index-CSTPOquK.js +3 -3
  52. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/index-xSIYNDJt.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/index-CSTPOquK.js.map +1 -1
  53. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/useBacktestData-B7fFEVc7.js → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/useBacktestData-BcRTA3hv.js +2 -2
  54. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/useBacktestData-B7fFEVc7.js.map → alpha_visualizer-1.3.2/src/alpha_visualizer/static/assets/useBacktestData-BcRTA3hv.js.map +1 -1
  55. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/index.html +1 -1
  56. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_maintenance.py +34 -0
  57. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_run.py +29 -0
  58. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_strategy_save.py +29 -0
  59. alpha_visualizer-1.3.2/tests/services/test_forge_cli.py +67 -0
  60. alpha_visualizer-1.3.2/tests/services/test_forge_failure_translation.py +60 -0
  61. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/services/test_jobs.py +25 -0
  62. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/uv.lock +1 -1
  63. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.agents/skills/source-command-audit-licenses/SKILL.md +0 -0
  64. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.agents/skills/source-command-pre-release/SKILL.md +0 -0
  65. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.claude/commands/audit-licenses.md +0 -0
  66. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.claude/commands/pre-release.md +0 -0
  67. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.codex/hooks.json +0 -0
  68. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  69. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/ISSUE_TEMPLATE/bug_report_ja.yml +0 -0
  70. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  71. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  72. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/ISSUE_TEMPLATE/feature_request_ja.yml +0 -0
  73. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  74. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/codeql/README.md +0 -0
  75. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/codeql/codeql-config.yml +0 -0
  76. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/dependabot.yml +0 -0
  77. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/workflows/ci.yml +0 -0
  78. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/workflows/codeql.yml +0 -0
  79. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/workflows/lighthouse.yml +0 -0
  80. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.github/workflows/release.yml +0 -0
  81. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.gitignore +0 -0
  82. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/.gitignore +0 -0
  83. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/0bf3463e8f4751b8 +0 -0
  84. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/0caad6595136948b +0 -0
  85. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/184fa6728d185660 +0 -0
  86. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/296b8092179c9f55 +0 -0
  87. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/312a7aaf12a1fd47 +0 -0
  88. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/316886ef98081ce9 +0 -0
  89. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/331e194303817b32 +0 -0
  90. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/36df1978b70731f9 +0 -0
  91. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/43f703bafb1e4b04 +0 -0
  92. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/4577b97f57a8a832 +0 -0
  93. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/4726660442f99a00 +0 -0
  94. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/4a1c4d1532cab28e +0 -0
  95. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/4b255f25d1067b71 +0 -0
  96. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/4fd44198986300fe +0 -0
  97. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/508b282112ab038e +0 -0
  98. /alpha_visualizer-1.3.0/.hypothesis/constants/b3227e2cf0b90fa4 → /alpha_visualizer-1.3.2/.hypothesis/constants/5320b01940d4c4ce +0 -0
  99. /alpha_visualizer-1.3.0/.hypothesis/constants/0e92a16981d06d97 → /alpha_visualizer-1.3.2/.hypothesis/constants/59c16b30deb5c037 +0 -0
  100. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/5c80be020ed7a646 +0 -0
  101. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/5c9eb073058f11a0 +0 -0
  102. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/5fca39058ed3753e +0 -0
  103. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/6abf3e9a1356666c +0 -0
  104. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/707dd0d075295200 +0 -0
  105. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/757b1f8305546439 +0 -0
  106. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/7cea79ac6c0799bb +0 -0
  107. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/7f90c9d611001617 +0 -0
  108. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/8d9ea99caee79fd4 +0 -0
  109. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/906238816b505c1e +0 -0
  110. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/98d0c8b0e6532609 +0 -0
  111. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/99c8a89c4a9a7859 +0 -0
  112. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/9c2871fc1ddbab71 +0 -0
  113. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/a636a4647020033d +0 -0
  114. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/ab4df659c6b192db +0 -0
  115. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/acddbf8018c5d884 +0 -0
  116. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/af039261f357a5c1 +0 -0
  117. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/b5541576e1e9aea7 +0 -0
  118. /alpha_visualizer-1.3.0/.hypothesis/constants/7c9231be4d08456f → /alpha_visualizer-1.3.2/.hypothesis/constants/b6221357177fc116 +0 -0
  119. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/b9ff5bcd3a53e3a7 +0 -0
  120. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/bfd4c6ca4462fe73 +0 -0
  121. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/c4312fe8499bc1f7 +0 -0
  122. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/c5349cb90ddc7968 +0 -0
  123. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/d34317036474de6e +0 -0
  124. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/da39a3ee5e6b4b0d +0 -0
  125. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/dbe657c7851479a7 +0 -0
  126. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/e41b0128c49db70e +0 -0
  127. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/e44a457d795e56c2 +0 -0
  128. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/ea2d606acbfff989 +0 -0
  129. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/eed5e66c16ae84b8 +0 -0
  130. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/f7c4a04c97c0daf8 +0 -0
  131. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/fa443af6269a6e02 +0 -0
  132. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/fa54b8596401d232 +0 -0
  133. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/.hypothesis/constants/ff4517cbfe51fea1 +0 -0
  134. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/AGENTS.md +0 -0
  135. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/CLAUDE.md +0 -0
  136. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/CODE_OF_CONDUCT.en.md +0 -0
  137. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/CODE_OF_CONDUCT.md +0 -0
  138. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/CONTRIBUTING.en.md +0 -0
  139. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/CONTRIBUTING.md +0 -0
  140. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/LICENSE +0 -0
  141. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/NOTICE +0 -0
  142. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/README.en.md +0 -0
  143. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/README.md +0 -0
  144. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/SECURITY.en.md +0 -0
  145. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/SECURITY.md +0 -0
  146. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/THIRDPARTY_LICENSES.txt +0 -0
  147. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/cliff.toml +0 -0
  148. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/adr/0001-pages-vs-screens.md +0 -0
  149. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/adr/0002-charts-visx-vs-components.md +0 -0
  150. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/adr/0003-openapi-typescript-codegen.md +0 -0
  151. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/adr/0004-condition-node-discriminated-union.md +0 -0
  152. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/lighthouse-ci.md +0 -0
  153. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/backtest-tv.png +0 -0
  154. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/browse.png +0 -0
  155. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/compare-heatmap.png +0 -0
  156. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/compare.png +0 -0
  157. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/detail.png +0 -0
  158. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/ideas.png +0 -0
  159. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/live.png +0 -0
  160. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/optimize.png +0 -0
  161. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/strategy-signal-tv.png +0 -0
  162. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/en/strategy.png +0 -0
  163. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/backtest-tv.png +0 -0
  164. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/browse.png +0 -0
  165. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/compare-heatmap.png +0 -0
  166. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/compare.png +0 -0
  167. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/detail.png +0 -0
  168. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/ideas.png +0 -0
  169. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/live.png +0 -0
  170. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/optimize.png +0 -0
  171. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/strategy-signal-tv.png +0 -0
  172. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/screenshots/ja/strategy.png +0 -0
  173. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/superpowers/plans/2026-07-25-live-equity-rich.md +0 -0
  174. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/superpowers/plans/2026-07-26-browse-recipe-rollup.md +0 -0
  175. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/superpowers/plans/2026-07-27-browse-symbol-coverage.md +0 -0
  176. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/superpowers/plans/2026-07-27-maintenance-orphan-runs.md +0 -0
  177. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/superpowers/specs/2026-07-25-live-equity-rich-design.md +0 -0
  178. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/superpowers/specs/2026-07-26-browse-recipe-rollup-design.md +0 -0
  179. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/superpowers/specs/2026-07-27-browse-symbol-coverage-design.md +0 -0
  180. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/docs/superpowers/specs/2026-07-27-maintenance-orphan-runs-design.md +0 -0
  181. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/.gitignore +0 -0
  182. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/.npmrc +0 -0
  183. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/.size-limit.json +0 -0
  184. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/.storybook/main.ts +0 -0
  185. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/.storybook/preview.ts +0 -0
  186. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/CLAUDE.md +0 -0
  187. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/README.md +0 -0
  188. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/THIRDPARTY_FONTS.md +0 -0
  189. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/README.md +0 -0
  190. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/historical/SPY_1d.parquet +0 -0
  191. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/ideas/ideas.json +0 -0
  192. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/results/backtest_results.db +0 -0
  193. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/dual_symbol_qqq.json +0 -0
  194. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/dual_symbol_spy.json +0 -0
  195. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v1.json +0 -0
  196. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v2.json +0 -0
  197. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v3.json +0 -0
  198. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/idle_recipe_v1.json +0 -0
  199. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/idle_recipe_v2.json +0 -0
  200. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/momo_breakout.json +0 -0
  201. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/no_symbol_v1.json +0 -0
  202. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/rsi_reversal.json +0 -0
  203. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/data/strategies/sma_cross.json +0 -0
  204. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/fixtures/forge/forge.yaml +0 -0
  205. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/helpers/locators.ts +0 -0
  206. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/samples/sample-fixture.spec.ts +0 -0
  207. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/screenshots/capture.spec.ts +0 -0
  208. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/screenshots/equity-tv.spec.ts +0 -0
  209. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/screenshots/strategy-signal-tv.spec.ts +0 -0
  210. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/specs/browse.spec.ts +0 -0
  211. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/specs/compare.spec.ts +0 -0
  212. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/specs/detail.spec.ts +0 -0
  213. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/specs/i18n.spec.ts +0 -0
  214. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/specs/maintenance.spec.ts +0 -0
  215. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/specs/share.spec.ts +0 -0
  216. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/visual/README.md +0 -0
  217. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/visual/__snapshots__/linux/equity-drawdown-tv.png +0 -0
  218. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/visual/__snapshots__/linux/strategy-signal-tv.png +0 -0
  219. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/e2e/visual/tv-charts.spec.ts +0 -0
  220. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/eslint.config.js +0 -0
  221. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/index.html +0 -0
  222. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/package.json +0 -0
  223. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/playwright.config.ts +0 -0
  224. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/playwright.samples.config.ts +0 -0
  225. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/playwright.screenshots.config.ts +0 -0
  226. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/playwright.visual.config.ts +0 -0
  227. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/pnpm-lock.yaml +0 -0
  228. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/pnpm-workspace.yaml +0 -0
  229. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/public/favicon.svg +0 -0
  230. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/public/icons.svg +0 -0
  231. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/api/__tests__/client.test.ts +0 -0
  232. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/api/client.ts +0 -0
  233. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/api/types.gen.ts +0 -0
  234. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/api/types.ts +0 -0
  235. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/CompareEquityTV.stories.tsx +0 -0
  236. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/CompareEquityTV.tsx +0 -0
  237. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/EquityDrawdownPaneTV.stories.tsx +0 -0
  238. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/EquityDrawdownPaneTV.tsx +0 -0
  239. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/RollingMetricsChartTV.stories.tsx +0 -0
  240. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/RollingMetricsChartTV.tsx +0 -0
  241. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/StrategySignalChartTV.stories.tsx +0 -0
  242. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/StrategySignalChartTV.tsx +0 -0
  243. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/WFOEquityTV.stories.tsx +0 -0
  244. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/WFOEquityTV.tsx +0 -0
  245. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/CompareEquityTV.test.tsx +0 -0
  246. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/EquityDrawdownPaneTV.test.tsx +0 -0
  247. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/RollingMetricsChartTV.test.tsx +0 -0
  248. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/StrategySignalChartTV.test.tsx +0 -0
  249. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/WFOEquityTV.test.tsx +0 -0
  250. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/data.test.ts +0 -0
  251. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/regimeBands.test.ts +0 -0
  252. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/theme.test.ts +0 -0
  253. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/__tests__/trades.test.ts +0 -0
  254. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/data.ts +0 -0
  255. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/regimeBands.ts +0 -0
  256. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/theme.ts +0 -0
  257. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/tv/trades.ts +0 -0
  258. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/visx/AnnualReturnsBarV.tsx +0 -0
  259. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/visx/CorrelationHeatmapV.tsx +0 -0
  260. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/visx/MAEMFEScatterV.tsx +0 -0
  261. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/visx/MonthlyHeatmapV.tsx +0 -0
  262. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/visx/OptimizeHeatmapV.tsx +0 -0
  263. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/visx/OptimizeScatterV.tsx +0 -0
  264. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/visx/Sparkline.stories.tsx +0 -0
  265. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/charts/visx/Sparkline.tsx +0 -0
  266. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/AppFooter.tsx +0 -0
  267. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/AppNav.tsx +0 -0
  268. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/CommandPalette.tsx +0 -0
  269. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/ConfirmActionButton.tsx +0 -0
  270. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/DetailToolbar.tsx +0 -0
  271. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/MetricsSummaryBarV2.stories.tsx +0 -0
  272. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/MetricsSummaryBarV2.tsx +0 -0
  273. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/RootLayout.tsx +0 -0
  274. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/RouteErrorScreen.tsx +0 -0
  275. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/RunLogDetails.tsx +0 -0
  276. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/SettingsToggles.tsx +0 -0
  277. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/ShareCardButton.tsx +0 -0
  278. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/StrategyHero.tsx +0 -0
  279. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/AppFooter.test.tsx +0 -0
  280. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/AppNav.test.tsx +0 -0
  281. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/CommandPalette.test.tsx +0 -0
  282. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/CorrelationHeatmap.test.tsx +0 -0
  283. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/MetricsSummaryBarV2.test.tsx +0 -0
  284. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/RootLayout.test.tsx +0 -0
  285. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/RouteErrorScreen.test.tsx +0 -0
  286. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/SettingsToggles.test.tsx +0 -0
  287. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/ShareCardButton.test.tsx +0 -0
  288. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/ShareCardXButton.test.tsx +0 -0
  289. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/__tests__/responsive-styles.test.tsx +0 -0
  290. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/CollapsibleSection.tsx +0 -0
  291. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/CompareFloatingBar.tsx +0 -0
  292. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/CreateStrategyEntry.tsx +0 -0
  293. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/FilterBar.tsx +0 -0
  294. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/GroupByToggle.tsx +0 -0
  295. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/Heroline.tsx +0 -0
  296. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/RecipeRow.tsx +0 -0
  297. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/RunCompareView.tsx +0 -0
  298. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/RunHistoryTab.tsx +0 -0
  299. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/SavedViews.tsx +0 -0
  300. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/StrategyRow.tsx +0 -0
  301. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/StrategySlidePanel.tsx +0 -0
  302. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/StrategyTable.tsx +0 -0
  303. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/StrategyTableFooter.tsx +0 -0
  304. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/SymbolCoverageTable.tsx +0 -0
  305. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/CollapsibleSection.test.tsx +0 -0
  306. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/CreateStrategyEntry.test.tsx +0 -0
  307. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/FilterBar.test.tsx +0 -0
  308. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/RecipeRow.test.tsx +0 -0
  309. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/RunCompareView.test.tsx +0 -0
  310. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/RunHistoryTab.test.tsx +0 -0
  311. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/StrategyRow.test.tsx +0 -0
  312. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/StrategySlidePanel.test.tsx +0 -0
  313. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/StrategyTable.test.tsx +0 -0
  314. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/StrategyTableFooter.test.tsx +0 -0
  315. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/browser/__tests__/SymbolCoverageTable.test.tsx +0 -0
  316. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/AnnualReturnsBar.tsx +0 -0
  317. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/AnnualSummaryTable.tsx +0 -0
  318. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/CorrelationHeatmap.tsx +0 -0
  319. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/DrawdownDetailChart.tsx +0 -0
  320. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/HoldingPeriodChart.tsx +0 -0
  321. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/MAEMFEScatter.tsx +0 -0
  322. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/MonteCarloChart.tsx +0 -0
  323. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/OptimizeHeatmap.tsx +0 -0
  324. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/OptimizeScatter.tsx +0 -0
  325. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/ReturnDistributionChart.tsx +0 -0
  326. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/VaRChart.tsx +0 -0
  327. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/WFOTimeline.tsx +0 -0
  328. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/WeekdayPerformanceChart.tsx +0 -0
  329. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/__tests__/AnnualSummaryTable.test.tsx +0 -0
  330. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/__tests__/HoldingPeriodChart.test.tsx +0 -0
  331. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/charts/__tests__/MonteCarloChart.test.tsx +0 -0
  332. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/jobs/JobRunnerCard.tsx +0 -0
  333. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/LiveKpiRow.tsx +0 -0
  334. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/LivePositionView.tsx +0 -0
  335. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/LivePositionsTable.tsx +0 -0
  336. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/LiveTab.tsx +0 -0
  337. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/SummaryCard.tsx +0 -0
  338. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/__tests__/LiveKpiRow.test.tsx +0 -0
  339. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/__tests__/LivePositionView.test.tsx +0 -0
  340. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/__tests__/LivePositionsTable.test.tsx +0 -0
  341. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/__tests__/LiveTab.test.tsx +0 -0
  342. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/__tests__/format.test.ts +0 -0
  343. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/live/format.ts +0 -0
  344. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/CarryAdjustedCard.tsx +0 -0
  345. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/CompareTable.tsx +0 -0
  346. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/ISOOSMetrics.tsx +0 -0
  347. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/MetricInfoTip.tsx +0 -0
  348. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/MetricsGrid.tsx +0 -0
  349. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/PortfolioComposer.tsx +0 -0
  350. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/RegimeBreakdownCards.tsx +0 -0
  351. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/SignalQualityBadge.tsx +0 -0
  352. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/SubperiodMetrics.tsx +0 -0
  353. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/__tests__/CompareTable.test.tsx +0 -0
  354. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/__tests__/MetricInfoTip.test.tsx +0 -0
  355. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/__tests__/MetricsGrid.hidden.test.tsx +0 -0
  356. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/__tests__/MetricsGrid.sentinel.test.tsx +0 -0
  357. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/__tests__/MetricsGrid.tooltip.test.tsx +0 -0
  358. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/__tests__/SignalQualityBadge.test.tsx +0 -0
  359. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/__tests__/SubperiodMetrics.test.tsx +0 -0
  360. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/__tests__/evaluateGood.test.ts +0 -0
  361. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/metrics/evaluate.ts +0 -0
  362. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/trades/TradeTable.tsx +0 -0
  363. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/trades/__tests__/TradeTable.test.tsx +0 -0
  364. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/tuning/DuplicateStrategyCard.tsx +0 -0
  365. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/tuning/TuningPanel.tsx +0 -0
  366. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/tuning/__tests__/DuplicateStrategyCard.test.tsx +0 -0
  367. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/components/tuning/__tests__/TuningPanel.test.tsx +0 -0
  368. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/constants/__tests__/metricDefinitions.test.ts +0 -0
  369. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/constants/helpLinks.ts +0 -0
  370. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/constants/metricDefinitions.ts +0 -0
  371. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/constants/runSource.ts +0 -0
  372. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/contexts/DashboardContext.tsx +0 -0
  373. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/contexts/dashboardConstants.ts +0 -0
  374. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/__tests__/definedTokens.test.ts +0 -0
  375. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/__tests__/noHardcodedColors.test.ts +0 -0
  376. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/__tests__/tokens.contrast.test.ts +0 -0
  377. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/a11y.css +0 -0
  378. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Button.tsx +0 -0
  379. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Card.tsx +0 -0
  380. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/ChartDataTable.tsx +0 -0
  381. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Chip.tsx +0 -0
  382. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/ConfirmDialog.tsx +0 -0
  383. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Divider.tsx +0 -0
  384. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/ErrorBanner.tsx +0 -0
  385. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/KeyValue.tsx +0 -0
  386. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Loading.tsx +0 -0
  387. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/OverflowMenu.tsx +0 -0
  388. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Pill.stories.tsx +0 -0
  389. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Pill.tsx +0 -0
  390. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/SectionHeader.tsx +0 -0
  391. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/SortHeaderCell.tsx +0 -0
  392. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Stat.stories.tsx +0 -0
  393. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Stat.tsx +0 -0
  394. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/TabBar.tsx +0 -0
  395. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/Toolbar.tsx +0 -0
  396. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/__tests__/ChartDataTable.test.tsx +0 -0
  397. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/__tests__/ConfirmDialog.test.tsx +0 -0
  398. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/__tests__/ErrorBanner.test.tsx +0 -0
  399. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/__tests__/Loading.test.tsx +0 -0
  400. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/__tests__/OverflowMenu.test.tsx +0 -0
  401. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/__tests__/Pill.test.tsx +0 -0
  402. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/__tests__/SortHeaderCell.test.tsx +0 -0
  403. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/__tests__/TabBar.test.tsx +0 -0
  404. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/index.ts +0 -0
  405. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/primitives/srOnly.ts +0 -0
  406. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/tokens.css +0 -0
  407. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/design/useChartTheme.ts +0 -0
  408. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useDocumentTitle.test.tsx +0 -0
  409. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useEquityViewport.test.ts +0 -0
  410. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useFetchByKey.test.ts +0 -0
  411. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useJobRunner.test.tsx +0 -0
  412. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useLiveAvailability.test.tsx +0 -0
  413. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useOrphanRuns.test.tsx +0 -0
  414. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useRunBacktest.test.tsx +0 -0
  415. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useScrollRestoration.test.tsx +0 -0
  416. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useSparklineCache.test.tsx +0 -0
  417. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useStarredStrategies.test.ts +0 -0
  418. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useStrategyHistorical.test.tsx +0 -0
  419. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useStrategyList.test.tsx +0 -0
  420. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useSyncedTimeRange.test.tsx +0 -0
  421. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useTheme.test.tsx +0 -0
  422. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useViewerSettings.lang.test.tsx +0 -0
  423. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/__tests__/useViewerSettings.shared.test.tsx +0 -0
  424. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useBacktestData.ts +0 -0
  425. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useDebounce.ts +0 -0
  426. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useDocumentTitle.ts +0 -0
  427. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useEquityViewport.ts +0 -0
  428. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useFetchByKey.ts +0 -0
  429. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useIdeasList.ts +0 -0
  430. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useJobRunner.ts +0 -0
  431. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useLiveAvailability.ts +0 -0
  432. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useLiveList.ts +0 -0
  433. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useOrphanRuns.ts +0 -0
  434. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useRecentStrategies.ts +0 -0
  435. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useScrollRestoration.ts +0 -0
  436. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useSparklineCache.ts +0 -0
  437. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useStarredStrategies.ts +0 -0
  438. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useStrategyHistorical.ts +0 -0
  439. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useStrategyList.ts +0 -0
  440. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useSyncedTimeRange.ts +0 -0
  441. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/hooks/useTheme.ts +0 -0
  442. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/i18n/__tests__/strings.test.ts +0 -0
  443. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/i18n/strings.ts +0 -0
  444. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/annualSummary.test.ts +0 -0
  445. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/benchmark.test.ts +0 -0
  446. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/bestSharpe.test.ts +0 -0
  447. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/correlation.test.ts +0 -0
  448. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/distribution.test.ts +0 -0
  449. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/drawdown.test.ts +0 -0
  450. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/format.test.ts +0 -0
  451. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/holdingPeriod.test.ts +0 -0
  452. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/liveEquity.test.ts +0 -0
  453. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/metricLabel.test.ts +0 -0
  454. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/monteCarlo.properties.test.ts +0 -0
  455. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/monteCarlo.test.ts +0 -0
  456. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/optimizeHeatmap.test.ts +0 -0
  457. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/paramImportance.test.ts +0 -0
  458. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/portfolio.test.ts +0 -0
  459. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/recipes.test.ts +0 -0
  460. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/rolling.test.ts +0 -0
  461. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/searchParams.test.ts +0 -0
  462. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/searchStrategies.test.ts +0 -0
  463. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/sentinel.test.ts +0 -0
  464. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/shareCard.test.ts +0 -0
  465. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/shareCardMulti.test.ts +0 -0
  466. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/shareTweet.test.ts +0 -0
  467. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/subperiod.test.ts +0 -0
  468. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/symbolStats.test.ts +0 -0
  469. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/walkForward.test.ts +0 -0
  470. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/__tests__/weekday.test.ts +0 -0
  471. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/annualSummary.ts +0 -0
  472. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/assetClass.ts +0 -0
  473. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/benchmark.ts +0 -0
  474. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/bestSharpe.ts +0 -0
  475. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/correlation.ts +0 -0
  476. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/csv.ts +0 -0
  477. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/distribution.ts +0 -0
  478. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/drawdown.ts +0 -0
  479. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/exportPng.ts +0 -0
  480. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/format.ts +0 -0
  481. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/holdingPeriod.ts +0 -0
  482. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/liveEquity.ts +0 -0
  483. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/metricLabel.ts +0 -0
  484. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/monteCarlo.ts +0 -0
  485. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/optimizeHeatmap.ts +0 -0
  486. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/paramImportance.ts +0 -0
  487. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/portfolio.ts +0 -0
  488. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/recipes.ts +0 -0
  489. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/rolling.ts +0 -0
  490. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/searchParams.ts +0 -0
  491. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/searchStrategies.ts +0 -0
  492. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/sentinel.ts +0 -0
  493. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/shareCard.ts +0 -0
  494. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/shareTweet.ts +0 -0
  495. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/subperiod.ts +0 -0
  496. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/symbolStats.ts +0 -0
  497. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/walkForward.ts +0 -0
  498. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/lib/weekday.ts +0 -0
  499. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/main.tsx +0 -0
  500. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/mock/btData.ts +0 -0
  501. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/BrowsePage.tsx +0 -0
  502. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/ComparePage.tsx +0 -0
  503. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/DetailPage.tsx +0 -0
  504. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/IdeasPage.tsx +0 -0
  505. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/LivePage.tsx +0 -0
  506. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/MaintenancePage.tsx +0 -0
  507. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/ReportPage.tsx +0 -0
  508. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/RunsPage.tsx +0 -0
  509. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/__tests__/BrowsePage.test.tsx +0 -0
  510. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/__tests__/ComparePage.test.tsx +0 -0
  511. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/__tests__/DetailPage.test.tsx +0 -0
  512. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/__tests__/ReportPage.test.tsx +0 -0
  513. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/pages/__tests__/RunsPage.test.tsx +0 -0
  514. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/router.tsx +0 -0
  515. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/BacktestScreen.stories.tsx +0 -0
  516. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/BacktestScreen.tsx +0 -0
  517. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/BrowseScreen.tsx +0 -0
  518. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/CompareScreen.stories.tsx +0 -0
  519. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/CompareScreen.tsx +0 -0
  520. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/ISOOSScreen.tsx +0 -0
  521. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/IdeasScreen.stories.tsx +0 -0
  522. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/IdeasScreen.tsx +0 -0
  523. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/LiveScreen.stories.tsx +0 -0
  524. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/LiveScreen.tsx +0 -0
  525. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/MaintenanceScreen.tsx +0 -0
  526. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/OptimizeScreen.stories.tsx +0 -0
  527. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/OptimizeScreen.tsx +0 -0
  528. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/StrategyScreen.tsx +0 -0
  529. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/WFOScreen.stories.tsx +0 -0
  530. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/WFOScreen.tsx +0 -0
  531. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/__tests__/BacktestScreen.test.tsx +0 -0
  532. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/__tests__/CompareScreen.test.tsx +0 -0
  533. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/__tests__/ISOOSScreen.test.tsx +0 -0
  534. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/__tests__/LiveScreen.test.tsx +0 -0
  535. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/__tests__/MaintenanceScreen.test.tsx +0 -0
  536. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/__tests__/OptimizeScreen.test.tsx +0 -0
  537. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/__tests__/WFOScreen.test.tsx +0 -0
  538. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/screens/strategy/SignalChartCard.tsx +0 -0
  539. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/src/test-setup.ts +0 -0
  540. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/tsconfig.app.json +0 -0
  541. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/tsconfig.e2e.json +0 -0
  542. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/tsconfig.json +0 -0
  543. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/tsconfig.node.json +0 -0
  544. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/frontend/vite.config.ts +0 -0
  545. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/lighthouserc.json +0 -0
  546. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/release.sh +0 -0
  547. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/README.en.md +0 -0
  548. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/README.md +0 -0
  549. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/__init__.py +0 -0
  550. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/__init__.py +0 -0
  551. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/compatibility_matrix.py +0 -0
  552. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/ideas_defs.py +0 -0
  553. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/pseudo_backtest.py +0 -0
  554. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/pseudo_grid.py +0 -0
  555. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/pseudo_wfo.py +0 -0
  556. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/strategy_defs.py +0 -0
  557. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/synthetic_ohlcv.py +0 -0
  558. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/_generators/writers.py +0 -0
  559. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/build_samples.py +0 -0
  560. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/ideas/ideas.json +0 -0
  561. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/results/backtest_results.db +0 -0
  562. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/strategies/bbands_breakout_v1.json +0 -0
  563. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/strategies/donchian_turtle_v1.json +0 -0
  564. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/strategies/ema_adx_macd_v1.json +0 -0
  565. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/strategies/macd_crossover_v1.json +0 -0
  566. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/strategies/range_reversion_v1.json +0 -0
  567. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/strategies/rsi_reversion_v1.json +0 -0
  568. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/strategies/sma_crossover_v1.json +0 -0
  569. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/data/strategies/supertrend_adx_v1.json +0 -0
  570. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/samples/sample-forge/forge.yaml +0 -0
  571. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/scripts/compare_sqlite_dump.py +0 -0
  572. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/scripts/generate_openapi.py +0 -0
  573. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/scripts/generate_thirdparty_js.py +0 -0
  574. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/scripts/verify_build_artifacts.py +0 -0
  575. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/app.py +0 -0
  576. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/cli.py +0 -0
  577. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/db.py +0 -0
  578. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/dependencies.py +0 -0
  579. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/errors.py +0 -0
  580. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/forge_config.py +0 -0
  581. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/log_sanitize.py +0 -0
  582. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/repositories/__init__.py +0 -0
  583. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/repositories/backtest_results.py +0 -0
  584. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/repositories/ideas.py +0 -0
  585. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/repositories/live.py +0 -0
  586. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/repositories/optimization.py +0 -0
  587. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/repositories/strategies.py +0 -0
  588. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/__init__.py +0 -0
  589. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/historical.py +0 -0
  590. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/ideas.py +0 -0
  591. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/jobs.py +0 -0
  592. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/live.py +0 -0
  593. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/optimize.py +0 -0
  594. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/results.py +0 -0
  595. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/routers/wfo.py +0 -0
  596. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/__init__.py +0 -0
  597. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/health.py +0 -0
  598. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/historical.py +0 -0
  599. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/ideas.py +0 -0
  600. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/live.py +0 -0
  601. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/maintenance.py +0 -0
  602. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/optimize.py +0 -0
  603. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/results.py +0 -0
  604. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/strategies.py +0 -0
  605. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/schemas/wfo.py +0 -0
  606. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/services/__init__.py +0 -0
  607. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/services/backtest.py +0 -0
  608. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/services/historical.py +0 -0
  609. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/services/live.py +0 -0
  610. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/services/tuning.py +0 -0
  611. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/services/walk_forward.py +0 -0
  612. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/SortHeaderCell-CetYtnjX.js +0 -0
  613. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/SortHeaderCell-CetYtnjX.js.map +0 -0
  614. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/fonts-DJsrEZjK.css +0 -0
  615. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/format-D0fEne3x.js +0 -0
  616. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/format-D0fEne3x.js.map +0 -0
  617. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/index-ngPg-0Y0.css +0 -0
  618. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/inter-tight-latin-400-normal-BLrFJfvD.woff +0 -0
  619. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/inter-tight-latin-400-normal-iW8qmuJY.woff2 +0 -0
  620. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/inter-tight-latin-500-normal-BFXNXuvF.woff2 +0 -0
  621. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/inter-tight-latin-500-normal-pobXraBK.woff +0 -0
  622. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/inter-tight-latin-600-normal-BgSTtRxb.woff2 +0 -0
  623. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/inter-tight-latin-600-normal-D7bG6gX1.woff +0 -0
  624. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  625. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  626. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/react-CuMkScR3.js +0 -0
  627. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/react-CuMkScR3.js.map +0 -0
  628. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/react-router-CU9OAEs1.js +0 -0
  629. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/react-router-CU9OAEs1.js.map +0 -0
  630. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/rolldown-runtime-C0phanGV.js +0 -0
  631. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/source-serif-4-latin-600-normal-DMD1h6_f.woff +0 -0
  632. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/source-serif-4-latin-600-normal-DouSKlru.woff2 +0 -0
  633. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/tv-D3Zm-VpQ.js +0 -0
  634. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/tv-D3Zm-VpQ.js.map +0 -0
  635. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/useDocumentTitle-DPighAM_.js +0 -0
  636. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/useDocumentTitle-DPighAM_.js.map +0 -0
  637. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/visx-HscrFEDZ.js +0 -0
  638. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/assets/visx-HscrFEDZ.js.map +0 -0
  639. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/favicon.svg +0 -0
  640. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/src/alpha_visualizer/static/icons.svg +0 -0
  641. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/__init__.py +0 -0
  642. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/conftest.py +0 -0
  643. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/factories.py +0 -0
  644. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/fixtures/build_e2e_fixture.py +0 -0
  645. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/repositories/__init__.py +0 -0
  646. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/repositories/test_backtest_results_repo.py +0 -0
  647. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/repositories/test_ideas_reader.py +0 -0
  648. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/repositories/test_live_repo.py +0 -0
  649. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/repositories/test_optimization_repo.py +0 -0
  650. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/repositories/test_strategies_repo.py +0 -0
  651. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/__init__.py +0 -0
  652. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_db_mode_write_paths.py +0 -0
  653. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_forge_yaml_integration.py +0 -0
  654. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_historical.py +0 -0
  655. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_ideas.py +0 -0
  656. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_jobs.py +0 -0
  657. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_live.py +0 -0
  658. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_optimize.py +0 -0
  659. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_results.py +0 -0
  660. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_sparkline.py +0 -0
  661. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_strategies.py +0 -0
  662. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_strategies_source.py +0 -0
  663. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_strategy_duplicate.py +0 -0
  664. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/routers/test_wfo.py +0 -0
  665. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/samples/__init__.py +0 -0
  666. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/samples/test_pseudo_backtest.py +0 -0
  667. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/samples/test_pseudo_grid.py +0 -0
  668. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/samples/test_pseudo_wfo.py +0 -0
  669. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/samples/test_sample_forge.py +0 -0
  670. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/samples/test_strategy_defs.py +0 -0
  671. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/samples/test_synthetic_ohlcv.py +0 -0
  672. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/samples/test_writers.py +0 -0
  673. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/schemas/__init__.py +0 -0
  674. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/schemas/test_schemas.py +0 -0
  675. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/services/__init__.py +0 -0
  676. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/services/test_backtest.py +0 -0
  677. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/services/test_backtest_properties.py +0 -0
  678. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/services/test_historical.py +0 -0
  679. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/services/test_live.py +0 -0
  680. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/services/test_tuning.py +0 -0
  681. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/services/test_wfo.py +0 -0
  682. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/test_app.py +0 -0
  683. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/test_cli.py +0 -0
  684. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/test_compare_sqlite_dump.py +0 -0
  685. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/test_db.py +0 -0
  686. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/test_dependencies.py +0 -0
  687. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/test_errors.py +0 -0
  688. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/test_forge_config.py +0 -0
  689. {alpha_visualizer-1.3.0 → alpha_visualizer-1.3.2}/tests/test_log_sanitize.py +0 -0
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/services/forge_cli.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- ['1', 'FORGE_CONFIG', 'FORGE_NONINTERACTIVE', 'forge', 'forge.yaml', '{', '}', '~']
4
+ ['1', 'FORGE_CONFIG', 'FORGE_NONINTERACTIVE', 'alpha-forge', 'eula', 'forge.yaml', 'no such command', '{', '}', '~']
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/__init__.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- ['1.3.0']
4
+ ['1.3.2']
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/routers/maintenance.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- [400, 900, '--dry-run', '--json', '--strategy', '--vacuum', '-y', 'backtest', 'backtest_rows', 'bytes_after', 'bytes_before', 'count', 'deleted', 'engine', 'no such command', 'optimization_rows', 'orphans', 'prune-orphans', 'strategy_ids', 'total_bytes', 'vacuum_error']
4
+ [400, 900, '--dry-run', '--json', '--strategy', '--vacuum', '-y', 'backtest', 'backtest_rows', 'bytes_after', 'bytes_before', 'count', 'deleted', 'engine', 'optimization_rows', 'orphans', 'prune-orphans', 'strategy_ids', 'total_bytes', 'vacuum_error']
@@ -11,7 +11,16 @@ alpha-visualizer の全バージョン変更履歴です。
11
11
  _(EN) Entries below are generated from Conventional Commits (Japanese). Group names: 新機能 = Features, バグ修正 = Bug fixes, リファクタリング = Refactoring, パフォーマンス改善 = Performance, ドキュメント = Docs, テスト = Tests, その他 = Chore. Breaking commits are tagged 破壊的変更._
12
12
 
13
13
 
14
- ## [unreleased]
14
+ ## [1.3.1] - 2026-08-01
15
+
16
+
17
+ ### バグ修正
18
+
19
+ - forge CLI の実行ファイル名を alpha-forge に修正して実行系機能を復旧 (#461)
20
+
21
+
22
+
23
+ ## [1.3.0] - 2026-08-01
15
24
 
16
25
 
17
26
  ### CI/CD
@@ -28,12 +37,27 @@ _(EN) Entries below are generated from Conventional Commits (Japanese). Group na
28
37
  - UI 文言の平易化・統一(snake_case 露出/独自用語/CLI 前提文言/表記ゆれ) (#439)
29
38
 
30
39
 
40
+ - PyPI メタデータを更新(Production/Stable・Python 3.12–3.14・Doc URL 英語入口) (#457)
41
+
42
+
43
+ - API 境界の小粒改善(strategy_id 規約統一・/health の mask_home・WFO/Optimize 遅延フェッチ) (#456)
44
+
45
+
46
+ - CodeQL py/empty-except 指摘に対応(フォールバック意図のコメントを明記) (#459)
47
+
48
+
49
+ - audit-licenses の DEV_ONLY を新 dev 依存に追従し THIRDPARTY_LICENSES.txt を再生成 (#460)
50
+
51
+
31
52
 
32
53
  ### ドキュメント
33
54
 
34
55
  - README に同梱サンプルの導線・Live/Ideas スクショ・FAQ リンクを追加する (#410)
35
56
 
36
57
 
58
+ - CHANGELOG からリリース作業ノイズを除外し破壊的変更の履歴と英語注記を追加 (#458)
59
+
60
+
37
61
 
38
62
  ### バグ修正
39
63
 
@@ -187,6 +211,9 @@ _(EN) Entries below are generated from Conventional Commits (Japanese). Group na
187
211
  - 最適化ビューにパラメータ重要度(Spearman 順位相関)バーを追加 (#454)
188
212
 
189
213
 
214
+ - 取引一覧の行クリックで該当期間へチャートジャンプ(共有 viewport + 概要タブ切替) (#455)
215
+
216
+
190
217
 
191
218
  ## [1.2.2] - 2026-07-29
192
219
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alpha-visualizer
3
- Version: 1.3.0
3
+ Version: 1.3.2
4
4
  Summary: Web visualization tool for AlphaForge backtest results
5
5
  Project-URL: Homepage, https://github.com/alforge-labs/alpha-visualizer
6
6
  Project-URL: Repository, https://github.com/alforge-labs/alpha-visualizer
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "alpha-visualizer",
5
5
  "description": "AlphaForge バックテスト結果の Web 可視化ツール",
6
- "version": "1.3.0"
6
+ "version": "1.3.2"
7
7
  },
8
8
  "paths": {
9
9
  "/api/results": {
@@ -68,11 +68,13 @@ describe('extractApiErrorDetail (issue #301)', () => {
68
68
 
69
69
  describe('messageForApiErrorCode (issue #358)', () => {
70
70
  const raw =
71
- 'API 503: {"detail":"forge コマンドが見つかりません。AlphaForge を導入してください / forge command not found in PATH. Install AlphaForge — https://alforgelabs.com","code":"forge_cli_not_found"}'
71
+ 'API 503: {"detail":"alpha-forge コマンドが見つかりません。AlphaForge を導入してください / alpha-forge command not found in PATH. Install AlphaForge — https://alforgelabs.com","code":"forge_cli_not_found"}'
72
72
 
73
73
  it('maps forge_cli_not_found to a single-language message (ja)', () => {
74
74
  const msg = messageForApiErrorCode(raw, 'ja')
75
- expect(msg).toContain('forge コマンドが見つかりません')
75
+ // PATH 上の実行ファイル名は `alpha-forge`(v0.5.0 で `forge` から改名)。
76
+ // 存在しない `forge` を名指しすると、ユーザーが誤った名前で PATH を確認する。
77
+ expect(msg).toContain('alpha-forge コマンドが見つかりません')
76
78
  expect(msg).not.toContain('not found in PATH')
77
79
  expect(msg).toContain('https://alforgelabs.com')
78
80
  })
@@ -72,8 +72,8 @@ export function messageForApiErrorCode(
72
72
  const code = extractApiErrorCode(raw)
73
73
  if (code === 'forge_cli_not_found') {
74
74
  return L(
75
- 'forge コマンドが見つかりません。AlphaForge を導入してください — https://alforgelabs.com',
76
- 'forge command not found in PATH. Install AlphaForge — https://alforgelabs.com',
75
+ 'alpha-forge コマンドが見つかりません。AlphaForge を導入してください — https://alforgelabs.com',
76
+ 'alpha-forge command not found in PATH. Install AlphaForge — https://alforgelabs.com',
77
77
  )
78
78
  }
79
79
  return null
@@ -63,7 +63,7 @@ describe('MaintenancePage error normalization (review: Important 1)', () => {
63
63
  // サーバーの detail は curl 利用者向けに日英連結のままだが、UI では
64
64
  // 機械可読 code から表示言語のみの文言へ写像する(issue #358)。
65
65
  const rawMessage =
66
- 'API 503: {"detail":"forge コマンドが見つかりません。AlphaForge を導入してください / forge command not found in PATH. Install AlphaForge — https://alforgelabs.com","code":"forge_cli_not_found"}'
66
+ 'API 503: {"detail":"alpha-forge コマンドが見つかりません。AlphaForge を導入してください / alpha-forge command not found in PATH. Install AlphaForge — https://alforgelabs.com","code":"forge_cli_not_found"}'
67
67
  vi.mocked(api.listOrphanRuns).mockRejectedValue(
68
68
  new ApiError(rawMessage, 503, '/api/maintenance/orphan-runs'),
69
69
  )
@@ -76,7 +76,7 @@ describe('MaintenancePage error normalization (review: Important 1)', () => {
76
76
 
77
77
  const alert = await waitFor(() => screen.getByRole('alert'))
78
78
  // 表示言語(既定 ja)の文言だけが出る(日英連結を出さない)
79
- expect(alert.textContent).toContain('forge コマンドが見つかりません')
79
+ expect(alert.textContent).toContain('alpha-forge コマンドが見つかりません')
80
80
  expect(alert.textContent).not.toContain('not found in PATH')
81
81
  // AlphaForge への導線 URL は維持する
82
82
  expect(alert.textContent).toContain('alforgelabs.com')
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "alpha-visualizer"
3
- version = "1.3.0"
3
+ version = "1.3.2"
4
4
  description = "Web visualization tool for AlphaForge backtest results"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -93,7 +93,7 @@ dev = [
93
93
  ]
94
94
 
95
95
  [tool.bumpversion]
96
- current_version = "1.3.0"
96
+ current_version = "1.3.2"
97
97
  commit = true
98
98
  message = "chore: バージョン {new_version} にバンプ"
99
99
  tag = true
@@ -1,3 +1,3 @@
1
1
  """alpha-visualizer: AlphaForge バックテスト結果の Web 可視化ツール"""
2
2
 
3
- __version__ = "1.3.0"
3
+ __version__ = "1.3.2"
@@ -27,11 +27,11 @@ from alpha_visualizer.schemas.maintenance import (
27
27
  )
28
28
  from alpha_visualizer.services.forge_cli import (
29
29
  FORGE_NOT_FOUND_MESSAGE,
30
- FORGE_SUBCOMMAND_NOT_FOUND_MESSAGE,
31
30
  build_forge_env,
32
31
  mask_home,
33
32
  parse_json_lenient,
34
33
  resolve_forge_exe,
34
+ translate_forge_failure,
35
35
  )
36
36
 
37
37
  logger = logging.getLogger(__name__)
@@ -65,12 +65,12 @@ def _run_forge(argv: list[str], forge_cfg: ForgeConfig, timeout: int) -> dict[st
65
65
 
66
66
  if proc.returncode != 0:
67
67
  # 空一覧を返して「掃除済み」と誤読させてはいけない
68
+ # 既知の失敗(EULA 未同意 / forge が古くサブコマンドを持たない)は、
69
+ # 生の Click 出力ではなく次の一歩を示す案内に変換する。
70
+ guidance = translate_forge_failure(proc.stdout or "", proc.stderr or "")
71
+ if guidance is not None:
72
+ raise ExternalProcessError(guidance)
68
73
  raw = proc.stderr or proc.stdout or ""
69
- # forge は導入済みだがバージョンが古く prune-orphans を持たないケース。
70
- # Click が出す生の "No such command 'xxx'." をそのまま見せず、更新を
71
- # 促す導線付きメッセージに変換する(判定は大文字小文字を無視)。
72
- if "no such command" in raw.lower():
73
- raise ExternalProcessError(FORGE_SUBCOMMAND_NOT_FOUND_MESSAGE)
74
74
  detail = mask_home(raw.strip())
75
75
  raise ExternalProcessError(f"forge が異常終了しました(exit {proc.returncode}): {detail}")
76
76
 
@@ -38,6 +38,7 @@ from alpha_visualizer.services.forge_cli import (
38
38
  mask_home,
39
39
  parse_json_lenient,
40
40
  resolve_forge_exe,
41
+ translate_forge_failure,
41
42
  )
42
43
 
43
44
  logger = logging.getLogger(__name__)
@@ -187,6 +188,11 @@ def _run_backtest_guarded(
187
188
  ) from exc
188
189
 
189
190
  if proc.returncode != 0:
191
+ # 既知の失敗(EULA 未同意等)は生の Click 出力ではなく次の一歩を示す
192
+ # 案内に変換する。プロンプト本体は stdout に出るため両方を渡す。
193
+ guidance = translate_forge_failure(proc.stdout or "", proc.stderr or "")
194
+ if guidance is not None:
195
+ raise ExternalProcessError(guidance)
190
196
  # 成功時 log_tail と同じ末尾丸め+ホームパスマスクを通し、
191
197
  # 長大なトレースバックでレスポンスが膨らまないようにする。
192
198
  detail = (
@@ -52,6 +52,7 @@ from alpha_visualizer.services.forge_cli import (
52
52
  build_forge_env,
53
53
  mask_home,
54
54
  resolve_forge_exe,
55
+ translate_forge_failure,
55
56
  )
56
57
  from alpha_visualizer.services.tuning import build_duplicate_file, build_override_file
57
58
 
@@ -404,7 +405,11 @@ def _delegate_forge_strategy_save(
404
405
  log_tail = mask_home("\n".join(tail_lines)) if tail_lines else None
405
406
 
406
407
  if proc.returncode != 0:
407
- raise ExternalProcessError(log_tail or failure_message)
408
+ # 既知の失敗(EULA 未同意等)は生の Click 出力ではなく次の一歩を示す
409
+ # 案内に変換する。forge の検証エラーは従来どおりそのまま表面化させる
410
+ # (スキーマの SSoT は forge 側にあるため)。
411
+ guidance = translate_forge_failure(proc.stdout or "", proc.stderr or "")
412
+ raise ExternalProcessError(guidance or log_tail or failure_message)
408
413
  return log_tail
409
414
 
410
415
 
@@ -16,8 +16,8 @@ from alpha_visualizer.forge_config import ForgeConfig
16
16
  # forge 未導入ユーザーが実行系機能に触れた瞬間は AlphaForge 導入意欲が
17
17
  # 最も高い接点なので、インストール先への導線を必ず含める。
18
18
  FORGE_NOT_FOUND_MESSAGE = (
19
- "forge コマンドが見つかりません。AlphaForge を導入してください"
20
- " / forge command not found in PATH. Install AlphaForge"
19
+ "alpha-forge コマンドが見つかりません。AlphaForge を導入してください"
20
+ " / alpha-forge command not found in PATH. Install AlphaForge"
21
21
  " — https://alforgelabs.com"
22
22
  )
23
23
 
@@ -32,9 +32,47 @@ FORGE_SUBCOMMAND_NOT_FOUND_MESSAGE = (
32
32
  )
33
33
 
34
34
 
35
+ # forge は導入済みだが EULA に同意していないケース。forge は同意プロンプトを
36
+ # 対話で出すが、visualizer は stdin=DEVNULL で起動するため応答できず Click が
37
+ # Abort する(stderr は "Aborted!" のみで、利用者には何も伝わらない)。EULA は
38
+ # 改訂のたびに再同意が必要になるので、初回導入時だけの問題ではない。
39
+ FORGE_EULA_NOT_ACCEPTED_MESSAGE = (
40
+ "AlphaForge の使用許諾契約(EULA)に同意していないため実行できません。"
41
+ "ターミナルで `alpha-forge system doctor` を実行し、EULA に同意してください"
42
+ " / AlphaForge EULA has not been accepted. Run `alpha-forge system doctor`"
43
+ " in a terminal and accept the EULA"
44
+ )
45
+
46
+
47
+ #: AlphaForge CLI の実行ファイル名。v0.5.0 で ``forge`` から改名され、インストーラ
48
+ #: (alforge-labs/install.sh)は旧 ``forge`` symlink を削除する。旧名へのフォール
49
+ #: バックは張らない — ``forge`` は Foundry(Solidity 開発ツール)のコマンド名でも
50
+ #: あり、無関係なバイナリへ backtest 引数を渡す事故のほうが重い。
51
+ FORGE_EXE_NAME = "alpha-forge"
52
+
53
+
35
54
  def resolve_forge_exe() -> str | None:
36
- """PATH 上の forge 実行ファイルを解決する(無ければ None)。"""
37
- return shutil.which("forge")
55
+ """PATH 上の alpha-forge 実行ファイルを解決する(無ければ None)。"""
56
+ return shutil.which(FORGE_EXE_NAME)
57
+
58
+
59
+ def translate_forge_failure(stdout: str, stderr: str) -> str | None:
60
+ """forge の失敗出力を、利用者が次の一歩を踏める案内へ変換する。
61
+
62
+ 該当パターンが無ければ ``None`` を返す。呼び出し側は生の出力にフォール
63
+ バックすること(ここで既定文言に丸めると、原因不明の失敗がすべて同じ
64
+ メッセージになり調査できなくなる)。
65
+
66
+ stdout / stderr を両方受け取るのは、EULA プロンプトが rich パネルとして
67
+ stdout に出る一方、Click の "Aborted!" は stderr に出るため。どちらか
68
+ 片方だけを見る実装では取りこぼす。
69
+ """
70
+ haystack = f"{stdout}\n{stderr}".lower()
71
+ if "eula" in haystack:
72
+ return FORGE_EULA_NOT_ACCEPTED_MESSAGE
73
+ if "no such command" in haystack:
74
+ return FORGE_SUBCOMMAND_NOT_FOUND_MESSAGE
75
+ return None
38
76
 
39
77
 
40
78
  def build_forge_env(forge_cfg: ForgeConfig) -> dict[str, str]:
@@ -34,6 +34,7 @@ from alpha_visualizer.services.forge_cli import (
34
34
  mask_home,
35
35
  parse_json_lenient,
36
36
  resolve_forge_exe,
37
+ translate_forge_failure,
37
38
  )
38
39
 
39
40
  logger = logging.getLogger(__name__)
@@ -629,10 +630,17 @@ class JobManager:
629
630
  await self._finish(record, "cancelled", returncode=proc.returncode)
630
631
  return
631
632
 
633
+ stdout_text = stdout_buf.decode("utf-8", errors="replace")
634
+
632
635
  if proc.returncode != 0:
636
+ # 既知の失敗(EULA 未同意等)は次の一歩を示す案内に変換する。
637
+ # ログ(stderr 由来)だけでは EULA プロンプト本体を拾えないため、
638
+ # stdout も合わせて判定する。
633
639
  _, tail = self.log_since(record.job_id, max(0, record.log_seq - 5))
640
+ log_text = "\n".join(tail)
634
641
  error = (
635
- "\n".join(tail)
642
+ translate_forge_failure(stdout_text, log_text)
643
+ or log_text
636
644
  or "ジョブの実行に失敗しました / Job execution failed"
637
645
  )
638
646
  await self._finish(
@@ -640,7 +648,6 @@ class JobManager:
640
648
  )
641
649
  return
642
650
 
643
- stdout_text = stdout_buf.decode("utf-8", errors="replace")
644
651
  data = parse_json_lenient(stdout_text)
645
652
  result = _compact_result(data) if data is not None else None
646
653
  await self._finish(record, "succeeded", returncode=0, result=result)