Changelog

5

v0.11.2 — 2026-03-27

Bug Fixes:

  • Fixed crash (use-after-free) when license is revoked: AboutPopup::onLicenseChanged now uses SafePointer to guard callAsync against post-destruction access
  • Fixed 429 Too Many Requests from license backend: startupCheckAsync moved from constructor to post-init, eliminating rapid retry storms on revoked tokens
  • Fixed UTF-8 encoding in license banner and Sanity mode label (bullet/em-dash characters)
  • Fixed Upgrade button remaining visible after a license key is entered (even if expired)

v0.11.0–v0.11.1 — 2026-03-26

New Features:

  • SQLite Knowledge Engine — VSTKnowledgeDB stores plugin parameters with tags, priority, constraints. Auto-populated on plugin load, queried by PromptBuilder for AI context
  • get_full_context MCP tool — returns topology + tag-filtered params + constraints in one call; replaces the 3-call get_patch_architecture + list_hosted_params_ai_ready + constraints sequence
  • session_topology_cache — param_hash caching avoids redundant get_patch_architecture calls when plugin state is unchanged
  • Window size persistence — SYNAPSE remembers its last size; reset button (↺) in the bottom bar
  • PromptBuilder plugin guidance — Spire, Zebra2, TAL-U-NO-LX injection with oscillator requirement hints

v0.10.0 — 2026-03-24

New Features:

  • get_full_context / get_params_batch / get_plugin_state_b64 / set_plugin_state_b64 — bulk MCP tools
  • patch_plugin_routing — Zebra2 routing topology via XML state injection (non-automatable routing workaround)
  • probe_plugin_compat — auto-probe non-automatable params; writes to VSTKnowledgeDB
  • Macro detection (§22.4) — top 8 macro candidates from hosted plugin surfaced in MacroBar
  • AI Settings Tab 3 — per-function prompt overrides now applied to AI engine
  • MIDI CC assignment UI — CC# editable field per param in TargetMapPanel
  • MCP payload optimization — skip_unnamed, include_inactive_osc, compact mode (Sprint 39)
  • Trial mode Upgrade CTA — upgrade button + purchase modal
  • Cloudflare admin backend — landing page, admin SPA, machines modal, seats counter
  • LicenseManager hardening — alive guard, 15 s timeout, crash fix, 5 unit tests

v0.9.0 — 2026-03-22

New Features:

  • set_ai_config / get_ai_config — configure AI provider, API key, model, endpoint via MCP (headless)
  • get_patch_architecture — full patch topology in one call: oscillators, envelopes, params by role, quick_guide constraint hint
  • Scan checkpoint / resume — scan_checkpoint.json written every 25 plugins; loaded on restart after crash
  • MD5-CTR stream cipher for API key storage (ENC2: prefix)
  • Cloudflare Worker deployed — synapse-license-api.thewonderfulworldof.workers.dev (routes: /validate, /activate, /token/renew, /admin/licenses…)
  • Zebra2 waveform table parsing (ZebraStateChunkParser phase 2) — waveform names injected into PromptBuilder
  • OSC settings UI — send/receive port and IP fields, persisted in UIPrefs

v0.4.6 — 2026-03-01 (build 176)

Crash Fixes:

  • Fixed use-after-free: atomic pluginReady flag protects processBlock() during hosted plugin swap/unload
  • Fixed FIFO setParameter: queueParameter() / flushDeferredParams() — non-audio writes to hosted plugin without locks
  • Added stale-response guard: obsolete AI responses (plugin changed between request and response) are ignored
  • Fixed FIFO off-by-one: juce::AbstractFifo(N) holds N-1 items — capacity corrected in HostedPluginManager and ParamRouter
  • Fixed parameter name normalization: all non-alphanumeric chars treated as separators — resolves mismatches like "OSC1: Tune" vs "OSC1 : Tune" (canonical source: ParamNameUtils::normaliseName)
  • Fixed AI Settings panel not visible without resize: setSize(W_M, H_M) moved to end of constructor
  • Fixed AI results not applied to hosted plugin (Mode B): PromptBuilder now includes hosted plugin params; response callback applies matches by name
  • Fixed TargetMapPanel cancel button: onCancel propagates to OverlayWrapper visibility
  • Fixed snapshot recall in Mode B: appendValues("_hosted", params) ensures hosted plugin state is saved and restored
  • Fixed MIDI learn bidirectional sync: timerCallback syncs macro knob to plugin param value when plugin changes it

