combaero 0.2.0__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.
- combaero-0.2.0/.agents/workflows/bulk-merge-workflow.md +33 -0
- combaero-0.2.0/.agents/workflows/commit-and-push.md +16 -0
- combaero-0.2.0/.agents/workflows/commit-local.md +52 -0
- combaero-0.2.0/.agents/workflows/create-pr.md +26 -0
- combaero-0.2.0/.agents/workflows/merge-and-cleanup.md +35 -0
- combaero-0.2.0/.biomeignore +16 -0
- combaero-0.2.0/.clang-tidy +31 -0
- combaero-0.2.0/.clangd +14 -0
- combaero-0.2.0/.envrc +53 -0
- combaero-0.2.0/.gitignore +112 -0
- combaero-0.2.0/.pre-commit-config.yaml +67 -0
- combaero-0.2.0/.pre-commit-hooks/check_math_constants.py +84 -0
- combaero-0.2.0/.python-version +2 -0
- combaero-0.2.0/.windsurf/workflows/biome-fix-changed.md +33 -0
- combaero-0.2.0/.windsurf/workflows/commit-and-push.md +26 -0
- combaero-0.2.0/.windsurf/workflows/commit-only.md +107 -0
- combaero-0.2.0/.windsurf/workflows/create-pr-and-monitor.md +93 -0
- combaero-0.2.0/.windsurf/workflows/merge-and-cleanup.md +62 -0
- combaero-0.2.0/.windsurf/workflows/ruff-fix-changed.md +40 -0
- combaero-0.2.0/.windsurf/workflows/squash-merge-and-cleanup.md +279 -0
- combaero-0.2.0/CHANGELOG.md +38 -0
- combaero-0.2.0/CLAUDE.md +52 -0
- combaero-0.2.0/CMakeLists.txt +106 -0
- combaero-0.2.0/CONTRIBUTING.md +32 -0
- combaero-0.2.0/GEMINI.md +85 -0
- combaero-0.2.0/LICENSE +41 -0
- combaero-0.2.0/Makefile +122 -0
- combaero-0.2.0/PKG-INFO +88 -0
- combaero-0.2.0/README.md +58 -0
- combaero-0.2.0/benchmarks/NETWORK_SOLVER_BENCHMARK_HISTORY.md +327 -0
- combaero-0.2.0/benchmarks/benchmarks.py +533 -0
- combaero-0.2.0/benchmarks/compare_jacobian_baseline.py +250 -0
- combaero-0.2.0/benchmarks/continuation_benchmark.py +209 -0
- combaero-0.2.0/benchmarks/convergence_benchmark.py +143 -0
- combaero-0.2.0/benchmarks/function_profiling.py +113 -0
- combaero-0.2.0/benchmarks/jacobian_baseline_current.csv +25 -0
- combaero-0.2.0/benchmarks/mach_limit_benchmark.py +168 -0
- combaero-0.2.0/benchmarks/mach_sweep.py +264 -0
- combaero-0.2.0/benchmarks/mach_sweep_network.py +221 -0
- combaero-0.2.0/biome.json +52 -0
- combaero-0.2.0/docs/API_CPP.md +696 -0
- combaero-0.2.0/docs/API_PYTHON.md +594 -0
- combaero-0.2.0/docs/BUILDING.md +67 -0
- combaero-0.2.0/docs/DEVELOPMENT.md +89 -0
- combaero-0.2.0/docs/GUI_TECHNICAL.md +77 -0
- combaero-0.2.0/docs/JACOBIAN_DIFFERENCE_REPORTING.md +197 -0
- combaero-0.2.0/docs/METHODS_REFERENCE.md +56 -0
- combaero-0.2.0/docs/NETWORK_ROADMAP.md +430 -0
- combaero-0.2.0/docs/PACKAGING.md +132 -0
- combaero-0.2.0/docs/REVIEW_NETWORK_GUI.md +1404 -0
- combaero-0.2.0/docs/UNITS.md +921 -0
- combaero-0.2.0/docs/archive/COMPRESSIBLE_FLOW_IMPLEMENTATION.md +194 -0
- combaero-0.2.0/docs/archive/DESIGN_NETWORK_HEAT_TRANSFER.md +661 -0
- combaero-0.2.0/docs/archive/HYGIENE.md +54 -0
- combaero-0.2.0/docs/archive/MACH_LIMIT_BENCHMARK_RESULT.md +63 -0
- combaero-0.2.0/docs/archive/MACH_LIMIT_SOLVER_LIMITS.md +121 -0
- combaero-0.2.0/docs/archive/PYPI_GAP_ANALYSIS.md +57 -0
- combaero-0.2.0/examples/acoustics_example.cpp +232 -0
- combaero-0.2.0/examples/combustion_example.cpp +181 -0
- combaero-0.2.0/examples/combustion_state_example.cpp +240 -0
- combaero-0.2.0/examples/compressible_example.cpp +304 -0
- combaero-0.2.0/examples/cooling_example.cpp +83 -0
- combaero-0.2.0/examples/humidair_example.cpp +145 -0
- combaero-0.2.0/examples/incompressible_example.cpp +239 -0
- combaero-0.2.0/examples/orifice_example.cpp +259 -0
- combaero-0.2.0/examples/stagnation_example.cpp +230 -0
- combaero-0.2.0/examples/thermo_example.cpp +126 -0
- combaero-0.2.0/include/acoustics.h +624 -0
- combaero-0.2.0/include/acoustics_internal.h +66 -0
- combaero-0.2.0/include/area_change.h +170 -0
- combaero-0.2.0/include/can_annular_solvers.h +211 -0
- combaero-0.2.0/include/combustion.h +203 -0
- combaero-0.2.0/include/common_names.h +69 -0
- combaero-0.2.0/include/composition.h +23 -0
- combaero-0.2.0/include/compressible.h +371 -0
- combaero-0.2.0/include/cooling_correlations.h +357 -0
- combaero-0.2.0/include/correlation_status.h +44 -0
- combaero-0.2.0/include/equilibrium.h +40 -0
- combaero-0.2.0/include/friction.h +88 -0
- combaero-0.2.0/include/geometry.h +179 -0
- combaero-0.2.0/include/heat_transfer.h +724 -0
- combaero-0.2.0/include/humidair.h +101 -0
- combaero-0.2.0/include/incompressible.h +329 -0
- combaero-0.2.0/include/materials.h +92 -0
- combaero-0.2.0/include/math_constants.h +29 -0
- combaero-0.2.0/include/orifice.h +451 -0
- combaero-0.2.0/include/registry.h +45 -0
- combaero-0.2.0/include/solver_interface.h +590 -0
- combaero-0.2.0/include/stagnation.h +170 -0
- combaero-0.2.0/include/state.h +289 -0
- combaero-0.2.0/include/thermo.h +109 -0
- combaero-0.2.0/include/thermo_transport_data.h +130 -0
- combaero-0.2.0/include/transport.h +39 -0
- combaero-0.2.0/include/units.h +48 -0
- combaero-0.2.0/include/units_data.h +968 -0
- combaero-0.2.0/include/utils.h +12 -0
- combaero-0.2.0/pyproject.toml +90 -0
- combaero-0.2.0/python/CMakeLists.txt +13 -0
- combaero-0.2.0/python/README.md +379 -0
- combaero-0.2.0/python/combaero/__init__.py +1097 -0
- combaero-0.2.0/python/combaero/_core.cpp +5884 -0
- combaero-0.2.0/python/combaero/_flow_solution.py +98 -0
- combaero-0.2.0/python/combaero/_solver_tools.py +104 -0
- combaero-0.2.0/python/combaero/compressible.py +234 -0
- combaero-0.2.0/python/combaero/heat_transfer.py +393 -0
- combaero-0.2.0/python/combaero/incompressible.py +186 -0
- combaero-0.2.0/python/combaero/network/__init__.py +86 -0
- combaero-0.2.0/python/combaero/network/combustion/__init__.py +9 -0
- combaero-0.2.0/python/combaero/network/combustion/combustion.py +198 -0
- combaero-0.2.0/python/combaero/network/combustion/combustion_result.py +31 -0
- combaero-0.2.0/python/combaero/network/components.py +2512 -0
- combaero-0.2.0/python/combaero/network/diagnostics.py +237 -0
- combaero-0.2.0/python/combaero/network/graph.py +274 -0
- combaero-0.2.0/python/combaero/network/pressure_loss.py +201 -0
- combaero-0.2.0/python/combaero/network/schema.py +199 -0
- combaero-0.2.0/python/combaero/network/solver.py +1761 -0
- combaero-0.2.0/python/combaero/py.typed +0 -0
- combaero-0.2.0/python/combaero/species.py +151 -0
- combaero-0.2.0/python/examples/acoustic_examples.py +263 -0
- combaero-0.2.0/python/examples/axial_staging_combustor_network_example.py +174 -0
- combaero-0.2.0/python/examples/combustion_example.py +133 -0
- combaero-0.2.0/python/examples/combustor_heat_transfer.py +312 -0
- combaero-0.2.0/python/examples/combustor_liner_cooling_network.py +745 -0
- combaero-0.2.0/python/examples/combustor_liner_cooling_standalone.py +437 -0
- combaero-0.2.0/python/examples/combustor_network_example.py +115 -0
- combaero-0.2.0/python/examples/combustor_pressure_loss_example.py +91 -0
- combaero-0.2.0/python/examples/compare_combustor_implementations.py +189 -0
- combaero-0.2.0/python/examples/compressible_flow_example.py +172 -0
- combaero-0.2.0/python/examples/counterflow_effusion_combustor.py +365 -0
- combaero-0.2.0/python/examples/de_laval_nozzle.py +212 -0
- combaero-0.2.0/python/examples/flow_regime_comparison.py +390 -0
- combaero-0.2.0/python/examples/friction_and_pressure_drop_channel.py +207 -0
- combaero-0.2.0/python/examples/gas_turbine_cycle.py +267 -0
- combaero-0.2.0/python/examples/heat_transfer_channel_flow.py +262 -0
- combaero-0.2.0/python/examples/heat_transfer_measurement.py +190 -0
- combaero-0.2.0/python/examples/ic_engine_cycle.py +263 -0
- combaero-0.2.0/python/examples/material_wall_verification.py +99 -0
- combaero-0.2.0/python/examples/network_from_grid.py +277 -0
- combaero-0.2.0/python/examples/plot_utils.py +33 -0
- combaero-0.2.0/python/examples/reactor_design.py +316 -0
- combaero-0.2.0/python/examples/sequential_combustion.py +0 -0
- combaero-0.2.0/python/examples/thermo_properties.py +141 -0
- combaero-0.2.0/python/examples/wall_coupling_simple.py +149 -0
- combaero-0.2.0/python/tests/README.md +27 -0
- combaero-0.2.0/python/tests/test_acoustic_properties.py +381 -0
- combaero-0.2.0/python/tests/test_acoustics.py +193 -0
- combaero-0.2.0/python/tests/test_adapter.py +198 -0
- combaero-0.2.0/python/tests/test_air_properties.py +401 -0
- combaero-0.2.0/python/tests/test_annular_duct_acoustics.py +499 -0
- combaero-0.2.0/python/tests/test_area_change.py +437 -0
- combaero-0.2.0/python/tests/test_can_annular_acoustics.py +454 -0
- combaero-0.2.0/python/tests/test_chamber_mixing.py +192 -0
- combaero-0.2.0/python/tests/test_channel_element_htc.py +259 -0
- combaero-0.2.0/python/tests/test_channel_flow.py +630 -0
- combaero-0.2.0/python/tests/test_channel_jacobians.py +230 -0
- combaero-0.2.0/python/tests/test_channel_roughness.py +196 -0
- combaero-0.2.0/python/tests/test_combustion_elements.py +176 -0
- combaero-0.2.0/python/tests/test_combustion_jacobians.py +158 -0
- combaero-0.2.0/python/tests/test_combustion_lhv.py +44 -0
- combaero-0.2.0/python/tests/test_combustion_smoothing.py +64 -0
- combaero-0.2.0/python/tests/test_combustion_state.py +505 -0
- combaero-0.2.0/python/tests/test_combustor_liner_cooling_coupled.py +71 -0
- combaero-0.2.0/python/tests/test_combustor_network.py +183 -0
- combaero-0.2.0/python/tests/test_combustor_regression.py +481 -0
- combaero-0.2.0/python/tests/test_common_names.py +59 -0
- combaero-0.2.0/python/tests/test_complete_state.py +305 -0
- combaero-0.2.0/python/tests/test_compressible.py +431 -0
- combaero-0.2.0/python/tests/test_continuation_logic.py +82 -0
- combaero-0.2.0/python/tests/test_convective_surface.py +230 -0
- combaero-0.2.0/python/tests/test_cooling_correlations.py +882 -0
- combaero-0.2.0/python/tests/test_diagnostics_schema.py +135 -0
- combaero-0.2.0/python/tests/test_diameter_discharge_coefficient_connection.py +478 -0
- combaero-0.2.0/python/tests/test_effective_area_connection.py +302 -0
- combaero-0.2.0/python/tests/test_energy_boundary.py +563 -0
- combaero-0.2.0/python/tests/test_equivalence_ratio.py +77 -0
- combaero-0.2.0/python/tests/test_expansibility_factor.py +200 -0
- combaero-0.2.0/python/tests/test_flow_network_walls.py +245 -0
- combaero-0.2.0/python/tests/test_friction.py +194 -0
- combaero-0.2.0/python/tests/test_geometry.py +507 -0
- combaero-0.2.0/python/tests/test_gui_export_units.py +91 -0
- combaero-0.2.0/python/tests/test_gui_graph_builder.py +213 -0
- combaero-0.2.0/python/tests/test_gui_schemas.py +83 -0
- combaero-0.2.0/python/tests/test_heat_transfer.py +430 -0
- combaero-0.2.0/python/tests/test_htc_channel_composite.py +369 -0
- combaero-0.2.0/python/tests/test_humidair.py +65 -0
- combaero-0.2.0/python/tests/test_import.py +13 -0
- combaero-0.2.0/python/tests/test_incompressible.py +232 -0
- combaero-0.2.0/python/tests/test_incompressible_highlevel.py +263 -0
- combaero-0.2.0/python/tests/test_inverse_solvers.py +124 -0
- combaero-0.2.0/python/tests/test_jacobian_migration.py +128 -0
- combaero-0.2.0/python/tests/test_mass_boundary_sink.py +93 -0
- combaero-0.2.0/python/tests/test_mass_specific_thermo.py +217 -0
- combaero-0.2.0/python/tests/test_materials.py +391 -0
- combaero-0.2.0/python/tests/test_momentum_chamber.py +195 -0
- combaero-0.2.0/python/tests/test_network_blocks.py +238 -0
- combaero-0.2.0/python/tests/test_network_compressible.py +471 -0
- combaero-0.2.0/python/tests/test_network_flow_reversal.py +135 -0
- combaero-0.2.0/python/tests/test_network_jacobian.py +106 -0
- combaero-0.2.0/python/tests/test_network_scenarios.py +262 -0
- combaero-0.2.0/python/tests/test_network_serialization.py +63 -0
- combaero-0.2.0/python/tests/test_network_solver.py +273 -0
- combaero-0.2.0/python/tests/test_network_validation.py +117 -0
- combaero-0.2.0/python/tests/test_network_validation_edge_cases.py +172 -0
- combaero-0.2.0/python/tests/test_orifice_cd.py +162 -0
- combaero-0.2.0/python/tests/test_orifice_flow.py +452 -0
- combaero-0.2.0/python/tests/test_phi_cpp.py +89 -0
- combaero-0.2.0/python/tests/test_pressure_drop_channel.py +295 -0
- combaero-0.2.0/python/tests/test_pressure_loss.py +497 -0
- combaero-0.2.0/python/tests/test_reforming_equilibrium.py +181 -0
- combaero-0.2.0/python/tests/test_solve_orifice_mdot.py +259 -0
- combaero-0.2.0/python/tests/test_solver_chain_rule.py +118 -0
- combaero-0.2.0/python/tests/test_solver_interface.py +949 -0
- combaero-0.2.0/python/tests/test_solver_methods_stress.py +98 -0
- combaero-0.2.0/python/tests/test_solver_robustness.py +468 -0
- combaero-0.2.0/python/tests/test_solver_timeout.py +103 -0
- combaero-0.2.0/python/tests/test_solver_topology.py +132 -0
- combaero-0.2.0/python/tests/test_submodule_api.py +374 -0
- combaero-0.2.0/python/tests/test_thermal_wall_multilayer.py +108 -0
- combaero-0.2.0/python/tests/test_thermo_props.py +47 -0
- combaero-0.2.0/python/tests/test_thermo_state.py +433 -0
- combaero-0.2.0/python/tests/test_transport.py +69 -0
- combaero-0.2.0/python/tests/test_transport_state.py +392 -0
- combaero-0.2.0/python/tests/test_units_sync.py +117 -0
- combaero-0.2.0/python/tests/test_units_sync_gui.py +60 -0
- combaero-0.2.0/python/tests/test_wall_connection.py +173 -0
- combaero-0.2.0/python/tests/test_wall_coupling.py +159 -0
- combaero-0.2.0/python/tests/test_wall_coupling_integration.py +376 -0
- combaero-0.2.0/ruff.toml +48 -0
- combaero-0.2.0/scripts/README.md +132 -0
- combaero-0.2.0/scripts/bootstrap.sh +27 -0
- combaero-0.2.0/scripts/bulk_merge_safe.sh +111 -0
- combaero-0.2.0/scripts/check-commit-msg.sh +24 -0
- combaero-0.2.0/scripts/check-common-names.sh +58 -0
- combaero-0.2.0/scripts/check-gui-style.sh +30 -0
- combaero-0.2.0/scripts/check-python-style.sh +260 -0
- combaero-0.2.0/scripts/check-source-style.sh +225 -0
- combaero-0.2.0/scripts/check-thermo-header.sh +46 -0
- combaero-0.2.0/scripts/convert_jacobian_csv_to_json.py +61 -0
- combaero-0.2.0/scripts/ensure_venv.py +40 -0
- combaero-0.2.0/scripts/generate_units_md.py +306 -0
- combaero-0.2.0/scripts/run-clang-tidy.sh +43 -0
- combaero-0.2.0/scripts/run-gui.sh +50 -0
- combaero-0.2.0/scripts/run_examples.py +117 -0
- combaero-0.2.0/src/acoustics.cpp +1220 -0
- combaero-0.2.0/src/area_change.cpp +239 -0
- combaero-0.2.0/src/can_annular_solvers.cpp +492 -0
- combaero-0.2.0/src/combustion.cpp +1744 -0
- combaero-0.2.0/src/composition.cpp +115 -0
- combaero-0.2.0/src/compressible.cpp +1424 -0
- combaero-0.2.0/src/cooling_correlations.cpp +678 -0
- combaero-0.2.0/src/correlation_status.cpp +31 -0
- combaero-0.2.0/src/equilibrium.cpp +896 -0
- combaero-0.2.0/src/friction.cpp +171 -0
- combaero-0.2.0/src/geometry.cpp +186 -0
- combaero-0.2.0/src/heat_transfer.cpp +1475 -0
- combaero-0.2.0/src/humidair.cpp +395 -0
- combaero-0.2.0/src/incompressible.cpp +446 -0
- combaero-0.2.0/src/main.cpp +90 -0
- combaero-0.2.0/src/materials.cpp +174 -0
- combaero-0.2.0/src/orifice.cpp +836 -0
- combaero-0.2.0/src/registry.cpp +37 -0
- combaero-0.2.0/src/solver_interface.cpp +1867 -0
- combaero-0.2.0/src/stagnation.cpp +270 -0
- combaero-0.2.0/src/state.cpp +210 -0
- combaero-0.2.0/src/thermo.cpp +415 -0
- combaero-0.2.0/src/transport.cpp +280 -0
- combaero-0.2.0/src/utils.cpp +53 -0
- combaero-0.2.0/tests/CMakeLists.txt +42 -0
- combaero-0.2.0/tests/test_acoustic_adapter.cpp +145 -0
- combaero-0.2.0/tests/test_energy_boundary.cpp +660 -0
- combaero-0.2.0/tests/test_fraction_functions.cpp +77 -0
- combaero-0.2.0/tests/test_heat_transfer_jacobians.cpp +457 -0
- combaero-0.2.0/tests/test_humidair.cpp +303 -0
- combaero-0.2.0/tests/test_ice_equation_accuracy.cpp +88 -0
- combaero-0.2.0/tests/test_incompressible.cpp +93 -0
- combaero-0.2.0/tests/test_orifice.cpp +297 -0
- combaero-0.2.0/tests/test_solver_jacobians.cpp +1341 -0
- combaero-0.2.0/tests/test_state.cpp +68 -0
- combaero-0.2.0/tests/test_state_sync.cpp +71 -0
- combaero-0.2.0/tests/test_stream_jacobians.cpp +794 -0
- combaero-0.2.0/tests/test_thermo_transport.cpp +4539 -0
- combaero-0.2.0/tests/test_units.cpp +57 -0
- combaero-0.2.0/tests/test_water_equation_accuracy.cpp +88 -0
- combaero-0.2.0/uv.lock +1421 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Bulk Merge Safe Updates Workflow
|
|
2
|
+
|
|
3
|
+
This workflow automates the consolidation of verified Dependabot updates into the `main` branch. It ensures that only "green" and "safe" (minor/patch/grouped) updates are merged, significantly reducing manual overhead.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
- GitHub CLI (`gh`) installed and authenticated.
|
|
7
|
+
- Local `main` branch is clean and synchronized.
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
### 1. Discovery & LLM Review
|
|
12
|
+
The Agent (LLM) must first perform a dry-run to identify candidates and verify their safety.
|
|
13
|
+
```bash
|
|
14
|
+
./scripts/bulk_merge_safe.sh --dry-run
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 2. Safety Audit
|
|
18
|
+
For each PR identified by the script, the Agent must:
|
|
19
|
+
- [ ] Confirm the CI status is truly **SUCCESS**.
|
|
20
|
+
- [ ] For `minor` bumps, quickly check for known breaking changes in project-critical libraries.
|
|
21
|
+
- [ ] Group the candidates into a summary table for the user.
|
|
22
|
+
|
|
23
|
+
### 3. User Approval
|
|
24
|
+
Present the candidate table to the user. Do **NOT** proceed until the user provides explicit approval (e.g., "Proceed with merge").
|
|
25
|
+
|
|
26
|
+
### 4. Execution
|
|
27
|
+
Once approved, run the merger:
|
|
28
|
+
```bash
|
|
29
|
+
./scripts/bulk_merge_safe.sh
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 5. Final Sync
|
|
33
|
+
The script handles the final `git pull` from `main`, but the Agent should verify the local state is up-to-date and all checks remain green on `main`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run style checks, units sync validation, commit locally, and push.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
// turbo-all
|
|
6
|
+
Follow the complete validation and commit process in [commit-local](file:///Users/thiemo/Projects/combaero/.agents/workflows/commit-local.md), then push.
|
|
7
|
+
|
|
8
|
+
## Steps
|
|
9
|
+
|
|
10
|
+
### 1. Follow commit-local workflow
|
|
11
|
+
Execute all steps in the [commit-local](file:///Users/thiemo/Projects/combaero/.agents/workflows/commit-local.md) workflow to ensure linting, unit sync, and local commit are successful.
|
|
12
|
+
|
|
13
|
+
### 2. Push to current branch
|
|
14
|
+
```bash
|
|
15
|
+
git push
|
|
16
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run style checks, units sync validation, commit with message file. Do not push.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
// turbo-all
|
|
6
|
+
This workflow automates the commit process with comprehensive checks and message handling.
|
|
7
|
+
|
|
8
|
+
## Steps
|
|
9
|
+
|
|
10
|
+
### 1. Check for old commit message files
|
|
11
|
+
```bash
|
|
12
|
+
./scripts/check-commit-msg.sh
|
|
13
|
+
```
|
|
14
|
+
Note: If a `COMMIT_MSG.md` exists, review it and delete if stale, or keep to reuse it.
|
|
15
|
+
|
|
16
|
+
### 2. Run Python formatting and linting
|
|
17
|
+
```bash
|
|
18
|
+
uv run ruff format python/
|
|
19
|
+
uv run ruff check --fix python/
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 3. Run Frontend formatting and linting (Biome)
|
|
23
|
+
```bash
|
|
24
|
+
cd gui/frontend && npm run format && cd ../..
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 4. Check for units synchronization (Mandatory)
|
|
28
|
+
```bash
|
|
29
|
+
uv run pytest python/tests/test_units_sync.py
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 5. Check for non-ASCII characters in C++ source
|
|
33
|
+
```bash
|
|
34
|
+
./scripts/check-source-style.sh
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 6. Stage and run pre-commit hooks
|
|
38
|
+
```bash
|
|
39
|
+
git add -A
|
|
40
|
+
uv run pre-commit run --all-files
|
|
41
|
+
git add -A
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 7. Create commit message file
|
|
45
|
+
Create a file named `COMMIT_MSG.md` in the project root with your commit message.
|
|
46
|
+
Follow conventional commit format: `type: brief description`.
|
|
47
|
+
|
|
48
|
+
### 8. Commit and cleanup
|
|
49
|
+
```bash
|
|
50
|
+
git commit -F COMMIT_MSG.md
|
|
51
|
+
rm COMMIT_MSG.md
|
|
52
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create a Pull Request and monitor CI status
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
// turbo-all
|
|
6
|
+
This workflow automates the creation of a Pull Request using the GitHub CLI and tracks CI progress.
|
|
7
|
+
|
|
8
|
+
## Steps
|
|
9
|
+
|
|
10
|
+
### 1. Create Pull Request
|
|
11
|
+
```bash
|
|
12
|
+
gh pr create --title "type: brief description" --body-file COMMIT_MSG.md
|
|
13
|
+
```
|
|
14
|
+
Note: Re-use the `COMMIT_MSG.md` if available, or specify a summary.
|
|
15
|
+
|
|
16
|
+
### 2. Monitor CI Status
|
|
17
|
+
```bash
|
|
18
|
+
gh pr view --json statusCheckRollup --jq '.statusCheckRollup[]'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 3. Check specific run logs if needed
|
|
22
|
+
```bash
|
|
23
|
+
gh run list --limit 3
|
|
24
|
+
# Then view specific run
|
|
25
|
+
# gh run view <ID> --json jobs --jq '.jobs[] | {name, status, conclusion}'
|
|
26
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Squash merge PR and cleanup branch (default for small tasks)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
// turbo-all
|
|
6
|
+
This workflow handles the final merge and cleanup. It uses squash merge by default as preferred for small task branches.
|
|
7
|
+
|
|
8
|
+
## Merge Logic Selection
|
|
9
|
+
- **Squash Merge (`--squash`)**: Default for small task branches, bugfixes, and feature refinements to keep history clean.
|
|
10
|
+
- **Normal Merge (`--merge`)**: Used for major architectural changes or multi-contributor feature branches where preserving intermediate commit history is vital.
|
|
11
|
+
|
|
12
|
+
## Steps
|
|
13
|
+
|
|
14
|
+
### 1. Verification Checklist
|
|
15
|
+
- [ ] All CI checks are green (confirm with `gh pr view`).
|
|
16
|
+
- [ ] Any manual verification/benchmarks are completed.
|
|
17
|
+
|
|
18
|
+
### 2. Execute Squash Merge (Preferred)
|
|
19
|
+
```bash
|
|
20
|
+
gh pr merge --squash --delete-branch
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 3. Alternative: Normal Merge (Major Work)
|
|
24
|
+
If the work is major according to project conventions, use:
|
|
25
|
+
```bash
|
|
26
|
+
gh pr merge --merge --delete-branch
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 4. Cleanup Local Branch
|
|
30
|
+
```bash
|
|
31
|
+
git checkout main
|
|
32
|
+
git pull
|
|
33
|
+
# Local branch deletion is handled by --delete-branch if remote, but check local:
|
|
34
|
+
# git branch -d <branch_name>
|
|
35
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
.venv/**
|
|
2
|
+
build/**
|
|
3
|
+
dist/**
|
|
4
|
+
python/**
|
|
5
|
+
src/**
|
|
6
|
+
include/**
|
|
7
|
+
scripts/**
|
|
8
|
+
tests/**
|
|
9
|
+
thermo_data_generator/**
|
|
10
|
+
benchmarks/**
|
|
11
|
+
cantera_validation_tests/**
|
|
12
|
+
node_modules/**
|
|
13
|
+
**/__pycache__/**
|
|
14
|
+
**/CMakeFiles/**
|
|
15
|
+
**/cmake_install.cmake
|
|
16
|
+
**/CMakeCache.txt
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Checks: >
|
|
2
|
+
# Start with nothing, then opt in
|
|
3
|
+
-*
|
|
4
|
+
# Core bug-finding
|
|
5
|
+
clang-diagnostic-*,
|
|
6
|
+
clang-analyzer-*,
|
|
7
|
+
bugprone-*,
|
|
8
|
+
performance-*,
|
|
9
|
+
portability-*,
|
|
10
|
+
# Good modernization for C++17
|
|
11
|
+
modernize-*,
|
|
12
|
+
# Readability and basic style
|
|
13
|
+
readability-*,
|
|
14
|
+
# A subset of C++ Core Guidelines
|
|
15
|
+
cppcoreguidelines-*,
|
|
16
|
+
# But disable rules that fight with style or are project-specific
|
|
17
|
+
-clang-diagnostic-c++17-extensions,
|
|
18
|
+
-myproject-no-system-algorithm,
|
|
19
|
+
-llvm-*,
|
|
20
|
+
-fuchsia-*,
|
|
21
|
+
-google-*,
|
|
22
|
+
-hicpp-*,
|
|
23
|
+
-zircon-*,
|
|
24
|
+
# If any of these become noisy, turn them off:
|
|
25
|
+
-cppcoreguidelines-avoid-magic-numbers,
|
|
26
|
+
-cppcoreguidelines-owning-memory,
|
|
27
|
+
-cppcoreguidelines-pro-type-reinterpret-cast,
|
|
28
|
+
-bugprone-easily-swappable-parameters,
|
|
29
|
+
-performance-avoid-endl
|
|
30
|
+
|
|
31
|
+
WarningsAsErrors: ''
|
combaero-0.2.0/.clangd
ADDED
combaero-0.2.0/.envrc
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# direnv config for combaero (root)
|
|
2
|
+
#
|
|
3
|
+
# This single .envrc manages a shared virtual environment at the repository root
|
|
4
|
+
# for all Python-related tasks: building the combaero wheel, running thermo_data_generator
|
|
5
|
+
# scripts, and executing Python tests.
|
|
6
|
+
|
|
7
|
+
# Re-run this .envrc when key files change
|
|
8
|
+
watch_file .envrc
|
|
9
|
+
watch_file pyproject.toml
|
|
10
|
+
watch_dir python
|
|
11
|
+
watch_dir thermo_data_generator
|
|
12
|
+
|
|
13
|
+
VENV_DIR="$PWD/.venv"
|
|
14
|
+
PYTHON_BIN="$VENV_DIR/bin/python"
|
|
15
|
+
|
|
16
|
+
# 1) Create venv if missing (prefer uv, fall back to python -m venv)
|
|
17
|
+
if [ ! -d "$VENV_DIR" ]; then
|
|
18
|
+
if command -v uv >/dev/null 2>&1; then
|
|
19
|
+
echo "[combaero] Creating virtualenv with uv at $VENV_DIR"
|
|
20
|
+
uv venv "$VENV_DIR"
|
|
21
|
+
else
|
|
22
|
+
echo "[combaero] uv not found, creating virtualenv with python -m venv at $VENV_DIR"
|
|
23
|
+
python3 -m venv "$VENV_DIR"
|
|
24
|
+
fi
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# 2) Activate venv
|
|
28
|
+
export VIRTUAL_ENV="$VENV_DIR"
|
|
29
|
+
export PATH="$VENV_DIR/bin:$PATH"
|
|
30
|
+
|
|
31
|
+
# 3) Build-related env flags
|
|
32
|
+
export COMBAERO_BUILD_PYTHON=1
|
|
33
|
+
export PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
34
|
+
|
|
35
|
+
# 4) Auto-install dependencies via uv (once per venv)
|
|
36
|
+
if command -v uv >/dev/null 2>&1; then
|
|
37
|
+
MARKER="$VENV_DIR/.uv-bootstrap-done"
|
|
38
|
+
if [ ! -f "$MARKER" ]; then
|
|
39
|
+
echo "[combaero] Bootstrapping Python dependencies via uv"
|
|
40
|
+
|
|
41
|
+
# Install core tooling: pip, build system, and pybind11 for the wheel
|
|
42
|
+
uv pip install --python "$PYTHON_BIN" pip build scikit-build-core pybind11
|
|
43
|
+
|
|
44
|
+
# Install dev dependencies (pytest)
|
|
45
|
+
uv pip install --python "$PYTHON_BIN" pytest
|
|
46
|
+
|
|
47
|
+
# Install thermo_data_generator dependencies
|
|
48
|
+
uv pip install --python "$PYTHON_BIN" pandas pyyaml
|
|
49
|
+
|
|
50
|
+
touch "$MARKER"
|
|
51
|
+
echo "[combaero] Bootstrap complete. Dependencies installed."
|
|
52
|
+
fi
|
|
53
|
+
fi
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Build directories
|
|
2
|
+
build/
|
|
3
|
+
cmake-build-*/
|
|
4
|
+
|
|
5
|
+
# Excluded folders
|
|
6
|
+
humidair_examples/
|
|
7
|
+
cantera_examples/
|
|
8
|
+
temp/
|
|
9
|
+
|
|
10
|
+
# IDE files
|
|
11
|
+
.idea/
|
|
12
|
+
.vscode/
|
|
13
|
+
*.swp
|
|
14
|
+
*~
|
|
15
|
+
|
|
16
|
+
# Compiled objects
|
|
17
|
+
*.o
|
|
18
|
+
*.obj
|
|
19
|
+
*.lo
|
|
20
|
+
*.slo
|
|
21
|
+
|
|
22
|
+
# Precompiled headers
|
|
23
|
+
*.gch
|
|
24
|
+
*.pch
|
|
25
|
+
|
|
26
|
+
# Libraries
|
|
27
|
+
*.so
|
|
28
|
+
*.dylib
|
|
29
|
+
*.dll
|
|
30
|
+
*.a
|
|
31
|
+
*.lib
|
|
32
|
+
*.la
|
|
33
|
+
*.lai
|
|
34
|
+
|
|
35
|
+
# Fortran modules
|
|
36
|
+
*.mod
|
|
37
|
+
*.smod
|
|
38
|
+
|
|
39
|
+
# Executables
|
|
40
|
+
*.exe
|
|
41
|
+
*.out
|
|
42
|
+
*.app
|
|
43
|
+
|
|
44
|
+
# CMake
|
|
45
|
+
CMakeCache.txt
|
|
46
|
+
CMakeFiles/
|
|
47
|
+
*.cmake
|
|
48
|
+
!CMakeLists.txt
|
|
49
|
+
!.github/workflows/toolchain-mingw.cmake
|
|
50
|
+
|
|
51
|
+
# macOS
|
|
52
|
+
.DS_Store
|
|
53
|
+
|
|
54
|
+
# Windows
|
|
55
|
+
Thumbs.db
|
|
56
|
+
Desktop.ini
|
|
57
|
+
$RECYCLE.BIN/
|
|
58
|
+
|
|
59
|
+
# Linux
|
|
60
|
+
.directory
|
|
61
|
+
|
|
62
|
+
# Python
|
|
63
|
+
__pycache__/
|
|
64
|
+
*.py[cod]
|
|
65
|
+
*.pyo
|
|
66
|
+
*.pyd
|
|
67
|
+
.pytest_cache/
|
|
68
|
+
.cache/
|
|
69
|
+
dist/
|
|
70
|
+
.venv/
|
|
71
|
+
*.egg-info/
|
|
72
|
+
|
|
73
|
+
# scikit-build-core
|
|
74
|
+
_skbuild/
|
|
75
|
+
-sdist/
|
|
76
|
+
|
|
77
|
+
# Generated artifacts
|
|
78
|
+
thermo_data_generator/test_create_cpp_header_output.txt
|
|
79
|
+
thermo_data_generator/thermo_transport_data.h
|
|
80
|
+
|
|
81
|
+
# Thermo data generator - source data files (not included due to licensing)
|
|
82
|
+
# Users must obtain these themselves from original sources
|
|
83
|
+
thermo_data_generator/*.yaml
|
|
84
|
+
thermo_data_generator/*.txt
|
|
85
|
+
thermo_data_generator/*.json
|
|
86
|
+
!thermo_data_generator/.generator_state.json
|
|
87
|
+
thermo_data_generator/*.csv
|
|
88
|
+
|
|
89
|
+
# Example output (plots, data)
|
|
90
|
+
examples/*.png
|
|
91
|
+
examples/*.csv
|
|
92
|
+
examples/*.dat
|
|
93
|
+
python/examples/*.png
|
|
94
|
+
python/examples/*.csv
|
|
95
|
+
python/examples/*.dat
|
|
96
|
+
|
|
97
|
+
# CTest
|
|
98
|
+
Testing/
|
|
99
|
+
tests/Testing/
|
|
100
|
+
|
|
101
|
+
# Diagnostic output
|
|
102
|
+
diagnostic_plots/
|
|
103
|
+
diagnostic_reports/
|
|
104
|
+
|
|
105
|
+
TODO.md
|
|
106
|
+
.aider*
|
|
107
|
+
|
|
108
|
+
# Benchmark run outputs (auto-generated, not for tracking)
|
|
109
|
+
benchmarks/runs/
|
|
110
|
+
benchmarks/network_solver_benchmark_latest.json
|
|
111
|
+
gui/nw_*.json
|
|
112
|
+
gui/tmp/
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v4.5.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: trailing-whitespace
|
|
6
|
+
- id: end-of-file-fixer
|
|
7
|
+
- id: check-yaml
|
|
8
|
+
- id: check-added-large-files
|
|
9
|
+
- id: check-merge-conflict
|
|
10
|
+
|
|
11
|
+
- repo: local
|
|
12
|
+
hooks:
|
|
13
|
+
- id: python-style-check
|
|
14
|
+
name: Python style checks (ruff + ruff format + optional mypy)
|
|
15
|
+
entry: bash -c './scripts/check-python-style.sh'
|
|
16
|
+
language: system
|
|
17
|
+
pass_filenames: false
|
|
18
|
+
files: ^(python/|cantera_validation_tests/|thermo_data_generator/)
|
|
19
|
+
stages: [pre-commit]
|
|
20
|
+
|
|
21
|
+
- id: cantera-validation-tests
|
|
22
|
+
name: Cantera Validation Tests
|
|
23
|
+
entry: bash -c 'CANTERA_DATA="$PWD/cantera_validation_tests" uv run --project cantera_validation_tests pytest -v --tb=short'
|
|
24
|
+
language: system
|
|
25
|
+
pass_filenames: false
|
|
26
|
+
always_run: false
|
|
27
|
+
files: ^(src/|include/|python/|cantera_validation_tests/)
|
|
28
|
+
stages: [pre-commit]
|
|
29
|
+
|
|
30
|
+
- id: python-unit-tests
|
|
31
|
+
name: Python Unit Tests
|
|
32
|
+
entry: bash -c 'uv run pytest python/tests/ -v'
|
|
33
|
+
language: system
|
|
34
|
+
pass_filenames: false
|
|
35
|
+
always_run: false
|
|
36
|
+
files: ^(src/|include/|python/)
|
|
37
|
+
stages: [pre-commit]
|
|
38
|
+
|
|
39
|
+
- id: thermo-header-check
|
|
40
|
+
name: Thermo/Transport Header (generated file check)
|
|
41
|
+
entry: bash -c './scripts/check-thermo-header.sh'
|
|
42
|
+
language: system
|
|
43
|
+
pass_filenames: false
|
|
44
|
+
files: ^(thermo_data_generator/|include/thermo_transport_data\.h)
|
|
45
|
+
stages: [pre-commit]
|
|
46
|
+
|
|
47
|
+
- id: common-names-check
|
|
48
|
+
name: Common names completeness check
|
|
49
|
+
entry: bash -c './scripts/check-common-names.sh'
|
|
50
|
+
language: system
|
|
51
|
+
pass_filenames: false
|
|
52
|
+
files: ^include/(thermo_transport_data|common_names)\.h$
|
|
53
|
+
stages: [pre-commit]
|
|
54
|
+
|
|
55
|
+
- id: math-constants-check
|
|
56
|
+
name: Math constants portability check (MSVC compatibility)
|
|
57
|
+
entry: .pre-commit-hooks/check_math_constants.py
|
|
58
|
+
language: system
|
|
59
|
+
files: \.(cpp|h|hpp|cc|cxx)$
|
|
60
|
+
stages: [pre-commit]
|
|
61
|
+
|
|
62
|
+
- repo: https://github.com/biomejs/pre-commit
|
|
63
|
+
rev: v0.6.1
|
|
64
|
+
hooks:
|
|
65
|
+
- id: biome-check
|
|
66
|
+
additional_dependencies: ["@biomejs/biome@2.4.9"]
|
|
67
|
+
files: ^gui/frontend/
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Pre-commit hook to ensure M_PI and related constants are used via math_constants.h
|
|
4
|
+
|
|
5
|
+
MSVC does not define M_PI by default (POSIX extension), so we must use our
|
|
6
|
+
portable math_constants.h header for cross-platform compatibility.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import re
|
|
10
|
+
import sys
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
# Constants that require math_constants.h
|
|
14
|
+
MATH_CONSTANTS = [
|
|
15
|
+
"M_PI",
|
|
16
|
+
"M_PI_2",
|
|
17
|
+
"M_PI_4",
|
|
18
|
+
"M_SQRT2",
|
|
19
|
+
"M_LN10",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def check_file(filepath: Path) -> list[str]:
|
|
24
|
+
"""Check if file uses math constants without including math_constants.h"""
|
|
25
|
+
errors = []
|
|
26
|
+
|
|
27
|
+
try:
|
|
28
|
+
content = filepath.read_text(encoding="utf-8")
|
|
29
|
+
except (UnicodeDecodeError, FileNotFoundError):
|
|
30
|
+
return errors
|
|
31
|
+
|
|
32
|
+
# Check if any math constants are used
|
|
33
|
+
constants_used = set()
|
|
34
|
+
for const in MATH_CONSTANTS:
|
|
35
|
+
# Match constant but not in comments or strings
|
|
36
|
+
if re.search(rf"\b{const}\b", content):
|
|
37
|
+
constants_used.add(const)
|
|
38
|
+
|
|
39
|
+
if not constants_used:
|
|
40
|
+
return errors
|
|
41
|
+
|
|
42
|
+
# Check if math_constants.h is included (matches both "math_constants.h" and "../include/math_constants.h")
|
|
43
|
+
has_include = bool(re.search(r'#include\s+[<"].*math_constants\.h[>"]', content))
|
|
44
|
+
|
|
45
|
+
if not has_include:
|
|
46
|
+
errors.append(
|
|
47
|
+
f"{filepath}: Uses {', '.join(sorted(constants_used))} "
|
|
48
|
+
f'but missing #include "math_constants.h" (required for MSVC compatibility)'
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
return errors
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def main():
|
|
55
|
+
"""Check all C++ files passed as arguments"""
|
|
56
|
+
errors = []
|
|
57
|
+
|
|
58
|
+
for arg in sys.argv[1:]:
|
|
59
|
+
filepath = Path(arg)
|
|
60
|
+
|
|
61
|
+
# Only check C++ source/header files
|
|
62
|
+
if filepath.suffix not in {".cpp", ".h", ".hpp", ".cc", ".cxx"}:
|
|
63
|
+
continue
|
|
64
|
+
|
|
65
|
+
# Skip the math_constants.h file itself
|
|
66
|
+
if filepath.name == "math_constants.h":
|
|
67
|
+
continue
|
|
68
|
+
|
|
69
|
+
errors.extend(check_file(filepath))
|
|
70
|
+
|
|
71
|
+
if errors:
|
|
72
|
+
print("\n❌ Math constants portability check failed:\n")
|
|
73
|
+
for error in errors:
|
|
74
|
+
print(f" {error}")
|
|
75
|
+
print(
|
|
76
|
+
'\nMSVC does not define M_PI by default. Use #include "math_constants.h" for portability.'
|
|
77
|
+
)
|
|
78
|
+
return 1
|
|
79
|
+
|
|
80
|
+
return 0
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
if __name__ == "__main__":
|
|
84
|
+
sys.exit(main())
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Auto-fix issues in changed Frontend files with Biome
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Biome Auto-Fix Changed Files
|
|
6
|
+
|
|
7
|
+
This workflow automatically fixes linting and formatting issues in all modified Frontend files using Biome.
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
// turbo
|
|
12
|
+
1. Run Biome check with --write on all changed JS/TS/CSS/JSON files
|
|
13
|
+
```bash
|
|
14
|
+
git status --porcelain | grep '^[AMR].*gui/frontend/.*\.\(js\|ts\|tsx\|css\|json\)$' | cut -c4- | xargs -r npx @biomejs/biome check --write --no-errors-on-unmatched --files-max-size=1000000
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
// turbo
|
|
18
|
+
2. Verify all issues are fixed
|
|
19
|
+
```bash
|
|
20
|
+
git status --porcelain | grep '^[AMR].*gui/frontend/.*\.\(js\|ts\|tsx\|css\|json\)$' | cut -c4- | xargs -r npx @biomejs/biome check --no-errors-on-unmatched
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
Run this workflow before committing to ensure all Frontend files pass Biome checks.
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
|
|
29
|
+
- Only fixes files that are Added, Modified, or Renamed (AMR status) within the `gui/frontend` directory.
|
|
30
|
+
- Uses `check --write` to automatically apply formatting and safe lint fixes.
|
|
31
|
+
- The `-r` flag prevents xargs from failing when no files match.
|
|
32
|
+
- All steps are auto-turbo enabled for seamless execution.
|
|
33
|
+
- Always review the changes after auto-fix.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run style checks, fix issues, commit with message file, and push
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
This workflow automates the commit and push process with proper style checking and message handling.
|
|
6
|
+
|
|
7
|
+
## Steps
|
|
8
|
+
|
|
9
|
+
### 1-8. Complete commit workflow
|
|
10
|
+
Follow all steps from @[/commit-only] workflow (check for old commit messages, stage, pre-commit, fix issues, create message file, commit, cleanup).
|
|
11
|
+
|
|
12
|
+
// turbo
|
|
13
|
+
### 9. Push to remote
|
|
14
|
+
```bash
|
|
15
|
+
git push
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
This workflow runs the complete @[/commit-only] workflow and then pushes to the remote repository.
|
|
21
|
+
|
|
22
|
+
When you run this workflow, Cascade will:
|
|
23
|
+
1. Run all commit-only steps (check, stage, pre-commit, fix, create message, commit, cleanup)
|
|
24
|
+
2. Push to remote
|
|
25
|
+
|
|
26
|
+
This avoids issues with special characters, backticks, and multi-line messages in shell commands.
|