auroraview 0.2.19__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 (238) hide show
  1. auroraview-0.2.19/.cargo/config.toml +26 -0
  2. auroraview-0.2.19/.codecov.yml +117 -0
  3. auroraview-0.2.19/.githooks/pre-commit +57 -0
  4. auroraview-0.2.19/.github/ISSUE_TEMPLATE/bug_report.yml +66 -0
  5. auroraview-0.2.19/.github/ISSUE_TEMPLATE/config.yml +6 -0
  6. auroraview-0.2.19/.github/ISSUE_TEMPLATE/feature_request.yml +39 -0
  7. auroraview-0.2.19/.github/actions/build-and-test/action.yml +166 -0
  8. auroraview-0.2.19/.github/actions/build-wheel/action.yml +238 -0
  9. auroraview-0.2.19/.github/actions/cache-setup/action.yml +97 -0
  10. auroraview-0.2.19/.github/actions/setup-auroraview/action.yml +91 -0
  11. auroraview-0.2.19/.github/dependabot.yml +11 -0
  12. auroraview-0.2.19/.github/pull_request_template.md +29 -0
  13. auroraview-0.2.19/.github/workflows/build-wheels.yml +89 -0
  14. auroraview-0.2.19/.github/workflows/ci.yml +276 -0
  15. auroraview-0.2.19/.github/workflows/codeql.yml +33 -0
  16. auroraview-0.2.19/.github/workflows/pr-checks.yml +255 -0
  17. auroraview-0.2.19/.github/workflows/release.yml +161 -0
  18. auroraview-0.2.19/.github/workflows/security-audit.yml +28 -0
  19. auroraview-0.2.19/.gitignore +81 -0
  20. auroraview-0.2.19/.pre-commit-config.yaml +17 -0
  21. auroraview-0.2.19/.python-version +1 -0
  22. auroraview-0.2.19/.release-please-manifest.json +4 -0
  23. auroraview-0.2.19/CHANGELOG.md +415 -0
  24. auroraview-0.2.19/CODEOWNERS +7 -0
  25. auroraview-0.2.19/CODE_OF_CONDUCT.md +17 -0
  26. auroraview-0.2.19/CONTRIBUTING.md +113 -0
  27. auroraview-0.2.19/Cargo.lock +5474 -0
  28. auroraview-0.2.19/Cargo.toml +181 -0
  29. auroraview-0.2.19/LICENSE +22 -0
  30. auroraview-0.2.19/PKG-INFO +752 -0
  31. auroraview-0.2.19/README.md +720 -0
  32. auroraview-0.2.19/README_zh.md +706 -0
  33. auroraview-0.2.19/SECURITY.md +21 -0
  34. auroraview-0.2.19/build_cli.py +80 -0
  35. auroraview-0.2.19/docs/API_MIGRATION_GUIDE.md +188 -0
  36. auroraview-0.2.19/docs/ARCHITECTURE.md +481 -0
  37. auroraview-0.2.19/docs/BACKEND_EXTENSION.md +410 -0
  38. auroraview-0.2.19/docs/BRIDGE_DESIGN.md +309 -0
  39. auroraview-0.2.19/docs/CHANGELOG_QT_IMPROVEMENTS.md +217 -0
  40. auroraview-0.2.19/docs/CHANGELOG_TIMER.md +113 -0
  41. auroraview-0.2.19/docs/CHANGELOG_lifecycle.md +174 -0
  42. auroraview-0.2.19/docs/CIRCULAR_REFERENCE_FIX.md +213 -0
  43. auroraview-0.2.19/docs/CLI.md +153 -0
  44. auroraview-0.2.19/docs/COMPARISON_WITH_PYWEBVIEW.md +231 -0
  45. auroraview-0.2.19/docs/CROSS_PLATFORM_ZERO_DEPENDENCY_SOLUTION.md +540 -0
  46. auroraview-0.2.19/docs/CURRENT_STATUS.md +336 -0
  47. auroraview-0.2.19/docs/CUSTOM_PROTOCOL_COMPLETE_SUMMARY.md +172 -0
  48. auroraview-0.2.19/docs/CUSTOM_PROTOCOL_DESIGN.md +256 -0
  49. auroraview-0.2.19/docs/CUSTOM_PROTOCOL_IMPLEMENTATION_SUMMARY.md +178 -0
  50. auroraview-0.2.19/docs/DCC_INTEGRATION.md +160 -0
  51. auroraview-0.2.19/docs/DCC_INTEGRATION_GUIDE.md +326 -0
  52. auroraview-0.2.19/docs/EVENTTIMER_OPTIMIZATION.md +264 -0
  53. auroraview-0.2.19/docs/IMPLEMENTATION_SUMMARY.md +374 -0
  54. auroraview-0.2.19/docs/IPC_ARCHITECTURE.md +322 -0
  55. auroraview-0.2.19/docs/IPC_METRICS.md +179 -0
  56. auroraview-0.2.19/docs/IPC_SIMD_JSON_MIGRATION.md +188 -0
  57. auroraview-0.2.19/docs/LOCAL_RESOURCE_LOADING.md +450 -0
  58. auroraview-0.2.19/docs/MAYA_FIXES_SUMMARY.md +178 -0
  59. auroraview-0.2.19/docs/MAYA_INTEGRATION.md +312 -0
  60. auroraview-0.2.19/docs/MAYA_INTEGRATION_ISSUES.md +311 -0
  61. auroraview-0.2.19/docs/MAYA_OUTLINER_IMPLEMENTATION.md +188 -0
  62. auroraview-0.2.19/docs/MAYA_SOLUTION.md +293 -0
  63. auroraview-0.2.19/docs/MIME_GUESS_REFACTORING.md +178 -0
  64. auroraview-0.2.19/docs/NUKE_EXIT_FIX.md +264 -0
  65. auroraview-0.2.19/docs/PERFORMANCE_OPTIMIZATION.md +469 -0
  66. auroraview-0.2.19/docs/PHOTOSHOP_AURORAVIEW_INTEGRATION.md +375 -0
  67. auroraview-0.2.19/docs/PHOTOSHOP_INTEGRATION_GUIDE.md +353 -0
  68. auroraview-0.2.19/docs/PHOTOSHOP_INTEGRATION_RESEARCH.md +228 -0
  69. auroraview-0.2.19/docs/PHOTOSHOP_INTEGRATION_SUMMARY.md +220 -0
  70. auroraview-0.2.19/docs/PROJECT_ADVANTAGES.md +222 -0
  71. auroraview-0.2.19/docs/PROJECT_STATUS.md +281 -0
  72. auroraview-0.2.19/docs/PROTOCOL_HANDLER_DESIGN.md +308 -0
  73. auroraview-0.2.19/docs/QT_BEST_PRACTICES.md +187 -0
  74. auroraview-0.2.19/docs/QT_INTEGRATION_PROPOSAL.md +397 -0
  75. auroraview-0.2.19/docs/README.md +283 -0
  76. auroraview-0.2.19/docs/RESEARCH_FLET_PYWEBVIEW.md +332 -0
  77. auroraview-0.2.19/docs/ROADMAP.md +297 -0
  78. auroraview-0.2.19/docs/RUST_ECOSYSTEM_RESEARCH.md +468 -0
  79. auroraview-0.2.19/docs/RUST_SOLVES_DCC_WINDOW_PROBLEMS.md +709 -0
  80. auroraview-0.2.19/docs/SERVICE_DISCOVERY_DESIGN.md +258 -0
  81. auroraview-0.2.19/docs/SERVICE_DISCOVERY_IMPLEMENTATION.md +303 -0
  82. auroraview-0.2.19/docs/SERVO_EVALUATION.md +318 -0
  83. auroraview-0.2.19/docs/SINGLETON_MODE.md +246 -0
  84. auroraview-0.2.19/docs/SPY_PLUS_PLUS_GUIDE.md +332 -0
  85. auroraview-0.2.19/docs/STANDALONE_MODE_FIX.md +332 -0
  86. auroraview-0.2.19/docs/TECHNICAL_DESIGN.md +394 -0
  87. auroraview-0.2.19/docs/THREAD_SAFETY_FIX.md +233 -0
  88. auroraview-0.2.19/docs/TIMER_ARCHITECTURE.md +195 -0
  89. auroraview-0.2.19/docs/TIMER_REFACTORING.md +191 -0
  90. auroraview-0.2.19/docs/WINDOWS_TIMER.md +290 -0
  91. auroraview-0.2.19/docs/WINDOW_CLOSE_ROOT_CAUSE_ANALYSIS.md +325 -0
  92. auroraview-0.2.19/docs/_archive/QUICK_TEST_GUIDE.md +290 -0
  93. auroraview-0.2.19/docs/_archive/TESTING_FRAMEWORKS_GUIDE.md +472 -0
  94. auroraview-0.2.19/docs/_archive/TESTING_SUMMARY.md +274 -0
  95. auroraview-0.2.19/docs/custom_context_menu.md +169 -0
  96. auroraview-0.2.19/docs/event_timer.md +423 -0
  97. auroraview-0.2.19/docs/quick_reference.md +274 -0
  98. auroraview-0.2.19/examples/README_file_protocol.md +145 -0
  99. auroraview-0.2.19/examples/__init__.py +32 -0
  100. auroraview-0.2.19/examples/custom_context_menu_demo.py +204 -0
  101. auroraview-0.2.19/examples/custom_protocol_example.py +240 -0
  102. auroraview-0.2.19/examples/custom_timer_backend_example.py +137 -0
  103. auroraview-0.2.19/examples/local_assets_example.py +155 -0
  104. auroraview-0.2.19/examples/maya_qt_echo_demo.html +205 -0
  105. auroraview-0.2.19/examples/maya_qt_echo_demo.py +195 -0
  106. auroraview-0.2.19/examples/qt_custom_menu_demo.py +160 -0
  107. auroraview-0.2.19/examples/test_api_binding.py +107 -0
  108. auroraview-0.2.19/justfile +390 -0
  109. auroraview-0.2.19/noxfile.py +156 -0
  110. auroraview-0.2.19/pyproject.toml +154 -0
  111. auroraview-0.2.19/python/auroraview/__init__.py +260 -0
  112. auroraview-0.2.19/python/auroraview/__main__.py +131 -0
  113. auroraview-0.2.19/python/auroraview/bridge.py +436 -0
  114. auroraview-0.2.19/python/auroraview/event_timer.py +405 -0
  115. auroraview-0.2.19/python/auroraview/file_protocol.py +93 -0
  116. auroraview-0.2.19/python/auroraview/framework.py +193 -0
  117. auroraview-0.2.19/python/auroraview/qt_integration.py +670 -0
  118. auroraview-0.2.19/python/auroraview/testing/__init__.py +50 -0
  119. auroraview-0.2.19/python/auroraview/testing/assertions.py +145 -0
  120. auroraview-0.2.19/python/auroraview/testing/fixtures.py +113 -0
  121. auroraview-0.2.19/python/auroraview/testing/webview_bot.py +192 -0
  122. auroraview-0.2.19/python/auroraview/timer_backends.py +305 -0
  123. auroraview-0.2.19/python/auroraview/webview.py +1228 -0
  124. auroraview-0.2.19/release-please-config.json +41 -0
  125. auroraview-0.2.19/scripts/build.ps1 +44 -0
  126. auroraview-0.2.19/scripts/dev.ps1 +112 -0
  127. auroraview-0.2.19/scripts/update_api_params.py +84 -0
  128. auroraview-0.2.19/scripts/update_core_pyd.py +70 -0
  129. auroraview-0.2.19/src/assets/html/loading.html +138 -0
  130. auroraview-0.2.19/src/assets/js/core/event_bridge.js +203 -0
  131. auroraview-0.2.19/src/assets/js/features/context_menu.js +25 -0
  132. auroraview-0.2.19/src/assets/js/runtime/emit_event.js +18 -0
  133. auroraview-0.2.19/src/assets/js/runtime/load_url.js +10 -0
  134. auroraview-0.2.19/src/bin/cli.rs +383 -0
  135. auroraview-0.2.19/src/bindings/cli_utils.rs +142 -0
  136. auroraview-0.2.19/src/bindings/ipc.rs +169 -0
  137. auroraview-0.2.19/src/bindings/ipc_metrics.rs +116 -0
  138. auroraview-0.2.19/src/bindings/mod.rs +24 -0
  139. auroraview-0.2.19/src/bindings/service_discovery.rs +384 -0
  140. auroraview-0.2.19/src/bindings/standalone_runner.rs +160 -0
  141. auroraview-0.2.19/src/bindings/timer.rs +191 -0
  142. auroraview-0.2.19/src/bindings/webview.rs +137 -0
  143. auroraview-0.2.19/src/bindings/webview2.rs +136 -0
  144. auroraview-0.2.19/src/ipc/backend.rs +83 -0
  145. auroraview-0.2.19/src/ipc/batch.rs +359 -0
  146. auroraview-0.2.19/src/ipc/dead_letter_queue.rs +272 -0
  147. auroraview-0.2.19/src/ipc/handler.rs +248 -0
  148. auroraview-0.2.19/src/ipc/json.rs +293 -0
  149. auroraview-0.2.19/src/ipc/message_queue.rs +369 -0
  150. auroraview-0.2.19/src/ipc/metrics.rs +269 -0
  151. auroraview-0.2.19/src/ipc/mod.rs +67 -0
  152. auroraview-0.2.19/src/ipc/process.rs +61 -0
  153. auroraview-0.2.19/src/ipc/threaded.rs +246 -0
  154. auroraview-0.2.19/src/lib.rs +252 -0
  155. auroraview-0.2.19/src/metrics.rs +254 -0
  156. auroraview-0.2.19/src/platform/mod.rs +3 -0
  157. auroraview-0.2.19/src/platform/windows/mod.rs +3 -0
  158. auroraview-0.2.19/src/platform/windows/webview2.rs +298 -0
  159. auroraview-0.2.19/src/service_discovery/http_discovery.rs +190 -0
  160. auroraview-0.2.19/src/service_discovery/mdns_service.rs +232 -0
  161. auroraview-0.2.19/src/service_discovery/mod.rs +100 -0
  162. auroraview-0.2.19/src/service_discovery/port_allocator.rs +208 -0
  163. auroraview-0.2.19/src/utils/mod.rs +138 -0
  164. auroraview-0.2.19/src/webview/aurora_view.rs +1235 -0
  165. auroraview-0.2.19/src/webview/backend/custom.rs +263 -0
  166. auroraview-0.2.19/src/webview/backend/mod.rs +245 -0
  167. auroraview-0.2.19/src/webview/backend/native.rs +747 -0
  168. auroraview-0.2.19/src/webview/backend/qt.rs +142 -0
  169. auroraview-0.2.19/src/webview/backend/servo.rs +266 -0
  170. auroraview-0.2.19/src/webview/config.rs +479 -0
  171. auroraview-0.2.19/src/webview/event_loop.rs +558 -0
  172. auroraview-0.2.19/src/webview/js_assets.rs +546 -0
  173. auroraview-0.2.19/src/webview/lifecycle.rs +303 -0
  174. auroraview-0.2.19/src/webview/loading.rs +266 -0
  175. auroraview-0.2.19/src/webview/message_pump.rs +455 -0
  176. auroraview-0.2.19/src/webview/mod.rs +26 -0
  177. auroraview-0.2.19/src/webview/parent_monitor.rs +142 -0
  178. auroraview-0.2.19/src/webview/platform/linux.rs +117 -0
  179. auroraview-0.2.19/src/webview/platform/macos.rs +109 -0
  180. auroraview-0.2.19/src/webview/platform/mod.rs +52 -0
  181. auroraview-0.2.19/src/webview/platform/windows.rs +218 -0
  182. auroraview-0.2.19/src/webview/protocol.rs +235 -0
  183. auroraview-0.2.19/src/webview/protocol_handlers.rs +475 -0
  184. auroraview-0.2.19/src/webview/standalone.rs +380 -0
  185. auroraview-0.2.19/src/webview/timer.rs +326 -0
  186. auroraview-0.2.19/src/webview/webview_inner.rs +1043 -0
  187. auroraview-0.2.19/src/window_utils.rs +296 -0
  188. auroraview-0.2.19/tests/QUICK_REFERENCE.md +62 -0
  189. auroraview-0.2.19/tests/README.md +62 -0
  190. auroraview-0.2.19/tests/config_integration_tests.rs +214 -0
  191. auroraview-0.2.19/tests/conftest.py +107 -0
  192. auroraview-0.2.19/tests/file_protocol_integration_tests.rs +101 -0
  193. auroraview-0.2.19/tests/http_discovery_integration_tests.rs +167 -0
  194. auroraview-0.2.19/tests/ipc_batch_integration_tests.rs +135 -0
  195. auroraview-0.2.19/tests/ipc_json_integration_tests.rs +199 -0
  196. auroraview-0.2.19/tests/ipc_message_queue_integration_tests.rs +129 -0
  197. auroraview-0.2.19/tests/lifecycle_integration_tests.rs +169 -0
  198. auroraview-0.2.19/tests/mdns_integration_tests.rs +123 -0
  199. auroraview-0.2.19/tests/parent_monitor_integration_tests.rs +123 -0
  200. auroraview-0.2.19/tests/port_allocator_integration_tests.rs +200 -0
  201. auroraview-0.2.19/tests/protocol_handlers_integration_tests.rs +581 -0
  202. auroraview-0.2.19/tests/protocol_integration_tests.rs +136 -0
  203. auroraview-0.2.19/tests/pytest.ini +28 -0
  204. auroraview-0.2.19/tests/standalone_integration_tests.rs +256 -0
  205. auroraview-0.2.19/tests/test_api_injection.py +105 -0
  206. auroraview-0.2.19/tests/test_api_injection_timing.py +136 -0
  207. auroraview-0.2.19/tests/test_auto_process_events.py +157 -0
  208. auroraview-0.2.19/tests/test_basic.py +79 -0
  209. auroraview-0.2.19/tests/test_basic_functionality.py +96 -0
  210. auroraview-0.2.19/tests/test_bind_call.py +119 -0
  211. auroraview-0.2.19/tests/test_cli_main.py +177 -0
  212. auroraview-0.2.19/tests/test_cli_new_features.py +151 -0
  213. auroraview-0.2.19/tests/test_context_menu.py +156 -0
  214. auroraview-0.2.19/tests/test_context_menu_standalone.py +145 -0
  215. auroraview-0.2.19/tests/test_custom_protocol.py +171 -0
  216. auroraview-0.2.19/tests/test_emit_fix.py +130 -0
  217. auroraview-0.2.19/tests/test_event_timer.py +548 -0
  218. auroraview-0.2.19/tests/test_file_protocol.py +403 -0
  219. auroraview-0.2.19/tests/test_imports.py +104 -0
  220. auroraview-0.2.19/tests/test_integration.py +158 -0
  221. auroraview-0.2.19/tests/test_js_assets_packaging.py +85 -0
  222. auroraview-0.2.19/tests/test_maya_outliner_example.py +58 -0
  223. auroraview-0.2.19/tests/test_maya_qt_echo_demo.py +149 -0
  224. auroraview-0.2.19/tests/test_native_timer.py +158 -0
  225. auroraview-0.2.19/tests/test_nuke_ipc.py +191 -0
  226. auroraview-0.2.19/tests/test_package_init.py +60 -0
  227. auroraview-0.2.19/tests/test_qt_backend.py +302 -0
  228. auroraview-0.2.19/tests/test_qt_event_processor.py +113 -0
  229. auroraview-0.2.19/tests/test_qt_import_error.py +135 -0
  230. auroraview-0.2.19/tests/test_qt_lifecycle.py +233 -0
  231. auroraview-0.2.19/tests/test_standalone_runner.py +209 -0
  232. auroraview-0.2.19/tests/test_testing_framework.py +63 -0
  233. auroraview-0.2.19/tests/test_timer_integration.py +475 -0
  234. auroraview-0.2.19/tests/test_webview.py +303 -0
  235. auroraview-0.2.19/tests/test_window_dragging.py +79 -0
  236. auroraview-0.2.19/tests/timer_integration_tests.rs +109 -0
  237. auroraview-0.2.19/tests/window_utils_integration_tests.rs +47 -0
  238. auroraview-0.2.19/uv.lock +1127 -0
