Apply novonotes internal changes#107
Draft
satoshi-szk wants to merge 52 commits into
Draft
Conversation
Products need to own their xtask CLI and distribution graph while reusing WRAC build tasks as building blocks.
The old wrac_xtask::run entrypoint was removed when wrac_xtask became a building-block crate, but the template xtask still imported it. This keeps the repository-local CLI behavior while routing commands through WracWorkspace and WracCommand.
The repository-local xtask now uses wrac_xtask as typed building blocks, so keep main.rs focused on workspace wiring and move argument parsing into cli.rs. This also makes the CLI help document the boundary between the template and wrac_xtask.
Keep the template xtask limited to workspace wiring so the CLI help and typed command conversion stay owned by wrac_xtask.
Avoid rebuilding the same SDK validator for every plugin validation run and route the macOS Xcode build through the existing quiet xcbeautify path.
Create the TypeScript package boundary before moving shared WebView runtime behavior into it.
Keep installed frontend dependencies out of the repository while preserving the package scaffold.
Centralize frontend command names and wire payloads before moving behavior helpers into the shared package.
Share host resize queuing and native drag lifecycle while keeping DOM integration optional for product GUIs.
Keep host-specific cursor workarounds in the shared frontend runtime instead of product GUIs.
Share host focus restoration and frontend log forwarding without forcing product-specific UI structure.
Exercise the runtime package in the template GUI and remove local copies of resize, cursor, focus, and log helpers.
Explain the shared runtime scope and keep product-specific GUI contracts out of the package.
Let product GUIs preserve their focus behavior while sharing the host focus restoration helper.
Introduce a shared manifest parser and descriptor generation path so plugin identity can move from Cargo metadata to wrac-plugin.toml without duplicating host-visible IDs.
Keep Vite resolving peer dependencies through the GUI package when the shared runtime is installed from a local file dependency.
Satisfy the workspace clippy configuration while keeping the custom TOML deserialization behavior for package metadata.
…ntime Share WRAC frontend runtime helpers
Lock down host-visible ID conversions from wrac-plugin.toml so FourCC, VST3 component ID bytes, and AAX product/stem IDs do not regress silently.
…fest Add WRAC plugin manifest support
Explain each internal crate and package near its entry point so template users can understand the manifest, build helpers, xtask, and frontend package without relying on a stale root-level inventory.
Keep each plugin's AAX stem configs visually attached to its plugin block so template users do not need to understand nested TOML array-of-table context.
Reject plugin crates outside src-plugin and frontend packages outside src-gui so downstream repositories cannot rely on ambiguous fallback discovery.
…ayout Enforce conventional WRAC plugin layout
xtask launch --plugin-id already validates the requested product before building. Building only that standalone target avoids rebuilding and signing every app in multi-product packages.
VS Code and other debugger workflows need to build a selected standalone artifact without launching it. The build command now accepts the same product selector used by launch.
…standalone Build only selected standalone app on launch
The adapter should stay a thin safe facade over CLAP instead of exposing higher-level plugin framework abstractions. This splits active and inactive processing, makes parameter query explicit, and moves plugin-originated parameter edits through CLAP flush/output events.
The event-list pair is used by both process and params.flush callbacks. Naming it ProcessEvents made the public API look like flush received process-specific data, so use EventLists to reflect the actual CLAP surface.
PluginInstance initializes the processor lifecycle in its inactive state. The method may also be used to recover after an activation failure, so name and document that lifecycle explicitly instead of making it look like normal deactivation creates a new inactive processor.
Inactive params.flush runs on a non-realtime control thread, so the adapter can wait for the processor guard instead of dropping host-provided parameter events when concurrent calls arrive. Active process and active params.flush keep the try-only realtime path.
Document into_any as a control-thread ownership recovery hook so the adapter API keeps its lifecycle escape hatch explicit without implying realtime processing behavior.
Route CLAP params.flush input events through a thread-safe params fallback when the processor or lifecycle guard cannot be borrowed. This keeps the flush callback non-blocking while preserving host-to-plugin parameter updates under wrapper call-order deviations.
Remove the params-query input fallback added for busy flush handling. params.flush now stays on the processor callback surface and uses try-only guards so wrapper call-order deviations cannot block the realtime path. Move PluginParamsQuery out of the extensions module because WRAC treats params as a basic API surface, not an optional public extension.
Simplify WRAC CLAP adapter API
Share the existing --all package discovery with downstream CI helpers so they can build plugin matrices without duplicating Cargo metadata and manifest lookup rules.
Allow downstream repositories to provide a repository-local AAX SDK path without requiring developers to persist AAX_SDK_ROOT in their shell or .env.
The wrapper build explicitly uses the Visual Studio 17 2022 CMake generator, so CI must run on an image that provides that Visual Studio installation.
…root Make the default AAX SDK path configurable
Validators can start multiple plugin processes that race to archive the same Latest log. Treat a missing source after the existence check as already archived so validation output stays clean.
Explain the repository setup command directly when AAX builds cannot find the SDK, so developers have a concise next action.
AAX_SDK_ROOT is an override when an xtask configuration provides a default SDK path, so the CLI help should not imply that the environment variable is always required.
windows-latest now resolves to a Visual Studio 2026 image, while WRAC wrapper configuration still forced the Visual Studio 2022 CMake generator. Detecting the installed Visual Studio version keeps CI and local Windows builds compatible with both VS 2022 and VS 2026 images.
…s-detection Detect Windows CMake generator
Hot reload wrappers need to forward inner plugin host requests through the outer WRAC host proxy without reaching for raw CLAP pointers.
Clarify that these wrappers expose host callback groups instead of single high-level requests.
Keep the novonotes-internal branch aligned with the workspace rustfmt check.
Allow Windows runners with a newer Visual Studio installation version to use the latest Visual Studio generator that the installed CMake actually supports.
Use CMake as the source of truth for supported Visual Studio generators while keeping vswhere only as an MSBuild availability check.
…selection CMake の Visual Studio generator 選択を実在一覧ベースにする
…mand Resolve Windows package manager commands from PATH
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.
No description provided.