Built on plugin-kit, version 1.1.0 #1

Merged
bcox merged 3 commits from plugin-kit into main 2026-11-05 01:50:43 +00:00
Owner

Procrastinator is now built on plugin-kit, pinned to its main (af74360, v0.3.0, which carries the hooks this needed, bcox/plugin-kit#4). Version 1.1.0.

What changed

  • plugin/clap_plugin.cc is a plugin_kit::Plugin that overrides ProcessBlock, so it still batches the host's events, fades loads and sends its own output events exactly as before. The engine is unchanged.
  • The kit now provides the CLAP shell, window, clap-wrapper, Audio Unit wrapper, canvas and fonts, bundles, install target, disk image, Linux packages and the tests every plugin gets. 58 duplicated files are gone.
  • The build files are arranged as plugin-template's are: suite.bzl, plugins.bzl and plugin_suite at the top of the repository. Targets moved to //:install, //:packages and //:Procrastinator.dmg. The window is unchanged.
  • The .bazelrc is the template's, so --config=asan, ubsan and tsan now exist. Making them pass took two test-only fixes in clap_plugin_test.cc: heap calls are counted by the sanitizer's hook under ASan and TSan, and an empty stream no longer passes null to memcpy.
  • The release's Linux job runs on the x86-64-v3 runner, since the kit now writes the packaged .vst3's moduleinfo.json, and moduleinfotool has to run the plugin to do that.

What stays the same

  • The CLAP id, the VST3 id, and the AU type, subtype and manufacturer.
  • The AU's saved-state key (procrastinator.patch) and its extension's bundle ID (com.djehuti.procrastinator.app.auv3).
  • The .clap/.vst3 bundle IDs on macOS, and no note input.
  • The only Mac-side difference is the app's executable file name inside Procrastinator.app.

Tested

  • bazel test //... with the pinned kit (no override): 23 pass, 2 skipped (the Audio Unit's, Mac only). Default, ASan, UBSan and TSan all pass, and the X11 tests pass with a display.
  • nm -D on the .clap shows only clap_entry.
  • tools/linux/release.sh builds the 1.1.0 .deb and .rpm, holding what they did before plus moduleinfo.json.
  • The window picture renders as before, checked by eye.

Not tested

  • Nothing Mac-side has been built: the kit's Audio Unit changes, the per-extension entitlements, tools/mac/release.sh and plugin/auv3_test.cc.
  • No golden renders exist, so nothing compares output to main byte for byte.
  • Not yet tried in a host.

🤖 Generated with Claude Code

Procrastinator is now built on [plugin-kit](https://forge.djehuti.com/bcox/plugin-kit), pinned to its `main` (`af74360`, v0.3.0, which carries the hooks this needed, bcox/plugin-kit#4). Version 1.1.0. ## What changed - `plugin/clap_plugin.cc` is a `plugin_kit::Plugin` that overrides `ProcessBlock`, so it still batches the host's events, fades loads and sends its own output events exactly as before. The engine is unchanged. - The kit now provides the CLAP shell, window, clap-wrapper, Audio Unit wrapper, canvas and fonts, bundles, install target, disk image, Linux packages and the tests every plugin gets. 58 duplicated files are gone. - The build files are arranged as plugin-template's are: `suite.bzl`, `plugins.bzl` and `plugin_suite` at the top of the repository. Targets moved to `//:install`, `//:packages` and `//:Procrastinator.dmg`. The window is unchanged. - The `.bazelrc` is the template's, so `--config=asan`, `ubsan` and `tsan` now exist. Making them pass took two test-only fixes in `clap_plugin_test.cc`: heap calls are counted by the sanitizer's hook under ASan and TSan, and an empty stream no longer passes null to `memcpy`. - The release's Linux job runs on the `x86-64-v3` runner, since the kit now writes the packaged `.vst3`'s `moduleinfo.json`, and moduleinfotool has to run the plugin to do that. ## What stays the same - The CLAP id, the VST3 id, and the AU type, subtype and manufacturer. - The AU's saved-state key (`procrastinator.patch`) and its extension's bundle ID (`com.djehuti.procrastinator.app.auv3`). - The `.clap`/`.vst3` bundle IDs on macOS, and no note input. - The only Mac-side difference is the app's executable file name inside `Procrastinator.app`. ## Tested - `bazel test //...` with the pinned kit (no override): 23 pass, 2 skipped (the Audio Unit's, Mac only). Default, ASan, UBSan and TSan all pass, and the X11 tests pass with a display. - `nm -D` on the `.clap` shows only `clap_entry`. - `tools/linux/release.sh` builds the 1.1.0 `.deb` and `.rpm`, holding what they did before plus `moduleinfo.json`. - The window picture renders as before, checked by eye. ## Not tested - Nothing Mac-side has been built: the kit's Audio Unit changes, the per-extension entitlements, `tools/mac/release.sh` and `plugin/auv3_test.cc`. - No golden renders exist, so nothing compares output to `main` byte for byte. - Not yet tried in a host. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The plugin is a plugin_kit::Plugin that takes each block itself, so its
event batching, load fades and output events are as they were. The kit
brings the CLAP shell, the window, clap-wrapper, the Audio Unit wrapper,
the canvas and faces, the bundles, the suite's install, disk image and
Linux packages, the toolchain's rules and the tests every plugin gets;
their copies here are gone. The CLAP id, the VST3's, the Audio Unit's
codes and the key its saved state is under are unchanged, and it still has
no note input. The release's Linux job moves to the x86-64-v3 runner, which
the packaged .vst3's moduleinfo.json needs. The CLAP test counts heap calls
by the sanitizer's hook under ASan and TSan, as the kit's does, and the
sanitizer configs come with the kit's .bazelrc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bcox merged commit 918ce333a4 into main 2026-11-05 01:50:43 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bcox/procrastinator!1
No description provided.