Prepare 0.2.0 for public release - #50
Merged
Merged
Conversation
…s to PascalCase Brings the public API in line with the project's naming conventions: methods are lower_snake_case, enumerators are PascalCase. Both are breaking changes for callers, but mechanical ones: Id::isValid() -> Id::is_valid() GrabbedHandle::none -> GrabbedHandle::None GrabbedHandle::in_handle -> GrabbedHandle::InHandle GrabbedHandle::out_handle -> GrabbedHandle::OutHandle GrabbedHandle was the only enum left lowercase after the earlier PascalCase conversion.
A hand-rolled Windows OpenGL loader left over from before the examples moved to glad. No build file or source has referenced it since; it was not compiled by any target.
curve_visualization built its five demo curves inside five 'if (true)' blocks with the bodies duplicated per interpolation style. Replaced with a table of curve specs and one loop; the curves produced are unchanged. The 'Cannot create channel without ID' test asserted REQUIRE(true) and explained the real check in a comment. Replaced with static_asserts that actually enforce it: Channel must not be default-constructible, copy- constructible, or copy-assignable.
Both scripts ran ctest without -C, which finds no tests at all on multi-config generators such as Visual Studio, and build.ps1 called Pop-Location with no matching Push-Location. They also disagreed on whether to build the examples. Both now configure out-of-source from the repository root, pass the configuration through to both the build and ctest, and build the library and tests only. Use examples/run_example.* for the viewer.
The '*.cmake' rule matched repository-wide, so any module added under cmake/ would be silently untracked. The accompanying '!anim-config.cmake.in' negation was a no-op, since that filename never matched '*.cmake' to begin with. Generated files are now listed by name. Out-of-source artifacts were already covered by the build directory rules.
The version was repeated in CMakeLists.txt, docs/Doxyfile and docs/sphinx/conf.py, so a release bump had to touch three files and could silently drift. project() in CMakeLists.txt is now the only place it is written. Doxyfile reads it from $(ANIM_VERSION), which both docs build scripts export after parsing CMakeLists.txt, and conf.py parses the same file. Also corrects the Sphinx copyright to match LICENSE (2025-2026).
The requirements were entirely unpinned, so any upstream release could break the Pages deploy with no change on our side. Pinned to compatible-release ranges, verified by building the full site cleanly against Sphinx 9.1.0, breathe 4.36.0, exhale 0.3.7 and sphinx-rtd-theme 3.1.0. Dependabot will propose major bumps as pull requests that CI validates.
The Id::is_valid and GrabbedHandle renames are breaking changes to the public API, so this is a minor bump rather than a patch.
Community health files ahead of making the repository public. Reporting runs entirely through GitHub: security issues via private vulnerability reporting, everything else via issues. No email addresses are published. Changelog entries for 0.1.x are summarized retrospectively, since history was rewritten between the v0.1.1 and v0.1.2 tags and cannot be reconstructed commit by commit. Dependabot covers the workflow actions and the docs toolchain. The C++ dependencies are FetchContent git tags, which it cannot parse.
The workflows pinned actions that were several majors behind (checkout v4, cache v4, setup-python v5, the Pages actions, and action-gh-release v2), and pulled lukka/get-cmake from a floating @latest tag. All are now on current versions and get-cmake is pinned. The FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 workaround is removed: it was added for a 2026-06-02 cutover that has passed, and every action now ships on Node 24. ci and release gain an explicit top-level 'permissions: contents: read'; the release job keeps its own contents: write. The source archive now includes CHANGELOG.md.
CONTRIBUTING stated only that enumerators are PascalCase, which left the lower_snake_case method convention implicit and did not explain the m_ prefix. Spells all three out, and asks contributors to add a changelog entry for user-visible changes. README now documents the PowerShell docs build script alongside the bash one, and points at examples/run_example.* for the viewer, since the top-level build scripts no longer build the examples.
The windows-latest image moved from windows-2025 to windows-2025-vs2026. CMake 3.26, which the workflows pinned, has no generator for Visual Studio 2026, so it fell back to NMake Makefiles, found no nmake, and failed configure with CMAKE_CXX_COMPILER not set. A generator for it first appears in CMake 4.2. Building with CMake 4 removes compatibility with cmake_minimum_required below 3.5, which glad 0.1.36 declares, so the examples set CMAKE_POLICY_VERSION_MINIMUM to 3.5. That is scoped to the examples directory: neither the library, the test suite, nor anything consuming anim inherits it. It can go once glad is bumped. The build cache key is namespaced by CMake version so caches written by 3.26 are not restored into a 4.4 configure. Verified locally against CMake 4.4.0: library, tests and both examples build, and all 70 tests pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Final pass over the repository before making it public, plus the two API
renames that should land before the API is frozen.
Breaking changes
Both are mechanical find-and-replace for callers:
Id::isValid()Id::is_valid()GrabbedHandle::noneGrabbedHandle::NoneGrabbedHandle::in_handleGrabbedHandle::InHandleGrabbedHandle::out_handleGrabbedHandle::OutHandleGrabbedHandlewas the only enum still lowercase after the earlier PascalCaseconversion. Version bumped to 0.2.0 accordingly.
Fixes
build.ps1andbuild.shranctestwithout-C, which finds no tests atall on multi-config generators such as Visual Studio.
build.ps1alsocalled
Pop-Locationwith no matchingPush-Location, and the two scriptsdisagreed on whether to build the examples.
.gitignorematched*.cmakerepository-wide, so any module added undercmake/would have been silently untracked. The!anim-config.cmake.innegation next to it was a no-op — that filename never matched
*.cmake.CMakeLists.txtis now the onlysource, with the Doxygen and Sphinx configs deriving it.
Housekeeping
examples/gl_loader.cpp— unreferenced by any build file or sourcesince the examples moved to glad.
if (true)blocks incurve_visualizationwith a table ofcurve specs, and a
REQUIRE(true)placeholder assertion withstatic_assertsthat actually enforce the contract.
away from breaking the Pages deploy. Verified against Sphinx 9.1.
CHANGELOG.md,CODE_OF_CONDUCT.md,SECURITY.md, issue and PRtemplates, and Dependabot. All reporting runs through GitHub; no email
addresses are published.
least-privilege
permissionsblocks. Removed theFORCE_JAVASCRIPT_ACTIONS_TO_NODE24workaround — its cutover date has passedand every action now ships on Node 24.
Verification
Run locally on Windows/MSVC:
test_anim_integrationruns greenbuild_docs.shandbuild_docs.ps1The action version bumps are the one thing that could not be verified locally —
CI on this PR is the real check.
Not included
Flipping the repository to public, and enabling private vulnerability reporting
(only available once public —
SECURITY.mdlinks to it).