New Features:

  • Local MCP server (§4.3 / §14): 13 JSON-RPC 2.0 tools on 127.0.0.1:52100, bearer token auth
    • set_param, set_params_batch: direct parameter control (no AI, instant)
    • trigger_ai: explicit cloud AI request (separate from direct control)
    • drift_control, breed, set_morph, get_spectral_context, save_snapshot, recall_snapshot, list_targets, list_hosted_params, get_param, get_session_context
  • Macros M1-M8: MIDI learn, automatic binding, bidirectional plugin sync
  • Proportional resize: drag corner, fixed 900:680 ratio, removed S/M/L buttons
  • About Popup: GoRoCoPo version (G0R4C0P0), system info, documentation links
  • Full persistence layer: AISettingsPersistence (JSON + XOR), UIPrefsPersistence, ScanDatabase
  • SynapseIconCache: 24 embedded FA6 SVG icons in BinaryData
  • Three-state AI operation mode: CloudOnly, OfflineOnly, Auto
  • Ollama support: configurable URL, model, 120 s timeout for local inference
  • ModularTopologyProvider: Zebra 2 native module topology, 3 AI topology adapters (Oscillator, Filter, Envelope)
  • ZebraStateChunkParser: native Zebra state chunk parsing for AI context
  • PluginCompatibilityTable: canonical parameter mappings for 40+ plugins (Serum, Vital, Zebra2, Surge XT, Phase Plant, Pigments, Diva, Kontakt, FabFilter, Valhalla…)
  • KnownPluginList XML cache: loaded at startup, persisted across sessions
  • P0.4 Sanity toggle: persisted in UIState ValueTree
  • P1.1 Target Map Import/Export: async FileChooser, .synapsetargets XML format
  • Version stamp: configure-time (not build-time), SynapseVersion.h + SynapseVersionStamp.h

Performance & Robustness:

  • DriftEngine: precomputed driftExcluded[] cache (O(1) vs O(n) per parameter at 30 Hz timer)
  • DriftEngine: failure guard after captureAnchor() if plugin unloaded during resize
  • AI parameter matching: 3 passes (exact, case-insensitive trim, whitespace-normalized)
  • Ollama timeout: 120 s for chat POST (ping uses separate configurable timeout)

Tests (491 passing, 0 failing):

  • 7 new test classes covering FIFO, normalization, topology adapters, compatibility table, breeding, snapshot, MCP server
  • SynapsePluginTests.h: test 12 — concurrent rapid timer writes with processBlock (level 6)
  • Thread-safety architecture note added in the test header

v0.4.0 (in development)

Additions:

  • Hosted Plugin Mode (Mode B)
  • Plugin Browser (scan, categories, favorites, search)
  • Fast Mode / State Chunk Mode
  • .synapse meta-preset
  • Macros M1-M8

Changes:

  • Spec evolution from v0.3 to v0.4
  • Multi-target bridge extension + AI + Audio Brain

v0.3.0

  • Multi-provider AI stack
  • Model benchmarks in documentation
  • Branding and complete English spec

v0.2.0

  • Creative Engine: breeding, mutator, drift, text-to-preset
  • Audio Brain: FFT, F0, centroid, transients
  • Reactive Drift and Spectral Morph

v0.1.0

  • Initial bridge architecture
  • 4 channels: Automation, MIDI CC, MCP, OSC
  • 12 snapshots + 1D/2D morphing
  • Target Map + Sanity Mode