Plugin Catalog (Solution Coverage)
1. Core host/runtime projects
| Project | Role | Primary source files |
|---|---|---|
RetroWaveLab.Host.WinForms | Main window, root/context menu construction, docking/floating host, layout restore/save. | src/RetroWaveLab.Host.WinForms/MainForm.cs, src/RetroWaveLab.Host.WinForms/Docking/DockHost.cs |
RetroWaveLab.Core.Runtime | Runtime bus implementations, document service, preset store, plugin loader. | src/RetroWaveLab.Core.Runtime/Buses.cs, src/RetroWaveLab.Core.Runtime/Documents.cs, src/RetroWaveLab.Core.Runtime/Presets.cs, src/RetroWaveLab.Core.Runtime/PluginLoader.cs |
RetroWaveLab.UI.Graphing | Reusable graph control engine and point edit dialogue. | src/RetroWaveLab.UI.Graphing/GraphEditorControlBase.cs, src/RetroWaveLab.UI.Graphing/GraphPointEditDialog.cs |
RetroWaveLab.VstBridge | Managed bridge API used by VST host plugin for native bridge calls. | src/RetroWaveLab.VstBridge/VstBridgeApi.cs |
RetroWaveLab.Codecs.Wav | WAV codec plugin for read/write. | src/RetroWaveLab.Codecs.Wav/WavCodecPlugin.cs |
2. Docked pane plugins
| Plugin project | PaneId | Title | Placement | Dock flags |
|---|---|---|---|---|
RetroWaveLab.Plugins.FileInspector | file-inspector.main | File Inspector | Left | AllowVertical=true, AllowHorizontal=true, CanUndock=true (default) |
RetroWaveLab.Plugins.SampleEditor | core.sample-editor | Sample Editor | Center | AllowVertical=false, AllowHorizontal=true, CanUndock=false |
RetroWaveLab.Plugins.SampleEditor | core.undo-history | Undo History | Right | AllowVertical=true, AllowHorizontal=true, CanUndock=true |
RetroWaveLab.Plugins.TransportMock | transport-mock.panel | Transport | Top | AllowVertical=true, AllowHorizontal=true, CanUndock=true (default) |
RetroWaveLab.Plugins.CursorDisplay | cursor-display.panel | Cursor | Bottom | AllowVertical=true, AllowHorizontal=true, CanUndock=true (default) |
RetroWaveLab.Plugins.CursorInfo | cursor-info.panel | Cursor Info | Bottom | AllowVertical=true, AllowHorizontal=true, CanUndock=true (default) |
RetroWaveLab.Plugins.VuMeter | sample-tools.vu | VU Meter | Bottom | AllowVertical=true, AllowHorizontal=true, CanUndock=true (default) |
RetroWaveLab.Plugins.VstHost | plugins.vst-host | VST Browser | Left | AllowVertical=true, AllowHorizontal=true, CanUndock=true |
3. Plugin menu roots and key paths
These are the key menu paths currently registered by plugin code. Dynamic entries are shown as placeholders.
| Plugin project | Main menu paths | Context menu paths |
|---|---|---|
RetroWaveLab.Plugins.FileWorkflow | File.10.*, File.20.*, File.30.*, File.40.{caption}, File.50.Exit | - |
RetroWaveLab.Plugins.SampleEditor | Edit.10.Undo, Edit.10.Redo, Edit.20.Copy/Cut/Paste..., View.pluginsgroup.Show Sample Editor, View.pluginsgroup.Show Undo History | Owns waveform menu rendering + calls host context menu surface SampleEditor.Wave |
RetroWaveLab.Plugins.MiscEffects | Effects.misc.Invert, Effects.misc.Reverse, Effects.misc.Silence, Effects.Special.Seamless Loop... | effectsgroup.Silence on SampleEditor.Wave |
RetroWaveLab.Plugins.Smoothing | Effects.100.Amplitude.Smooth | effectsgroup.Smoothing on SampleEditor.Wave |
RetroWaveLab.Plugins.Amplitude | Effects.100.Amplitude.* (Amplify, Channel Mixer, Dynamics Processing, Envelope, Hard Limiting, Normalize, Pan/Expand, Stereo Field Rotate) | - |
RetroWaveLab.Plugins.Filters | Effects.100.Filters.* | - |
RetroWaveLab.Plugins.ConvertSampleType | Edit.90.Convert Sample Type | - |
RetroWaveLab.Plugins.Settings | Options.90.Settings... | - |
RetroWaveLab.Plugins.ExternalTools | Tools.10.Manage Tools..., Tools.20.{menuLabel} | - |
RetroWaveLab.Plugins.VstHost | Effects.1000.VST.Rescan VST3 Plugins, Effects.1000.VST.Apply VST, Effects.1000.VST.{label}, View.pluginsgroup.Show VST Browser | - |
RetroWaveLab.Plugins.TransportMock | Transport.Playback.*, Generate.Test Signals.*, View.pluginsgroup.Show Transport | - |
RetroWaveLab.Plugins.CursorDisplay | View.pluginsgroup.Show Cursor | - |
RetroWaveLab.Plugins.CursorInfo | View.pluginsgroup.Show Cursor Info | - |
RetroWaveLab.Plugins.FileInspector | View.pluginsgroup.Show File Inspector, View.focusgroup.Focus File Inspector, File.Diagnostics.Dump Sample State | - |
RetroWaveLab.Plugins.VuMeter | View.pluginsgroup.Show VU Meter, View.debug.Publish Demo Meter Frame | - |
Menu ordering rules are in Menus.
4. Canonical registration patterns used by catalog entries
// menu registration pattern used across plugins
foreach (var menu in GetMenuContributions())
{
context.WindowManager.AddMenuContribution(menu.Sort, menu.MenuPath, menu.Execute, menu.IsEnabled);
}
// dock pane registration pattern
yield return new DockPaneRegistration(
PaneId: "example.pane-id",
Title: "Example Pane",
DefaultPlacement: DockPlacement.Left,
CreateView: () => new ExampleControl(),
AllowVerticalNeighbour: true,
AllowHorizontalNeighbour: true,
CanUndock: true);