@@ -0,0 +1,26 @@
1
+ # Cargo configuration for AuroraView
2
+
3
+ # Profile configurations
4
+ [profile.test]
5
+ # Use debug symbols for better test output
6
+ debug = true
7
+ opt-level = 0
8
+
9
+ [profile.dev]
10
+ opt-level = 0
11
+
12
+ [profile.release]
13
+ opt-level = 3
14
+ lto = true
15
+ codegen-units = 1
16
+ strip = true
17
+
18
+ # Build settings
19
+ [build]
20
+ # Use default number of jobs (don't set to 0 as it causes errors)
21
+ # jobs = 0 # Disabled: causes "jobs may not be 0" error
22
+
23
+ # Linker settings for different platforms
24
+ # Note: Do not add rustflags here as it will break CI builds
25
+ # PyO3 handles Python linking automatically
26
+
@@ -0,0 +1,117 @@
1
+ # Codecov Configuration for AuroraView
2
+ # https://docs.codecov.com/docs/codecov-yaml
3
+
4
+ # Coverage targets and thresholds
5
+ coverage:
6
+ precision: 2 # 2 decimal places
7
+ round: down
8
+ range: 70..100 # Green at 70%+, red below
9
+
10
+ status:
11
+ # Overall project coverage
12
+ project:
13
+ default:
14
+ target: 70% # Target coverage for the entire project
15
+ threshold: 2% # Allow 2% drop before failing
16
+ if_ci_failed: error # Fail if CI failed
17
+ informational: false # Block PR if coverage drops
18
+
19
+ # Patch coverage (new code in PR)
20
+ # Note: Some code in native.rs requires GUI environment and cannot be tested in CI
21
+ patch:
22
+ default:
23
+ target: 70% # Lowered due to untestable GUI code in native backend
24
+ threshold: 10% # More lenient for patches with GUI code
25
+ if_ci_failed: error
26
+ informational: true # Don't block PR for patch coverage
27
+
28
+ # Changes coverage (lines changed in PR)
29
+ changes:
30
+ default:
31
+ target: 80%
32
+ threshold: 5%
33
+ if_ci_failed: error
34
+ informational: true # Don't block PR, just inform
35
+
36
+ # Comment configuration
37
+ comment:
38
+ layout: "header, diff, flags, components, footer"
39
+ behavior: default # Update existing comment
40
+ require_changes: false # Always comment
41
+ require_base: false # Comment even without base
42
+ require_head: true # Require head commit
43
+
44
+ # Flag configuration for different test types
45
+ flags:
46
+ # Python coverage
47
+ python:
48
+ paths:
49
+ - python/
50
+ carryforward: true # Carry forward if missing
51
+
52
+ # Rust coverage
53
+ rust:
54
+ paths:
55
+ - src/
56
+ carryforward: true
57
+
58
+ # Unit tests
59
+ unit:
60
+ carryforward: true
61
+
62
+ # Qt tests
63
+ qt:
64
+ carryforward: true
65
+
66
+ # Windows-specific
67
+ windows:
68
+ carryforward: true
69
+
70
+ # Component configuration
71
+ component_management:
72
+ individual_components:
73
+ # Python components
74
+ - component_id: python_core
75
+ name: Python Core
76
+ paths:
77
+ - python/auroraview/*.py
78
+ flag_regexes:
79
+ - python
80
+
81
+ # Rust components
82
+ - component_id: rust_core
83
+ name: Rust Core
84
+ paths:
85
+ - src/**/*.rs
86
+ flag_regexes:
87
+ - rust
88
+
89
+ # Qt integration
90
+ - component_id: qt_integration
91
+ name: Qt Integration
92
+ paths:
93
+ - python/auroraview/qt_integration.py
94
+ flag_regexes:
95
+ - qt
96
+
97
+ # Ignore paths (for project coverage calculation only, not patch coverage)
98
+ ignore:
99
+ - "tests/"
100
+ - "examples/"
101
+ - "docs/"
102
+ - "*.md"
103
+ - "*.toml"
104
+ - "*.yml"
105
+ - "*.yaml"
106
+ - ".github/"
107
+ - "scripts/"
108
+ - "python/auroraview/_version.py" # Auto-generated
109
+
110
+ # GitHub checks
111
+ github_checks:
112
+ annotations: true # Add annotations to PR
113
+
114
+ # Codecov AI (if enabled)
115
+ codecov_ai:
116
+ enabled: true
117
+
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env bash
2
+ # AuroraView pre-commit hook
3
+ # Ensures Python & Rust lint pass before committing.
4
+ # Requires: ruff and cargo available on PATH for their respective checks.
5
+
6
+ set -euo pipefail
7
+
8
+ # Resolve ruff command (prefer direct, fallback to uvx)
9
+ if command -v ruff >/dev/null 2>&1; then
10
+ RUFF_CMD="ruff"
11
+ elif command -v uvx >/dev/null 2>&1; then
12
+ RUFF_CMD="uvx ruff"
13
+ elif command -v uv >/dev/null 2>&1; then
14
+ RUFF_CMD="uvx ruff"
15
+ else
16
+ RUFF_CMD=""
17
+ fi
18
+
19
+ # Detect changed files in index (staged)
20
+ changed_files=$(git diff --cached --name-only --diff-filter=ACM || true)
21
+
22
+ # ---------- Python (ruff) ----------
23
+ if echo "$changed_files" | grep -E '^(python/|tests/).*\.py$' >/dev/null 2>&1; then
24
+ py_changed=$(echo "$changed_files" | grep -E '^(python/|tests/).*\.py$' || true)
25
+
26
+ if [ -z "$RUFF_CMD" ]; then
27
+ echo "[pre-commit] ruff not found (and uv/uvx not available); skipping Python checks"
28
+ else
29
+ echo "[pre-commit] Running ruff format on staged Python files"
30
+ $RUFF_CMD format $py_changed
31
+
32
+ echo "[pre-commit] Running ruff check --fix on staged Python files"
33
+ $RUFF_CMD check --fix $py_changed
34
+
35
+ echo "[pre-commit] Running ruff check (repo-level)"
36
+ $RUFF_CMD check python/ tests/
37
+ fi
38
+ else
39
+ echo "[pre-commit] Skipping ruff (no Python changes staged)"
40
+ fi
41
+
42
+ # ---------- Rust (fmt + clippy) ----------
43
+ if echo "$changed_files" | grep -E '(^src/.*\.rs$|^Cargo\.toml$|^build\.rs$)' >/dev/null 2>&1; then
44
+ if command -v cargo >/dev/null 2>&1; then
45
+ echo "[pre-commit] Running cargo fmt --all -- --check"
46
+ cargo fmt --all -- --check
47
+
48
+ echo "[pre-commit] Running cargo clippy --all-targets --all-features -- -D warnings"
49
+ cargo clippy --all-targets --all-features -- -D warnings
50
+ else
51
+ echo "[pre-commit] cargo not found; skipping Rust checks"
52
+ fi
53
+ else
54
+ echo "[pre-commit] Skipping cargo (no Rust changes staged)"
55
+ fi
56
+
57
+ echo "[pre-commit] OK"
@@ -0,0 +1,66 @@
1
+ name: Bug report
2
+ description: Report a reproducible problem
3
+ labels: [bug]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Thanks for taking the time to report a bug! Please fill out the form below.
9
+ - type: input
10
+ id: version
11
+ attributes:
12
+ label: AuroraView version
13
+ placeholder: e.g. 0.2.4
14
+ validations:
15
+ required: true
16
+ - type: dropdown
17
+ id: os
18
+ attributes:
19
+ label: Operating system
20
+ options:
21
+ - Windows
22
+ - macOS
23
+ - Linux
24
+ validations:
25
+ required: true
26
+ - type: input
27
+ id: python
28
+ attributes:
29
+ label: Python version
30
+ placeholder: e.g. 3.11.9
31
+ - type: textarea
32
+ id: dcc
33
+ attributes:
34
+ label: DCC host and version (if applicable)
35
+ placeholder: e.g. Maya 2023 / Houdini 20 / Nuke 15 / Blender 4.x ...
36
+ - type: textarea
37
+ id: repro
38
+ attributes:
39
+ label: Steps to reproduce
40
+ description: Provide a minimal, complete, and reproducible example
41
+ placeholder: |
42
+ 1. ...
43
+ 2. ...
44
+ 3. ...
45
+ validations:
46
+ required: true
47
+ - type: textarea
48
+ id: expected
49
+ attributes:
50
+ label: Expected behavior
51
+ - type: textarea
52
+ id: actual
53
+ attributes:
54
+ label: Actual behavior and logs/traceback
55
+ - type: checkboxes
56
+ id: checks
57
+ attributes:
58
+ label: Checklist
59
+ options:
60
+ - label: I searched existing issues
61
+ required: true
62
+ - label: I tested on the latest main build (if possible)
63
+ required: false
64
+ - label: I can provide a minimal repro script or project
65
+ required: false
66
+
@@ -0,0 +1,6 @@
1
+ blank_issues_disabled: true
2
+ contact_links:
3
+ - name: Documentation
4
+ url: https://github.com/loonghao/auroraview#readme
5
+ about: Read the README and docs before filing an issue
6
+
@@ -0,0 +1,39 @@
1
+ name: Feature request
2
+ description: Propose an idea to improve AuroraView
3
+ labels: [enhancement]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Thanks for the suggestion! Tell us what problem this would solve and why it matters.
9
+ - type: textarea
10
+ id: problem
11
+ attributes:
12
+ label: Problem statement
13
+ description: What problem are you trying to solve?
14
+ validations:
15
+ required: true
16
+ - type: textarea
17
+ id: proposal
18
+ attributes:
19
+ label: Proposed solution
20
+ description: Describe the solution you'd like
21
+ validations:
22
+ required: true
23
+ - type: textarea
24
+ id: alternatives
25
+ attributes:
26
+ label: Alternatives considered
27
+ - type: textarea
28
+ id: context
29
+ attributes:
30
+ label: Additional context
31
+ - type: checkboxes
32
+ id: scope
33
+ attributes:
34
+ label: Scope & impact
35
+ options:
36
+ - label: Backward compatible
37
+ - label: Requires docs update
38
+ - label: Requires API change
39
+
@@ -0,0 +1,166 @@
1
+ name: 'Build and Test AuroraView'
2
+ description: 'Builds AuroraView extension and runs tests'
3
+
4
+ inputs:
5
+ test-type:
6
+ description: 'Type of tests to run (basic, full, rust, python, benchmark)'
7
+ required: true
8
+ default: 'basic'
9
+ generate-stubs:
10
+ description: 'Whether to generate type stubs'
11
+ required: false
12
+ default: 'true'
13
+ upload-artifacts:
14
+ description: 'Whether to upload test artifacts'
15
+ required: false
16
+ default: 'false'
17
+ artifact-name:
18
+ description: 'Name for uploaded artifacts'
19
+ required: false
20
+ default: 'test-results'
21
+
22
+ outputs:
23
+ build-status:
24
+ description: 'Build status (success/failure)'
25
+ value: ${{ steps.build.outcome }}
26
+ test-status:
27
+ description: 'Test status (success/failure)'
28
+ value: ${{ steps.test.outcome }}
29
+
30
+ runs:
31
+ using: 'composite'
32
+ steps:
33
+ - name: Cache build artifacts
34
+ uses: actions/cache@v4
35
+ with:
36
+ path: |
37
+ target/release/
38
+ target/debug/
39
+ build/
40
+ key: ${{ runner.os }}-build-${{ hashFiles('Cargo.lock') }}-${{ github.sha }}
41
+ restore-keys: |
42
+ ${{ runner.os }}-build-${{ hashFiles('Cargo.lock') }}-
43
+ ${{ runner.os }}-build-
44
+
45
+ - name: Prefetch Cargo crates (retry)
46
+ shell: bash
47
+ run: |
48
+ set -e
49
+ n=0
50
+ until [ "$n" -ge 3 ]; do
51
+ echo "[TRY $((n+1))/3] cargo fetch...";
52
+ CARGO_HTTP_TIMEOUT=600 CARGO_NET_RETRY=10 cargo fetch --locked --verbose && break;
53
+ n=$((n+1));
54
+ echo "[WARN] cargo fetch failed, retrying in 5s..."; sleep 5;
55
+ done
56
+
57
+ - name: Build extension
58
+ id: build
59
+ shell: bash
60
+ run: |
61
+ uv pip install maturin
62
+ if [ "$RUNNER_OS" = "Windows" ]; then
63
+ echo "Building with Windows feature: win-webview2 + ext-module"
64
+ uv run maturin develop --features "win-webview2,ext-module"
65
+ else
66
+ echo "Building with ext-module feature"
67
+ uv run maturin develop --features "ext-module"
68
+ fi
69
+ env:
70
+ RUST_BACKTRACE: 1
71
+ CARGO_HTTP_TIMEOUT: '600'
72
+ CARGO_NET_RETRY: '10'
73
+ CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
74
+
75
+ - name: Install cargo-llvm-cov
76
+ if: inputs.test-type == 'rust' || inputs.test-type == 'full'
77
+ shell: bash
78
+ run: |
79
+ if ! command -v cargo-llvm-cov &> /dev/null; then
80
+ echo "Installing cargo-llvm-cov..."
81
+ cargo install cargo-llvm-cov --locked
82
+ fi
83
+
84
+ - name: Run tests
85
+ id: test
86
+ shell: bash
87
+ run: |
88
+ case "${{ inputs.test-type }}" in
89
+ "basic")
90
+ echo "Running basic import tests..."
91
+ just ci-test-basic
92
+ ;;
93
+ "rust")
94
+ echo "Running Rust tests with coverage..."
95
+ echo " -> Rust integration tests with coverage..."
96
+ # Exclude ipc_batch_integration_tests which requires Python bindings
97
+ cargo llvm-cov --features "test-helpers" --lcov --output-path rust-coverage.lcov \
98
+ --test config_integration_tests \
99
+ --test file_protocol_integration_tests \
100
+ --test http_discovery_integration_tests \
101
+ --test ipc_json_integration_tests \
102
+ --test ipc_message_queue_integration_tests \
103
+ --test lifecycle_integration_tests \
104
+ --test mdns_integration_tests \
105
+ --test parent_monitor_integration_tests \
106
+ --test port_allocator_integration_tests \
107
+ --test protocol_handlers_integration_tests \
108
+ --test protocol_integration_tests \
109
+ --test standalone_integration_tests \
110
+ --test timer_integration_tests \
111
+ --test window_utils_integration_tests
112
+ echo " -> Rust doc tests..."
113
+ cargo test --doc
114
+ ;;
115
+ "python")
116
+ echo "Running Python unit tests..."
117
+ just ci-test-python
118
+ ;;
119
+ "full")
120
+ echo "Running comprehensive test suite..."
121
+ echo " -> Rust integration tests with coverage..."
122
+ # Exclude ipc_batch_integration_tests which requires Python bindings
123
+ cargo llvm-cov --features "test-helpers" --lcov --output-path rust-coverage.lcov \
124
+ --test config_integration_tests \
125
+ --test file_protocol_integration_tests \
126
+ --test http_discovery_integration_tests \
127
+ --test ipc_json_integration_tests \
128
+ --test ipc_message_queue_integration_tests \
129
+ --test lifecycle_integration_tests \
130
+ --test mdns_integration_tests \
131
+ --test parent_monitor_integration_tests \
132
+ --test port_allocator_integration_tests \
133
+ --test protocol_handlers_integration_tests \
134
+ --test protocol_integration_tests \
135
+ --test standalone_integration_tests \
136
+ --test timer_integration_tests \
137
+ --test window_utils_integration_tests
138
+ echo " -> Rust doc tests..."
139
+ cargo test --doc
140
+ echo " -> Python unit tests..."
141
+ just ci-test-python
142
+ echo " -> Basic functionality tests..."
143
+ just ci-test-basic
144
+ echo "[OK] All tests completed"
145
+ ;;
146
+ *)
147
+ echo "[ERROR] Unknown test type: ${{ inputs.test-type }}"
148
+ echo "Available types: basic, rust, python, full"
149
+ exit 1
150
+ ;;
151
+ esac
152
+ env:
153
+ PYTHONUNBUFFERED: 1
154
+
155
+ - name: Upload test artifacts
156
+ if: inputs.upload-artifacts == 'true' && always()
157
+ uses: actions/upload-artifact@v4
158
+ with:
159
+ name: ${{ inputs.artifact-name }}-${{ runner.os }}-${{ github.run_id }}
160
+ path: |
161
+ .pytest_cache/
162
+ htmlcov/
163
+ coverage.xml
164
+ rust-coverage.lcov
165
+ retention-days: 7
166
+