What's Changed
- ci: unblock merge queue — vcpkg cache, merge_group triggers, unique Test PyPI versions by @renefritze in #128
- [tutorials] restore broken notebooks and execute them in the CI docs build by @renefritze in #125
- Add Gemini review workflow by @renefritze in #122
- ci: group dependabot updates by ecosystem with 7-day cooldown by @renefritze in #121
- shellcheck: rebase #101 onto main + make the whole repo pass the hook by @renefritze in #133
- ci: run non-docker build on tags and publish wheels to PyPI by @renefritze in #123
- Fix dependabot config rejected by check-dependabot hook by @renefritze in #134
- [pre-commit] autoupdate hooks and apply reformatting by @renefritze in #132
- drop pymumps as a dependency by @renefritze in #136
- ci: remove orphaned docker ci image scripts (#111) by @renefritze in #137
- ⬆️ Bump the github-actions-dependencies group with 8 updates by @dependabot[bot] in #135
- fmatrix: document why disabled operator* overloads stay removed (#107) by @renefritze in #138
- Add standalone nanobench benchmarks for e2e solves by @renefritze in #141
- Re-enable column-matrix conversion check in fvector test by @renefritze in #143
- ci: remove orphaned docker ci image scripts and context by @renefritze in #139
- Re-enable CG-FEM and data-functions tutorials in the CI docs build (#127) by @renefritze in #140
- ci: remove docker dev image tooling by @renefritze in #144
- Add assembly-density measurement benchmarks by @renefritze in #152
- Disable build-dependent C/C++ tools in CodeRabbit by @renefritze in #153
- Finalize BilinearForm operator-assembly bindings (apply2/norm) — rebased on main by @renefritze in #154
- Fold examples requirements into a packaging extra and consolidate Python deps by @renefritze in #147
- CI: bump benchmarks workflow actions off Node 20 runtime by @renefritze in #155
- CI: harden workflows (persist-credentials + SHA-pinning) — rebased by @renefritze in #159
- Remove Gemini review comment workflow by @renefritze in #163
- docs: extract C++ API with ClangQuill, retire Doxygen (closes #145) by @renefritze in #161
- docs: plot benchmark reports via a Plotly Sphinx extension (#142) by @renefritze in #162
- benchmarks: fix Benchmarks workflow timing out on main by @renefritze in #170
- docs: add Doxygen \file headers to dune/xt third bucket (#165) by @renefritze in #171
- doc: document second bucket of dune/xt headers (#165) by @renefritze in #172
- Doxygen: document all non-test headers in dune/gdt (#164) by @renefritze in #166
- [doc] Document "missing everything" headers in dune/xt (#165, bucket 1) by @renefritze in #167
- [grid] Fix make_dgf_grid to call static create() factory method by @renefritze in #169
- ci(docs): build tutorials via uv from package extras and deploy to GitHub Pages (rebased) by @renefritze in #160
- ci: speed up test_binaries build with ccache and memory-capped parallelism by @renefritze in #173
- test(stokes): make is_symmetric O(nnz) instead of O(n^2) by @renefritze in #177
- Re-enable deferred tutorial notebooks (#127) by @renefritze in #168
- Add meshio to the docs extra (fix example__gmsh_grid on main) by @renefritze in #180
- docs: cover all in-tree headers in clangquill C++ API (include undocumented symbols) by @renefritze in #181
- Remove orphaned doxygen group-closer in DiscreteFunction by @renefritze in #182
- deps: refresh dune-istl pin to releases/2.10 HEAD; document overlay ports by @renefritze in #184
- Promote tutorials build to docs by @renefritze in #183
- docs: require clangquill>=0.3.0 and group C++ API by class by @renefritze in #200
- Drop vendored GoogleTest, use the vcpkg-provided gtest by @renefritze in #204
- ci/cmake: fix intermittent merge-queue configure failure (corrupted dune-env) by @renefritze in #214
- Address SonarCloud security findings by @renefritze in #203
- ⬆️ bump the github-actions-dependencies group across 1 directory with 3 updates by @dependabot[bot] in #213
- Replace vendored mathexpr parser with an ExprTk-backed engine by @renefritze in #215
- Remove virtual from comparison operators (cpp:S3692) by @renefritze in #217
- Declare move operations noexcept (cpp:S5018) by @renefritze in #220
- Replace CMake-templated setup.py.in with plain setup.py + pyproject.toml by @renefritze in #222
- Resolve cpp:S5502 (×25): at most one resource allocation per statement by @renefritze in #221
- engine: support implicit multiplication, revert expression workarounds from #215 by @renefritze in #223
- Fix DummyEigenVectorWrapper failing to compile when instantiated by @renefritze in #191
- Replace non-reentrant ctime() with ctime_r() in stringFromTime by @renefritze in #216
- Fix ExplicitRungeKuttaTimeStepper::find_suitable_dt (did not compile) by @renefritze in #199
- engine: insert implicit '*' for ')(' juxtaposition (fix docs build) by @renefritze in #224
Full Changelog: 2026.1.0...2026.2.0