diff --git a/README.md b/README.md
index e588da7..78a7211 100644
--- a/README.md
+++ b/README.md
@@ -87,11 +87,11 @@ Keep the font license (`licenses/`) with redistributed packages.
Every branch and pull-request pipeline also builds a combined Windows preview
ZIP, `bass-foundry-windows-x86_64.zip`, in its **windows** job. Use it to test unreleased changes.
-> **Upgrading from Motif Storyboard or Resonance Compressor?** These are now
-> Rivet and Patina. The CLAP IDs and saved state are unchanged, so projects
-> still load. Delete the old `.clap` files and rescan. The vendor name changed
-> from "Rivet & Patina" to "Bass Foundry", so FL Studio may list the plugins
-> in a new vendor folder after the rescan.
+> **Upgrading from an earlier build?** The CLAP IDs changed from
+> `io.storyboard.*` to `io.narl.bass-foundry.`, so hosts see each
+> plugin as new. Delete the old `.clap` files, rescan, and add the plugins again
+> in existing projects. Motif Storyboard and Resonance Compressor are now Rivet
+> and Patina, and the vendor is "Bass Foundry".
## Build from source
diff --git a/docs/anvil/CHANGELOG.md b/docs/anvil/CHANGELOG.md
index 5c441c4..4c675dd 100644
--- a/docs/anvil/CHANGELOG.md
+++ b/docs/anvil/CHANGELOG.md
@@ -1,5 +1,11 @@
# Anvil changelog
+## 0.2.0
+
+- Change the CLAP ID to `io.narl.bass-foundry.anvil`. Hosts see this as a new
+ plugin: delete the old `.clap` file, rescan, and add the plugin again in
+ existing projects.
+
## 0.1.0
- Introduce Anvil, a sub anchor for bass music.
diff --git a/docs/crucible/CHANGELOG.md b/docs/crucible/CHANGELOG.md
index 03ff0b7..b65519a 100644
--- a/docs/crucible/CHANGELOG.md
+++ b/docs/crucible/CHANGELOG.md
@@ -1,5 +1,11 @@
# Crucible changelog
+## 0.2.0
+
+- Change the CLAP ID to `io.narl.bass-foundry.crucible`. Hosts see this as a new
+ plugin: delete the old `.clap` file, rescan, and add the plugin again in
+ existing projects.
+
## 0.1.0
- Introduce Crucible, a resampler that always records its input.
diff --git a/docs/development.md b/docs/development.md
index 7c256e0..c40fa12 100644
--- a/docs/development.md
+++ b/docs/development.md
@@ -136,20 +136,23 @@ identify plugins by CLAP ID, so the vendor name does not affect saved projects.
| Product | Former display name | CLAP ID |
| --- | --- | --- |
-| Rivet | Motif Storyboard | `io.storyboard.motif` |
-| Patina | Resonance Compressor | `io.storyboard.resonance-compressor` |
-| Anvil | (new) | `io.storyboard.sub-anchor` |
-| Crucible | (new) | `io.storyboard.resampler` |
-| Lathe | (new) | `io.storyboard.harmonic-eq` |
-| Temper | (new) | `io.storyboard.tracked-distortion` |
-| Weld | (new) | `io.storyboard.layer-align` |
-| Knurl | (new) | `io.storyboard.cycle-texture` |
+| Rivet | Motif Storyboard | `io.narl.bass-foundry.rivet` |
+| Patina | Resonance Compressor | `io.narl.bass-foundry.patina` |
+| Anvil | (new) | `io.narl.bass-foundry.anvil` |
+| Crucible | (new) | `io.narl.bass-foundry.crucible` |
+| Lathe | (new) | `io.narl.bass-foundry.lathe` |
+| Temper | (new) | `io.narl.bass-foundry.temper` |
+| Weld | (new) | `io.narl.bass-foundry.weld` |
+| Knurl | (new) | `io.narl.bass-foundry.knurl` |
-The `io.storyboard.` prefix is historical and stays, because changing a CLAP ID
-breaks existing projects. Rivet keeps `story-session-v1` and its session
-migration. Patina keeps all parameter IDs. The copyright notice keeps its
-original holder name. Replace old plugin files before rescanning, so no CLAP ID
-is installed twice, and check that existing projects still load in FL Studio.
+CLAP IDs use the form `io.narl.bass-foundry.`. Builds tagged before
+this scheme used `io.storyboard.*` IDs; hosts treat the new IDs as different
+plugins, so projects saved with those builds need the plugin added again. From now on an ID is frozen: if a product is renamed, its CLAP ID
+stays. A new plugin gets `io.narl.bass-foundry.` with its product slug.
+
+Rivet keeps `story-session-v1` and its session migration. Patina keeps all
+parameter IDs. The copyright notice keeps its original holder name. Delete old
+plugin files before rescanning, so FL Studio does not list both builds.
See [releases](releases.md) for tagged publishing. Runs on the real Gitea runner
and checks in FL Studio are separate from the local checks.
diff --git a/docs/knurl/CHANGELOG.md b/docs/knurl/CHANGELOG.md
index 342bb47..5275339 100644
--- a/docs/knurl/CHANGELOG.md
+++ b/docs/knurl/CHANGELOG.md
@@ -1,5 +1,11 @@
# Knurl changelog
+## 0.2.0
+
+- Change the CLAP ID to `io.narl.bass-foundry.knurl`. Hosts see this as a new
+ plugin: delete the old `.clap` file, rescan, and add the plugin again in
+ existing projects.
+
## 0.1.0
- Introduce Knurl, texture per cycle of the played note.
diff --git a/docs/lathe/CHANGELOG.md b/docs/lathe/CHANGELOG.md
index 45b1f3c..b61fd3b 100644
--- a/docs/lathe/CHANGELOG.md
+++ b/docs/lathe/CHANGELOG.md
@@ -1,5 +1,11 @@
# Lathe changelog
+## 0.2.0
+
+- Change the CLAP ID to `io.narl.bass-foundry.lathe`. Hosts see this as a new
+ plugin: delete the old `.clap` file, rescan, and add the plugin again in
+ existing projects.
+
## 0.1.0
- Introduce Lathe, a harmonic EQ for bass sound design.
diff --git a/docs/patina/CHANGELOG.md b/docs/patina/CHANGELOG.md
index 90c5c53..9146d59 100644
--- a/docs/patina/CHANGELOG.md
+++ b/docs/patina/CHANGELOG.md
@@ -1,5 +1,11 @@
# Patina changelog
+## 0.3.0
+
+- Change the CLAP ID to `io.narl.bass-foundry.patina`. Hosts see this as a new
+ plugin: delete the old `.clap` file, rescan, and add the plugin again in
+ existing projects.
+
## 0.2.0
- Rebuild the detector so it finds resonant bumps instead of cutting individual
diff --git a/docs/patina/README.md b/docs/patina/README.md
index 20bcb1e..7724db9 100644
--- a/docs/patina/README.md
+++ b/docs/patina/README.md
@@ -116,12 +116,12 @@ not a worst-case multi-instance guarantee.
## Existing projects and source layout
-The CLAP ID `io.storyboard.resonance-compressor` is unchanged. Version 0.2
-replaces Amount, Sensitivity, Max cut, Neighborhood, Cut width, and Knee with
-Depth, Sharpness, and Selectivity, so projects saved with 0.1 load those
-controls at their defaults. Replace the former plugin file with `Patina.clap` and
-rescan; avoid two scanned copies with the same ID. Host project recall still
-needs verification in FL Studio.
+The CLAP ID is now `io.narl.bass-foundry.patina` (earlier builds used
+`io.storyboard.resonance-compressor`). Hosts treat Patina as a new plugin, so
+add it again in projects saved with an earlier build. Version 0.2 replaced
+Amount, Sensitivity, Max cut, Neighborhood, Cut width, and Knee with Depth,
+Sharpness, and Selectivity. Delete the old plugin file, place `Patina.clap`, and
+rescan FL Studio.
Source is grouped into `plugins/patina/{core,ui,render,plugin}`. See
[research](research.md), [development](../development.md), and the
diff --git a/docs/releases.md b/docs/releases.md
index 2a2415b..2d00caf 100644
--- a/docs/releases.md
+++ b/docs/releases.md
@@ -7,14 +7,14 @@ workflows are in `.gitea/workflows/`. A plugin's version is the `version` in
| Plugin | Latest tag | Windows download |
| --- | --- | --- |
-| Rivet | `rivet-v0.4.0` | `rivet-windows-x86_64-0.4.0.zip` |
-| Patina | `patina-v0.2.0` | `patina-windows-x86_64-0.2.0.zip` |
-| Anvil | `anvil-v0.1.0` | `anvil-windows-x86_64-0.1.0.zip` |
-| Crucible | `crucible-v0.1.0` | `crucible-windows-x86_64-0.1.0.zip` |
-| Lathe | `lathe-v0.1.0` | `lathe-windows-x86_64-0.1.0.zip` |
-| Temper | `temper-v0.1.0` | `temper-windows-x86_64-0.1.0.zip` |
-| Weld | `weld-v0.1.0` | `weld-windows-x86_64-0.1.0.zip` |
-| Knurl | `knurl-v0.1.0` | `knurl-windows-x86_64-0.1.0.zip` |
+| Rivet | `rivet-v0.5.0` | `rivet-windows-x86_64-0.5.0.zip` |
+| Patina | `patina-v0.3.0` | `patina-windows-x86_64-0.3.0.zip` |
+| Anvil | `anvil-v0.2.0` | `anvil-windows-x86_64-0.2.0.zip` |
+| Crucible | `crucible-v0.2.0` | `crucible-windows-x86_64-0.2.0.zip` |
+| Lathe | `lathe-v0.2.0` | `lathe-windows-x86_64-0.2.0.zip` |
+| Temper | `temper-v0.2.0` | `temper-windows-x86_64-0.2.0.zip` |
+| Weld | `weld-v0.2.0` | `weld-windows-x86_64-0.2.0.zip` |
+| Knurl | `knurl-v0.2.0` | `knurl-windows-x86_64-0.2.0.zip` |
## Make a release
diff --git a/docs/rivet/CHANGELOG.md b/docs/rivet/CHANGELOG.md
index e118127..017211f 100644
--- a/docs/rivet/CHANGELOG.md
+++ b/docs/rivet/CHANGELOG.md
@@ -1,5 +1,11 @@
# Rivet changelog
+## 0.5.0
+
+- Change the CLAP ID to `io.narl.bass-foundry.rivet`. Hosts see this as a new
+ plugin: delete the old `.clap` file, rescan, and add the plugin again in
+ existing projects.
+
## 0.4.0
- Storyboard: a timeline of blocks with roles (statement, answer, departure,
diff --git a/docs/rivet/README.md b/docs/rivet/README.md
index 3a25b1c..04c767b 100644
--- a/docs/rivet/README.md
+++ b/docs/rivet/README.md
@@ -145,8 +145,8 @@ and silent startup at several sample rates and buffer sizes.
## Existing projects
-The name, Cargo packages, source paths, and output filename have changed.
-The CLAP ID `io.storyboard.motif`, `story-session-v1` host field, and session
-JSON format are preserved. Rescan FL Studio after replacing the old plugin file
-with `Rivet.clap`; remove the old copy from scanned folders to avoid duplicate
-instances with the same ID. Project recall still needs a check in the target host.
+The CLAP ID is now `io.narl.bass-foundry.rivet` (earlier builds used
+`io.storyboard.motif`). Hosts treat Rivet as a new plugin, so add it again in
+projects saved with an earlier build. The `story-session-v1` host field and the
+session JSON format are preserved, so saved sessions still open. Delete the old
+plugin file, place `Rivet.clap`, and rescan FL Studio.
diff --git a/docs/temper/CHANGELOG.md b/docs/temper/CHANGELOG.md
index 79d6221..6ecb0c6 100644
--- a/docs/temper/CHANGELOG.md
+++ b/docs/temper/CHANGELOG.md
@@ -1,5 +1,11 @@
# Temper changelog
+## 0.2.0
+
+- Change the CLAP ID to `io.narl.bass-foundry.temper`. Hosts see this as a new
+ plugin: delete the old `.clap` file, rescan, and add the plugin again in
+ existing projects.
+
## 0.1.0
- Introduce Temper, a note-tracked distortion for bass sound design.
diff --git a/docs/weld/CHANGELOG.md b/docs/weld/CHANGELOG.md
index 9cd6a30..5026d5d 100644
--- a/docs/weld/CHANGELOG.md
+++ b/docs/weld/CHANGELOG.md
@@ -1,5 +1,11 @@
# Weld changelog
+## 0.2.0
+
+- Change the CLAP ID to `io.narl.bass-foundry.weld`. Hosts see this as a new
+ plugin: delete the old `.clap` file, rescan, and add the plugin again in
+ existing projects.
+
## 0.1.0
- Introduce Weld, a phase aligner for layered bass.
diff --git a/plugins/anvil/plugin/Cargo.lock b/plugins/anvil/plugin/Cargo.lock
index f218c81..24d0782 100644
--- a/plugins/anvil/plugin/Cargo.lock
+++ b/plugins/anvil/plugin/Cargo.lock
@@ -72,7 +72,7 @@ checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
[[package]]
name = "anvil"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"anvil-core",
"anvil-ui",
diff --git a/plugins/anvil/plugin/Cargo.toml b/plugins/anvil/plugin/Cargo.toml
index e2d8462..c407937 100644
--- a/plugins/anvil/plugin/Cargo.toml
+++ b/plugins/anvil/plugin/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "anvil"
-version = "0.1.0"
+version = "0.2.0"
edition = "2021"
license = "ISC"
diff --git a/plugins/anvil/plugin/src/lib.rs b/plugins/anvil/plugin/src/lib.rs
index 3643dd6..79c40c4 100644
--- a/plugins/anvil/plugin/src/lib.rs
+++ b/plugins/anvil/plugin/src/lib.rs
@@ -185,7 +185,7 @@ impl Plugin for Anvil {
}
}
impl ClapPlugin for Anvil {
- const CLAP_ID: &'static str = "io.storyboard.sub-anchor";
+ const CLAP_ID: &'static str = "io.narl.bass-foundry.anvil";
const CLAP_DESCRIPTION: Option<&'static str> =
Some("Replace the sub with a clean sine at one level and phase for every note");
const CLAP_MANUAL_URL: Option<&'static str> = None;
diff --git a/plugins/anvil/plugin/tests/host.rs b/plugins/anvil/plugin/tests/host.rs
index 93fdb56..4475654 100644
--- a/plugins/anvil/plugin/tests/host.rs
+++ b/plugins/anvil/plugin/tests/host.rs
@@ -61,7 +61,7 @@ fn effect_ports_state_latency_and_audio_lifecycle() {
assert_eq!(CStr::from_ptr((*descriptor).name), c"Anvil");
assert_eq!(
CStr::from_ptr((*descriptor).id),
- c"io.storyboard.sub-anchor"
+ c"io.narl.bass-foundry.anvil"
);
assert!(factory.get_plugin_descriptor.unwrap()(factory, 1).is_null());
let host = clap_host {
diff --git a/plugins/catalog.json b/plugins/catalog.json
index cd62aac..a07541b 100644
--- a/plugins/catalog.json
+++ b/plugins/catalog.json
@@ -6,7 +6,7 @@
"library": "rivet",
"documentation": "docs/rivet",
"standalone": "rivet",
- "clap_id": "io.storyboard.motif",
+ "clap_id": "io.narl.bass-foundry.rivet",
"packages": [
"rivet-core",
"rivet-midi",
@@ -20,7 +20,7 @@
"manifest": "plugins/patina/plugin/Cargo.toml",
"library": "patina",
"documentation": "docs/patina",
- "clap_id": "io.storyboard.resonance-compressor",
+ "clap_id": "io.narl.bass-foundry.patina",
"licenses": {
"plugins/common/ui/assets/OFL.txt": "licenses/Roboto-OFL.txt"
},
@@ -37,7 +37,7 @@
"manifest": "plugins/anvil/plugin/Cargo.toml",
"library": "anvil",
"documentation": "docs/anvil",
- "clap_id": "io.storyboard.sub-anchor",
+ "clap_id": "io.narl.bass-foundry.anvil",
"licenses": {
"plugins/common/ui/assets/OFL.txt": "licenses/Roboto-OFL.txt"
},
@@ -54,7 +54,7 @@
"manifest": "plugins/crucible/plugin/Cargo.toml",
"library": "crucible",
"documentation": "docs/crucible",
- "clap_id": "io.storyboard.resampler",
+ "clap_id": "io.narl.bass-foundry.crucible",
"licenses": {
"plugins/common/ui/assets/OFL.txt": "licenses/Roboto-OFL.txt"
},
@@ -71,7 +71,7 @@
"manifest": "plugins/lathe/plugin/Cargo.toml",
"library": "lathe",
"documentation": "docs/lathe",
- "clap_id": "io.storyboard.harmonic-eq",
+ "clap_id": "io.narl.bass-foundry.lathe",
"licenses": {
"plugins/common/ui/assets/OFL.txt": "licenses/Roboto-OFL.txt"
},
@@ -88,7 +88,7 @@
"manifest": "plugins/temper/plugin/Cargo.toml",
"library": "temper",
"documentation": "docs/temper",
- "clap_id": "io.storyboard.tracked-distortion",
+ "clap_id": "io.narl.bass-foundry.temper",
"licenses": {
"plugins/common/ui/assets/OFL.txt": "licenses/Roboto-OFL.txt"
},
@@ -105,7 +105,7 @@
"manifest": "plugins/weld/plugin/Cargo.toml",
"library": "weld",
"documentation": "docs/weld",
- "clap_id": "io.storyboard.layer-align",
+ "clap_id": "io.narl.bass-foundry.weld",
"licenses": {
"plugins/common/ui/assets/OFL.txt": "licenses/Roboto-OFL.txt"
},
@@ -121,7 +121,7 @@
"manifest": "plugins/knurl/plugin/Cargo.toml",
"library": "knurl",
"documentation": "docs/knurl",
- "clap_id": "io.storyboard.cycle-texture",
+ "clap_id": "io.narl.bass-foundry.knurl",
"licenses": {
"plugins/common/ui/assets/OFL.txt": "licenses/Roboto-OFL.txt"
},
diff --git a/plugins/crucible/plugin/Cargo.lock b/plugins/crucible/plugin/Cargo.lock
index 21605c3..9e2d086 100644
--- a/plugins/crucible/plugin/Cargo.lock
+++ b/plugins/crucible/plugin/Cargo.lock
@@ -450,7 +450,7 @@ checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6"
[[package]]
name = "crucible"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"clap-sys",
"crucible-core",
diff --git a/plugins/crucible/plugin/Cargo.toml b/plugins/crucible/plugin/Cargo.toml
index c31d8fb..a65a6c3 100644
--- a/plugins/crucible/plugin/Cargo.toml
+++ b/plugins/crucible/plugin/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "crucible"
-version = "0.1.0"
+version = "0.2.0"
edition = "2021"
license = "ISC"
diff --git a/plugins/crucible/plugin/src/lib.rs b/plugins/crucible/plugin/src/lib.rs
index df44830..decea7b 100644
--- a/plugins/crucible/plugin/src/lib.rs
+++ b/plugins/crucible/plugin/src/lib.rs
@@ -185,7 +185,7 @@ impl Plugin for Crucible {
}
}
impl ClapPlugin for Crucible {
- const CLAP_ID: &'static str = "io.storyboard.resampler";
+ const CLAP_ID: &'static str = "io.narl.bass-foundry.crucible";
const CLAP_DESCRIPTION: Option<&'static str> =
Some("Capture the last bars, slice them and export clean, key-labelled samples");
const CLAP_MANUAL_URL: Option<&'static str> = None;
diff --git a/plugins/crucible/plugin/tests/host.rs b/plugins/crucible/plugin/tests/host.rs
index 2ca3e3e..6adc4ab 100644
--- a/plugins/crucible/plugin/tests/host.rs
+++ b/plugins/crucible/plugin/tests/host.rs
@@ -59,7 +59,10 @@ fn effect_ports_state_latency_and_audio_lifecycle() {
let descriptor = factory.get_plugin_descriptor.unwrap()(factory, 0);
assert!(!descriptor.is_null());
assert_eq!(CStr::from_ptr((*descriptor).name), c"Crucible");
- assert_eq!(CStr::from_ptr((*descriptor).id), c"io.storyboard.resampler");
+ assert_eq!(
+ CStr::from_ptr((*descriptor).id),
+ c"io.narl.bass-foundry.crucible"
+ );
assert!(factory.get_plugin_descriptor.unwrap()(factory, 1).is_null());
let host = clap_host {
clap_version: CLAP_VERSION,
diff --git a/plugins/knurl/plugin/Cargo.lock b/plugins/knurl/plugin/Cargo.lock
index a748606..ccdde2a 100644
--- a/plugins/knurl/plugin/Cargo.lock
+++ b/plugins/knurl/plugin/Cargo.lock
@@ -861,7 +861,7 @@ dependencies = [
[[package]]
name = "knurl"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"clap-sys",
"crossbeam-queue",
diff --git a/plugins/knurl/plugin/Cargo.toml b/plugins/knurl/plugin/Cargo.toml
index 9c94cc0..895e0b3 100644
--- a/plugins/knurl/plugin/Cargo.toml
+++ b/plugins/knurl/plugin/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "knurl"
-version = "0.1.0"
+version = "0.2.0"
edition = "2021"
license = "ISC"
diff --git a/plugins/knurl/plugin/src/lib.rs b/plugins/knurl/plugin/src/lib.rs
index f4da474..ce72eb2 100644
--- a/plugins/knurl/plugin/src/lib.rs
+++ b/plugins/knurl/plugin/src/lib.rs
@@ -180,7 +180,7 @@ impl Plugin for Knurl {
}
}
impl ClapPlugin for Knurl {
- const CLAP_ID: &'static str = "io.storyboard.cycle-texture";
+ const CLAP_ID: &'static str = "io.narl.bass-foundry.knurl";
const CLAP_DESCRIPTION: Option<&'static str> =
Some("Texture per cycle of the played note: patterns, jitter and grit that fit every note");
const CLAP_MANUAL_URL: Option<&'static str> = None;
diff --git a/plugins/knurl/plugin/tests/host.rs b/plugins/knurl/plugin/tests/host.rs
index 9cfba7c..a8be561 100644
--- a/plugins/knurl/plugin/tests/host.rs
+++ b/plugins/knurl/plugin/tests/host.rs
@@ -61,7 +61,7 @@ fn effect_ports_state_latency_and_audio_lifecycle() {
assert_eq!(CStr::from_ptr((*descriptor).name), c"Knurl");
assert_eq!(
CStr::from_ptr((*descriptor).id),
- c"io.storyboard.cycle-texture"
+ c"io.narl.bass-foundry.knurl"
);
assert!(factory.get_plugin_descriptor.unwrap()(factory, 1).is_null());
let host = clap_host {
diff --git a/plugins/lathe/plugin/Cargo.lock b/plugins/lathe/plugin/Cargo.lock
index 8a297c1..a181418 100644
--- a/plugins/lathe/plugin/Cargo.lock
+++ b/plugins/lathe/plugin/Cargo.lock
@@ -861,7 +861,7 @@ dependencies = [
[[package]]
name = "lathe"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"clap-sys",
"crossbeam-queue",
diff --git a/plugins/lathe/plugin/Cargo.toml b/plugins/lathe/plugin/Cargo.toml
index facc04e..46e76ba 100644
--- a/plugins/lathe/plugin/Cargo.toml
+++ b/plugins/lathe/plugin/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "lathe"
-version = "0.1.0"
+version = "0.2.0"
edition = "2021"
license = "ISC"
diff --git a/plugins/lathe/plugin/src/lib.rs b/plugins/lathe/plugin/src/lib.rs
index e4bbe33..1020c3b 100644
--- a/plugins/lathe/plugin/src/lib.rs
+++ b/plugins/lathe/plugin/src/lib.rs
@@ -174,7 +174,7 @@ impl Plugin for Lathe {
}
}
impl ClapPlugin for Lathe {
- const CLAP_ID: &'static str = "io.storyboard.harmonic-eq";
+ const CLAP_ID: &'static str = "io.narl.bass-foundry.lathe";
const CLAP_DESCRIPTION: Option<&'static str> =
Some("EQ the harmonics of the played note: a cut on harmonic 3 stays on harmonic 3");
const CLAP_MANUAL_URL: Option<&'static str> = None;
diff --git a/plugins/lathe/plugin/tests/host.rs b/plugins/lathe/plugin/tests/host.rs
index 018af67..da47122 100644
--- a/plugins/lathe/plugin/tests/host.rs
+++ b/plugins/lathe/plugin/tests/host.rs
@@ -61,7 +61,7 @@ fn effect_ports_state_latency_and_audio_lifecycle() {
assert_eq!(CStr::from_ptr((*descriptor).name), c"Lathe");
assert_eq!(
CStr::from_ptr((*descriptor).id),
- c"io.storyboard.harmonic-eq"
+ c"io.narl.bass-foundry.lathe"
);
assert!(factory.get_plugin_descriptor.unwrap()(factory, 1).is_null());
let host = clap_host {
diff --git a/plugins/patina/plugin/Cargo.lock b/plugins/patina/plugin/Cargo.lock
index 429d283..5f9aa23 100644
--- a/plugins/patina/plugin/Cargo.lock
+++ b/plugins/patina/plugin/Cargo.lock
@@ -1419,7 +1419,7 @@ dependencies = [
[[package]]
name = "patina"
-version = "0.2.0"
+version = "0.3.0"
dependencies = [
"clap-sys",
"crossbeam-queue",
diff --git a/plugins/patina/plugin/Cargo.toml b/plugins/patina/plugin/Cargo.toml
index 4505a80..866f950 100644
--- a/plugins/patina/plugin/Cargo.toml
+++ b/plugins/patina/plugin/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "patina"
-version = "0.2.0"
+version = "0.3.0"
edition = "2021"
license = "ISC"
diff --git a/plugins/patina/plugin/src/lib.rs b/plugins/patina/plugin/src/lib.rs
index 0d9ad89..cbc9962 100644
--- a/plugins/patina/plugin/src/lib.rs
+++ b/plugins/patina/plugin/src/lib.rs
@@ -187,7 +187,7 @@ fn store_epoch(ctx: &egui::Context, e: u64) {
ctx.data_mut(|d| d.insert_temp(egui::Id::new("reset-epoch"), e));
}
impl ClapPlugin for Patina {
- const CLAP_ID: &'static str = "io.storyboard.resonance-compressor";
+ const CLAP_ID: &'static str = "io.narl.bass-foundry.patina";
const CLAP_DESCRIPTION: Option<&'static str> =
Some("Dynamic resonance attenuation with explicit tone protection");
const CLAP_MANUAL_URL: Option<&'static str> = None;
diff --git a/plugins/patina/plugin/tests/host.rs b/plugins/patina/plugin/tests/host.rs
index d80fa75..e838692 100644
--- a/plugins/patina/plugin/tests/host.rs
+++ b/plugins/patina/plugin/tests/host.rs
@@ -61,7 +61,7 @@ fn effect_ports_state_latency_and_audio_lifecycle() {
assert_eq!(CStr::from_ptr((*descriptor).name), c"Patina");
assert_eq!(
CStr::from_ptr((*descriptor).id),
- c"io.storyboard.resonance-compressor"
+ c"io.narl.bass-foundry.patina"
);
assert!(factory.get_plugin_descriptor.unwrap()(factory, 1).is_null());
let host = clap_host {
diff --git a/plugins/rivet/plugin/Cargo.lock b/plugins/rivet/plugin/Cargo.lock
index 221d444..346069d 100644
--- a/plugins/rivet/plugin/Cargo.lock
+++ b/plugins/rivet/plugin/Cargo.lock
@@ -2054,7 +2054,7 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
[[package]]
name = "rivet"
-version = "0.4.0"
+version = "0.5.0"
dependencies = [
"clap-sys",
"nih_plug",
diff --git a/plugins/rivet/plugin/Cargo.toml b/plugins/rivet/plugin/Cargo.toml
index 8373c7b..53679f2 100644
--- a/plugins/rivet/plugin/Cargo.toml
+++ b/plugins/rivet/plugin/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "rivet"
-version = "0.4.0"
+version = "0.5.0"
edition = "2021"
license = "ISC"
diff --git a/plugins/rivet/plugin/src/lib.rs b/plugins/rivet/plugin/src/lib.rs
index 4664194..32b6ba8 100644
--- a/plugins/rivet/plugin/src/lib.rs
+++ b/plugins/rivet/plugin/src/lib.rs
@@ -177,7 +177,7 @@ impl Plugin for Rivet {
}
}
impl ClapPlugin for Rivet {
- const CLAP_ID: &'static str = "io.storyboard.motif";
+ const CLAP_ID: &'static str = "io.narl.bass-foundry.rivet";
const CLAP_DESCRIPTION: Option<&'static str> = Some(
"Tell a MIDI motif as a story: a storyboard of statement, answer, departure and return",
);
diff --git a/plugins/rivet/plugin/tests/host.rs b/plugins/rivet/plugin/tests/host.rs
index 5c11ac1..f5f6432 100644
--- a/plugins/rivet/plugin/tests/host.rs
+++ b/plugins/rivet/plugin/tests/host.rs
@@ -59,7 +59,10 @@ fn exported_factory_state_and_silent_audio_lifecycle() {
let descriptor = factory.get_plugin_descriptor.unwrap()(factory, 0);
assert!(!descriptor.is_null());
assert_eq!(CStr::from_ptr((*descriptor).name), c"Rivet");
- assert_eq!(CStr::from_ptr((*descriptor).id), c"io.storyboard.motif");
+ assert_eq!(
+ CStr::from_ptr((*descriptor).id),
+ c"io.narl.bass-foundry.rivet"
+ );
assert!(factory.get_plugin_descriptor.unwrap()(factory, 1).is_null());
let host = clap_host {
clap_version: CLAP_VERSION,
diff --git a/plugins/temper/plugin/Cargo.lock b/plugins/temper/plugin/Cargo.lock
index 4eedc63..b742d82 100644
--- a/plugins/temper/plugin/Cargo.lock
+++ b/plugins/temper/plugin/Cargo.lock
@@ -1734,7 +1734,7 @@ dependencies = [
[[package]]
name = "temper"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"clap-sys",
"crossbeam-queue",
diff --git a/plugins/temper/plugin/Cargo.toml b/plugins/temper/plugin/Cargo.toml
index 067cf14..4c588f0 100644
--- a/plugins/temper/plugin/Cargo.toml
+++ b/plugins/temper/plugin/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "temper"
-version = "0.1.0"
+version = "0.2.0"
edition = "2021"
license = "ISC"
diff --git a/plugins/temper/plugin/src/lib.rs b/plugins/temper/plugin/src/lib.rs
index 77e513f..085f142 100644
--- a/plugins/temper/plugin/src/lib.rs
+++ b/plugins/temper/plugin/src/lib.rs
@@ -167,7 +167,7 @@ impl Plugin for Temper {
}
}
impl ClapPlugin for Temper {
- const CLAP_ID: &'static str = "io.storyboard.tracked-distortion";
+ const CLAP_ID: &'static str = "io.narl.bass-foundry.temper";
const CLAP_DESCRIPTION: Option<&'static str> = Some(
"Distortion whose drive and tone filters follow the note, so every note distorts the same",
);
diff --git a/plugins/temper/plugin/tests/host.rs b/plugins/temper/plugin/tests/host.rs
index 4453ba3..be5fef5 100644
--- a/plugins/temper/plugin/tests/host.rs
+++ b/plugins/temper/plugin/tests/host.rs
@@ -61,7 +61,7 @@ fn effect_ports_state_latency_and_audio_lifecycle() {
assert_eq!(CStr::from_ptr((*descriptor).name), c"Temper");
assert_eq!(
CStr::from_ptr((*descriptor).id),
- c"io.storyboard.tracked-distortion"
+ c"io.narl.bass-foundry.temper"
);
assert!(factory.get_plugin_descriptor.unwrap()(factory, 1).is_null());
let host = clap_host {
diff --git a/plugins/weld/plugin/Cargo.lock b/plugins/weld/plugin/Cargo.lock
index d9d67e3..48a06ca 100644
--- a/plugins/weld/plugin/Cargo.lock
+++ b/plugins/weld/plugin/Cargo.lock
@@ -2056,7 +2056,7 @@ dependencies = [
[[package]]
name = "weld"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"clap-sys",
"crossbeam-queue",
diff --git a/plugins/weld/plugin/Cargo.toml b/plugins/weld/plugin/Cargo.toml
index 9d3f0d5..1c44ced 100644
--- a/plugins/weld/plugin/Cargo.toml
+++ b/plugins/weld/plugin/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "weld"
-version = "0.1.0"
+version = "0.2.0"
edition = "2021"
license = "ISC"
diff --git a/plugins/weld/plugin/src/lib.rs b/plugins/weld/plugin/src/lib.rs
index ea8e886..2d8584a 100644
--- a/plugins/weld/plugin/src/lib.rs
+++ b/plugins/weld/plugin/src/lib.rs
@@ -198,7 +198,7 @@ impl Plugin for Weld {
}
}
impl ClapPlugin for Weld {
- const CLAP_ID: &'static str = "io.storyboard.layer-align";
+ const CLAP_ID: &'static str = "io.narl.bass-foundry.weld";
const CLAP_DESCRIPTION: Option<&'static str> = Some(
"Align the phase of a bass layer to a sidechain layer so the two sum instead of cancel",
);
diff --git a/plugins/weld/plugin/tests/host.rs b/plugins/weld/plugin/tests/host.rs
index 27f7dfe..cc08cb7 100644
--- a/plugins/weld/plugin/tests/host.rs
+++ b/plugins/weld/plugin/tests/host.rs
@@ -61,7 +61,7 @@ fn sidechain_port_state_latency_and_audio_lifecycle() {
assert_eq!(CStr::from_ptr((*descriptor).name), c"Weld");
assert_eq!(
CStr::from_ptr((*descriptor).id),
- c"io.storyboard.layer-align"
+ c"io.narl.bass-foundry.weld"
);
let host = clap_host {
clap_version: CLAP_VERSION,
diff --git a/website/src/components/Install.astro b/website/src/components/Install.astro
index 9dacb2f..953f3d4 100644
--- a/website/src/components/Install.astro
+++ b/website/src/components/Install.astro
@@ -40,6 +40,10 @@ import { REPO } from '../data/plugins';
Open Options → Manage plugins, enable Verify plugins and click Find installed plugins.
The plugins appear under the vendor Bass Foundry.
+
+ Upgrading from a build before November 2026? The plugin IDs changed, so delete the old
+ .clap files first and add the plugins again in existing projects.
+