X-Or Release Notes
==================

1.0.3
Voice-handling hotfix for X-Or.


Fixed
-----
- Fast repeated notes (1/16 bass repeats, same note held and re-struck, lower-note steals, higher held-note arrivals while a note is gated) now produce a distinct attack on every key press. Previously the envelope could merge consecutive hits into one held note, especially with non-tiny decay settings - effectively a haunted sustain pedal. Every accepted note-on now restarts the envelope from zero (strict mono retrigger).
- Note releases now decay at the last played pitch instead of jumping to a fixed A. Previously, when a note-off emptied the voice stack the oscillator target collapsed to the internal idle pitch (MIDI A2) while the release tail was still audible, so every note's release tail rang as A. The voice state now latches the most recently sounding note and preserves it across the release tail; the idle pitch is only used at startup and after reset.
- Eliminated the audible click on hard retriggers with short attack and non-tiny decay. The strict mono retrigger above slams the loudness envelope to zero before re-attacking, which produced a step discontinuity (and an audible click) whenever the prior note still had gain - typically with loudness attack below ~0.8 ms combined with decay above ~12-15 ms. A short 2 ms crossfade at the VCA input now rides the prior loudness gain down to zero while the new attack rises, keeping the loudness output continuous without changing the retrigger semantic (the envelope itself still slams and restarts). The window is sized to mask the slam under all currently tested hosts including Ableton Live (which exposed residual crackle at a shorter 1 ms window).


Notes
-----
- Pitch selection rules are unchanged: low-note priority still governs which held note sounds. Only the envelope retrigger and release-tail pitch behavior changed.
- Note-off uncovering a held higher note still does not retrigger - that case remains a smooth pitch follow with no fresh attack.
- X-Or remains transposed by design: incoming MIDI notes are still played one octave down, so MIDI A2 triggers A1.
- This release ships Windows (VST3/CLAP) first; the Linux package will follow.
