From 6fd844cdf60b942837b23362b64c3709cdf9e375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Forment?= Date: Sun, 1 Mar 2026 19:52:33 +0100 Subject: [PATCH] Update CHANGELOG.md before release --- CHANGELOG.md | 144 ++++++++++++++++++++++++++++----------------------- 1 file changed, 78 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 341a789..3f98ced 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,108 +4,120 @@ All notable changes to this project will be documented in this file. ## [0.1.0] +### Breaking +- **Quotation syntax changed from `{ }` to `( )`** — all deferred code blocks now use parentheses. + ### Forth Language -**Bracket syntax `[ ... ]`** -- `[ v1 v2 v3 ]` pushes all items plus their count. Sugar for `v1 v2 v3 3`. +**Syntax:** +- `[ v1 v2 v3 ]` bracket lists with implicit count. +- `( ... )` quotation syntax (replaces `{ }`). +- `,varname` assignment syntax (SetKeep): assign without consuming. +- `case/of/endof/endcase` control flow. +- `print` — debug word, outputs top-of-stack as text. +- Arithmetic and unary ops now lift over ArpList and CycleList element-wise. **New words:** - `index` — select item at explicit index (wraps with modulo). -- `pbounce` — ping-pong cycle keyed by pattern iteration (vs `bounce` which is step-keyed). -- `except` — inverse of `every`: run quotation on all iterations except every nth. -- `every+` / `except+` — `every`/`except` with a phase offset. -- `all` / `noall` — apply current params globally to all emitted sounds; clear global params. +- `slice` / `pick` — sample slicing: divide a sample into N equal parts and select which slice to play. +- `wave` / `waveform` — set drum synthesis waveform (0=sine, 0.5=triangle, 1=saw). +- `pbounce` — ping-pong cycle keyed by pattern iteration. +- `except` — inverse of `every`. +- `every+` / `except+` — phase-offset variants. +- `bjork` / `pbjork` — euclidean rhythm gates using quotations. +- `arp` — arpeggio list type (spreads notes across time). +- `all` / `noall` — apply params globally to all emitted sounds. - `linmap` / `expmap` — linear and exponential range mapping. -- `rec` / `overdub` (`dub`) — toggle recording/overdubbing master audio to a named sample. -- `orec` / `odub` — toggle recording/overdubbing a single orbit to a named sample. +- `rec` / `overdub` (`dub`) — record/overdub master audio to a named sample. +- `orec` / `odub` — record/overdub a single orbit. -**Harmony and voicing words:** -- `key!` — set tonal center for scale operations. -- `triad` / `seventh` — diatonic triad/seventh from scale degree (follows a scale word). +**Harmony and voicing:** +- `key!` — set tonal center. +- `triad` / `seventh` — diatonic chord from scale degree. - `inv` / `dinv` — chord inversion / down inversion. -- `drop2` / `drop3` — drop-2 / drop-3 voicings. +- `drop2` / `drop3` — drop voicings. - `tp` — transpose all ints on stack by N semitones. **New chord types:** - `pwr`, `augmaj7`, `7sus4`, `9sus4`, `maj69`, `min69`, `maj11`, `maj13`, `min13`, `dom7s11`. -**Ducking compressor params:** -- `comp`, `compattack`/`cattack`, `comprelease`/`crelease`, `comporbit`/`corbit`. +**Effect parameters:** +- Ducking compressor: `comp`, `compattack`/`cattack`, `comprelease`/`crelease`, `comporbit`/`corbit`. +- Smear effect: `smear`, `smearfreq`, `smearfb`. +- Reverb: `verbtype`, `verbchorus`, `verbchorusfreq`, `verbprelow`, `verbprehigh`, `verblowcut`, `verbhighcut`, `verblowgain`. + +**Behavior changes:** +- All parameter words now accept varargs (100+ words updated to consume the full stack). +- `every` reworked to accept quotations. +- Removed `chain` word (replaced by pattern-level Follow Up setting). ### Engine -- SF2 soundfont support: auto-scans sample directories for `.sf2` files and loads them. -- Audio stream errors surfaced as flash messages instead of printing to stderr. +- SF2 soundfont support: auto-scans sample directories for `.sf2` files. +- Follow-up actions: patterns have configurable follow-up (Loop, Stop, Chain). Replaces the `chain` word with a declarative UI setting (`e` key). +- Delta-time MIDI scheduling for tighter timing. +- Audio stream errors surfaced as flash messages. +- Prelude script evaluated on application startup (not only on play). +- Global periodic script: a hidden script page runs alongside all patterns at its own speed/length. +- RestartAll command: reset all active patterns to step 0 and clear state. +- Tempo and current beat exposed in sequencer snapshot. +- Spectrum analyzer rescaling. -### UI / Visualization -- Lissajous XY scope: stereo phase display using Braille characters, togglable via Options. +### UI / UX +- **Engine page redesign**: responsive narrow/wide layout, Link/MIDI/device settings moved here from Options. +- **Patterns view redesign**: banks column with pattern counts, expandable detail rows, bottom preview strip with mini step grid. +- **Mouse support**: click navigation on header/grid/panels/modals, text selection in code editor (click+drag), double-click on scope/spectrum/lissajous to cycle display modes. +- Smooth playback progress bar interpolated between steps. +- Dynamic step grid sizing adapts to terminal height. +- Lissajous XY scope with Braille rendering and thermal trail mode. - Gain boost (1x–16x) and normalize toggle for scope/lissajous/spectrum. -- Pattern description field: editable via `d` on Patterns page, shown in pattern row and properties. +- Pattern description field: editable via `d`, shown in pattern list and properties. +- Bank/pattern import and export via clipboard (base64 serialization for sharing). - Mute/solo on main page now apply immediately (no staging). +- Step name automatically cleared when deleting a step. +- F1–F6 page navigation across the 3×2 page grid. +- Collapsible help sections with code block copy. +- Onboarding system for first-time users. +- Show/hide preview pane toggle and zoom factor setting. +- Reduced UI lag: sequencer snapshot moved after render call. - 10 bundled demo projects loaded on fresh startup (togglable in Options). +- Options page: each option shows a description line below when focused. +- Dictionary page: word list uses full page height (removed description box). ### Themes - 5 new themes: Iceberg, Everforest, Fauve, Tropicalia, Jaipur. +- Palette-based generation: all 18 themes derived from a 14-field Palette via Oklab color space (definitions reduced from ~300 to ~20 lines each). ### Desktop (egui) - Fixed Alt/Option key on macOS (dead-key composition now works). - Fixed multi-character text paste. - Extended function key support (F13–F20). +- No console window on Windows desktop build. + +### Packaging +- macOS: `.dmg` disk image with `.app` bundle (Intel + Apple Silicon fat binaries via `lipo`). +- Windows: `.msi` installer via WiX. +- Linux: improved AppImage build scripts and Docker cross-compilation. + +### CLAP Plugin (experimental) +- Early CLAP plugin support via nih-plug, baseview, and egui. Feature-gated builds separate CLI from plugin targets. + +### Documentation +- Complete reorganization into `docs/` subdirectories. +- 10 getting-started guides, 5 interactive tutorials. +- New tutorials: Recording, Soundfonts, Sharing (import/export). +- New topics: control flow, generators, harmony, randomness, variables, timing, bracket syntax. +- Crate-level READMEs for forth, markdown, project, ratatui. ### Fixed - CycleList + ArpList index collision: arp uses timing index, cycle uses polyphony slot. - Scope widget not drawing completely in some terminal sizes. -### Documentation -- New tutorials: Recording (`docs/tutorials/recording.md`), Soundfonts (`docs/tutorials/soundfont.md`). - -### UI / UX (breaking cosmetic changes) -- **Options page**: Each option now shows a short description line below when focused, replacing the static header box. -- **Dictionary page**: Removed the Forth description box at the top. The word list now uses the full page height. - -### CLAP Plugin (experimental) -- Early CLAP plugin support via nih-plug, baseview, and egui. Feature-gated builds separate CLI from plugin targets. - -### Forth Language -- Removed `chain` word (replaced by pattern-level Follow Up setting). -- `case/of/endof/endcase` control flow for pattern-matching dispatch. -- `bjork` / `pbjork` — euclidean rhythm gates using quotations: execute a block only on Bjorklund-distributed hits. -- `arp` — arpeggio list type that spreads notes across time positions instead of stacking them simultaneously. -- `,varname` assignment syntax (SetKeep): assign to a variable without consuming the value from the stack. -- `every` reworked to accept quotations for cleaner conditional step logic. -- All parameter words now accept varargs — over 100 words updated to consume the full stack. -- Reverb parameter words added. - -### Engine -- Follow-up actions: patterns now have a configurable follow-up behavior (Loop, Stop, or Chain to another pattern). Replaces the Forth `chain` word with a declarative setting in the Pattern Properties modal (`e` key). Chain targets specify bank and pattern via UI fields. -- Delta-time MIDI scheduling for tighter, sample-accurate timing. -- Tempo and current beat exposed in sequencer snapshot. -- Spectrum analyzer rescaling. - -### UI / UX -- Patterns view redesign: new layout with banks column (showing pattern counts), expandable detail rows for the focused pattern (quantization, sync mode, progress bar), and a bottom preview strip with mini step grid and pattern properties. -- Smooth playback progress: playing patterns display a real-time progress bar interpolated between steps. -- Dynamic step grid sizing: `steps_per_page` adapts to terminal height instead of using a fixed constant. -- Mouse support: click navigation on the pattern grid, panels, and modals. -- F1–F6 page navigation across the 3×2 page grid. -- Collapsible help sections with code block copy. -- Onboarding system for first-time users. -- New reusable widgets: CategoryList, HintBar, PropsForm, ScrollIndicators, SearchBar, SectionHeader. -- Show/hide preview pane toggle and zoom factor setting. - -### Documentation -- Complete reorganization into `docs/` subdirectories. -- 10 getting-started guides, 5 interactive tutorials. -- New topics: control flow, generators, harmony, randomness, variables, timing. - -### Theme System -- Palette-based generation: all 18 themes now derived from a 14-field Palette via Oklab color space. -- Theme definitions reduced from ~300 lines each to ~20 lines. - ### Codebase -- `src/app.rs` split into 10 focused modules (dispatch, clipboard, editing, navigation, persistence, scripting, sequencer, staging, undo). +- `src/app.rs` split into 10 focused modules. - `src/input.rs` split into 8 page-specific handlers. - Undo/redo system with scope-based tracking. - Feature-gated CLI vs plugin builds. +- New reusable widgets: CategoryList, HintBar, PropsForm, ScrollIndicators, SearchBar, SectionHeader. ## [0.0.9]