Prepare 0.4.0 for public release - #13
Merged
Merged
Conversation
Fix a null-pointer crash on the event loop's initialization failure path. execute() reported the failure by calling strcmp on m_warning, but only one of the seven failure paths in initializeAsyncio() sets it -- the rest set m_error and leave m_warning null. Any real failure, such as asyncio failing to import, dereferenced null inside TouchDesigner instead of showing the error. Those paths already log themselves, so only the remaining one needs surfacing here. Also fix the empty CFBundleName in the macOS bundle (Info.plist.in substitutes MACOSX_BUNDLE_BUNDLE_NAME, which CMake was never given) and set the project version to 0.4.0, so the bundle stops reporting a 1.0.0 that corresponds to no release. Cut releases by pushing a v*.*.* tag rather than by publishing in the GitHub UI. The workflow now builds, tests, and packages on both platforms before anything is published -- the release build previously ran no tests at all -- refuses a tag that is not an ancestor of main, and takes its notes from the CHANGELOG entry for the tag. Both workflows declare least-privilege permissions and pin the same toolchain as the other repositories. Drop the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 workaround; that cutover has passed. Add the material a public repository needs: a changelog, issue forms, a pull request template, and Dependabot coverage for the workflow actions and the pytest requirements. Document installing a release build without compiling, including clearing the quarantine attribute on macOS, and document the plugin registry API, which was exposed but never written up. Correct the debug sections in README.md and TESTING.md, which described an output that does not exist and a parameter under the wrong name.
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.
What does this change?
Everything outstanding before the repository is flipped public, plus one real bug.
Crash fix.
execute()reported an event-loop initialization failure by callingstrcmponm_warning, but only one of the seven failure paths ininitializeAsyncio()sets it — the other six setm_errorand leavem_warningnull. So any genuine failure (asyncio failing to import, the loop failing to construct) dereferenced a null pointer inside TouchDesigner instead of showing the error. Those six paths already log themselves, so only the remaining one needs surfacing here.Versioning.
project(VERSION)was1.0.0while releases were taggedv0.x, so the macOS bundle reported a version matching no release. Now0.4.0. Also setsMACOSX_BUNDLE_BUNDLE_NAME, whichInfo.plist.insubstitutes but CMake was never given —CFBundleNameshipped empty.Release pipeline. Releases are now cut by pushing a
v*.*.*tag rather than by publishing in the GitHub UI. The workflow builds, tests, and packages on both platforms before publishing anything — the release build previously ran no tests at all — refuses a tag that is not an ancestor ofmain, and takes its notes from theCHANGELOG.mdentry for that tag. This matches the shape used inanim.Both workflows now declare least-privilege
permissions, pin the same toolchain as the other repositories (lukka/get-cmake@v4.4.0), and drop theFORCE_JAVASCRIPT_ACTIONS_TO_NODE24workaround — that cutover was 2026-06-02.Community material.
CHANGELOG.md(with retrospective entries back to 0.1.0), issue forms, a pull request template, and Dependabot coverage for the workflow actions and the pytest requirements.Docs. Install-from-release instructions, including clearing the quarantine attribute on macOS; the plugin registry API (
set_plugin,get_plugin,has_plugin,del_plugin,clear_plugins) andget_callback_count, all exposed but never documented; and corrected debug sections inREADME.mdandTESTING.md, which described an output that does not exist and a parameter under the wrong name.Why?
The repository is still private and was one merged PR short of publication. The crash was the only item that had to be fixed before strangers run this.
How was it tested?
cmake --workflow --preset dev— 16/16 passing.awkextraction against the new0.4.0changelog entry.Deliberate deviation from
animNo build cache step. Its payoff in
animis GLFW/ImGui/ImPlot; here it would cache aCMakeCache.txtholding asetup-pythonpath that changes with every 3.11.x patch — a stale-cache failure for no real gain.Breaking changes
None. No operator parameter names or Python API signatures changed.
Follow-ups (not in this PR)
After merge: tag
v0.4.0on the merge commit to exercise the new release path, flip the repository public, then set the description and topics and enable private vulnerability reporting, Dependabot alerts, and secret scanning — none of which can be enabled while the repository is private.