Skip to content

Remove ControlPlots; migrate plotting to Makie + MakieControlPlots#253

Merged
1-Bart-1 merged 7 commits into
mainfrom
rm-controlplots-redo
Jul 13, 2026
Merged

Remove ControlPlots; migrate plotting to Makie + MakieControlPlots#253
1-Bart-1 merged 7 commits into
mainfrom
rm-controlplots-redo

Conversation

@1-Bart-1

Copy link
Copy Markdown
Member

Supersedes #248, redone fresh on current main. The original #248 branch predated main's NeuralFoil reorganization into the AirfoilAero/ObjAdapter submodules (and carried the pre-squash NeuralFoil history), so it could not be merged cleanly — this is the same intent re-applied as a single clean commit on top of current main.

Changes

  • Removed the ControlPlots extension, examples_cp/, and the PythonCall/Matplotlib setup (bin/install_controlplots, CondaPkg LocalPreferences defaults).
  • Collapsed the plot-backend dispatch (PlotBackend/MakieBackend/ControlPlotsBackend/set_plot_backend!). Plotting works as soon as a Makie backend and MakieControlPlots are loaded. Dropped the never-implemented plot_circulation_distribution.
  • VortexStepMethodMakieExt now triggers on ["Makie", "MakieControlPlots"] and renders plot_section_polars via MakieControlPlots.plot. Everything else (geometry, distributions, 3D surfaces, airfoil grids) stays native Makie.
  • Examples/docs/tests load GLMakie/CairoMakie + MakieControlPlots.
  • Regenerated the 1.11 and 1.12 default manifests; removed dead :PyCall Aqua ignores.

Validation (headless, Julia 1.12)

  • Plotting tests: 58/58
  • Aqua: 10/10
  • Package loads on both 1.11 and 1.12 with the regenerated manifests.

🤖 Generated with Claude Code

Redone fresh on current main (the original PR #248 branch predated main's
NeuralFoil reorganization into the AirfoilAero/ObjAdapter submodules and could
not be merged cleanly).

- Remove the ControlPlots extension, examples_cp/, and the PythonCall/Matplotlib
  setup (bin/install_controlplots, CondaPkg LocalPreferences defaults).
- Collapse the PlotBackend/MakieBackend/ControlPlotsBackend/set_plot_backend\!
  dispatch; plotting works once a Makie backend and MakieControlPlots are loaded.
  Drop the never-implemented plot_circulation_distribution.
- VortexStepMethodMakieExt now triggers on ["Makie", "MakieControlPlots"] and
  renders plot_section_polars through MakieControlPlots.plot; everything else
  stays native Makie.
- Examples/docs/tests load GLMakie/CairoMakie + MakieControlPlots.
- Regenerate the 1.11 and 1.12 default manifests; drop dead :PyCall Aqua ignores.

Validation (headless, Julia 1.12): plotting 58/58, Aqua 10/10; package loads on
1.11 and 1.12 with the regenerated manifests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1-Bart-1 and others added 2 commits July 13, 2026 12:51
MakieControlPlots activates GLMakie on load, whose OpenGL init fails on the
headless Linux runners (no DISPLAY). Install xvfb + libgl1-mesa-dri and run the
Linux test jobs under `xvfb-run -a`; give the docs job a background Xvfb via
DISPLAY. Windows/macOS runners keep their own display context (no prefix).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
test/test_setup.sh runs every example via menu.jl --run-all, which now loads
MakieControlPlots (→ GLMakie). Add libgl1-mesa-dri and run the script under
xvfb-run so GLMakie can initialize headlessly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 15.78947% with 16 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
ext/VortexStepMethodMakieExt.jl 15.78% 16 Missing ⚠️

📢 Thoughts on this report? Let us know!

1-Bart-1 and others added 4 commits July 13, 2026 13:17
Resolves conflicts from #254 (crease_frac routing, manifest --update tooling):
- bin/install: kept #254's version, re-removed the ControlPlots/examples_cp/
  PythonCall/CondaPkg setup; the Makie extension smoke check now loads
  GLMakie + MakieControlPlots.
- Manifest-v1.11/1.12 defaults: reseeded from #254's manifests and re-resolved
  to swap the plotting weakdeps (ControlPlots/PythonCall -> MakieControlPlots).
- setup-test.yml: test_setup.sh already wraps julia in xvfb-run internally, so
  drop the outer xvfb-run wrapper (it caused nested "Xvfb failed to start");
  keep libgl1-mesa-dri.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ic wiring

With ControlPlots gone there is only one plotting backend family, so examples no
longer need to stay backend-agnostic for a separate menu_cp() launcher. Every
plotting example now imports GLMakie + MakieControlPlots directly (bench/cleanup
don't plot, so they don't). Remove the now-meaningless "backend-agnostic" check
from test/test_setup.sh and stale two-backend comments in test_plotting.jl.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MakieControlPlots exports its own JLD2-based `save`, which clashes with Makie's
figure `save` once an example does `using GLMakie` + `using MakieControlPlots`.
Qualify the raw figure-save calls (ram_air_kite, V3_neuralfoil) as GLMakie.save.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
GLMakie's PrecompileTools workload creates a screen (glfwInit), which fails on
the headless macOS/Windows CI runners (no GPU/display, and xvfb is Linux-only).
Loading MakieControlPlots pulls in GLMakie, so gate the plotting test include on
Sys.islinux(); the Linux jobs run them under xvfb. All other tests still run on
every platform (Windows showed 5111 passing with only the plotting set erroring).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@1-Bart-1 1-Bart-1 merged commit 6d50cd3 into main Jul 13, 2026
8 checks passed
@1-Bart-1 1-Bart-1 deleted the rm-controlplots-redo branch July 13, 2026 12:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant