Update CHANGELOG.md before release
This commit is contained in:
144
CHANGELOG.md
144
CHANGELOG.md
@@ -4,108 +4,120 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
## [0.1.0]
|
## [0.1.0]
|
||||||
|
|
||||||
|
### Breaking
|
||||||
|
- **Quotation syntax changed from `{ }` to `( )`** — all deferred code blocks now use parentheses.
|
||||||
|
|
||||||
### Forth Language
|
### Forth Language
|
||||||
|
|
||||||
**Bracket syntax `[ ... ]`**
|
**Syntax:**
|
||||||
- `[ v1 v2 v3 ]` pushes all items plus their count. Sugar for `v1 v2 v3 3`.
|
- `[ 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:**
|
**New words:**
|
||||||
- `index` — select item at explicit index (wraps with modulo).
|
- `index` — select item at explicit index (wraps with modulo).
|
||||||
- `pbounce` — ping-pong cycle keyed by pattern iteration (vs `bounce` which is step-keyed).
|
- `slice` / `pick` — sample slicing: divide a sample into N equal parts and select which slice to play.
|
||||||
- `except` — inverse of `every`: run quotation on all iterations except every nth.
|
- `wave` / `waveform` — set drum synthesis waveform (0=sine, 0.5=triangle, 1=saw).
|
||||||
- `every+` / `except+` — `every`/`except` with a phase offset.
|
- `pbounce` — ping-pong cycle keyed by pattern iteration.
|
||||||
- `all` / `noall` — apply current params globally to all emitted sounds; clear global params.
|
- `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.
|
- `linmap` / `expmap` — linear and exponential range mapping.
|
||||||
- `rec` / `overdub` (`dub`) — toggle recording/overdubbing master audio to a named sample.
|
- `rec` / `overdub` (`dub`) — record/overdub master audio to a named sample.
|
||||||
- `orec` / `odub` — toggle recording/overdubbing a single orbit to a named sample.
|
- `orec` / `odub` — record/overdub a single orbit.
|
||||||
|
|
||||||
**Harmony and voicing words:**
|
**Harmony and voicing:**
|
||||||
- `key!` — set tonal center for scale operations.
|
- `key!` — set tonal center.
|
||||||
- `triad` / `seventh` — diatonic triad/seventh from scale degree (follows a scale word).
|
- `triad` / `seventh` — diatonic chord from scale degree.
|
||||||
- `inv` / `dinv` — chord inversion / down inversion.
|
- `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.
|
- `tp` — transpose all ints on stack by N semitones.
|
||||||
|
|
||||||
**New chord types:**
|
**New chord types:**
|
||||||
- `pwr`, `augmaj7`, `7sus4`, `9sus4`, `maj69`, `min69`, `maj11`, `maj13`, `min13`, `dom7s11`.
|
- `pwr`, `augmaj7`, `7sus4`, `9sus4`, `maj69`, `min69`, `maj11`, `maj13`, `min13`, `dom7s11`.
|
||||||
|
|
||||||
**Ducking compressor params:**
|
**Effect parameters:**
|
||||||
- `comp`, `compattack`/`cattack`, `comprelease`/`crelease`, `comporbit`/`corbit`.
|
- 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
|
### Engine
|
||||||
- SF2 soundfont support: auto-scans sample directories for `.sf2` files and loads them.
|
- SF2 soundfont support: auto-scans sample directories for `.sf2` files.
|
||||||
- Audio stream errors surfaced as flash messages instead of printing to stderr.
|
- 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
|
### UI / UX
|
||||||
- Lissajous XY scope: stereo phase display using Braille characters, togglable via Options.
|
- **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.
|
- 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).
|
- 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).
|
- 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
|
### Themes
|
||||||
- 5 new themes: Iceberg, Everforest, Fauve, Tropicalia, Jaipur.
|
- 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)
|
### Desktop (egui)
|
||||||
- Fixed Alt/Option key on macOS (dead-key composition now works).
|
- Fixed Alt/Option key on macOS (dead-key composition now works).
|
||||||
- Fixed multi-character text paste.
|
- Fixed multi-character text paste.
|
||||||
- Extended function key support (F13–F20).
|
- 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
|
### Fixed
|
||||||
- CycleList + ArpList index collision: arp uses timing index, cycle uses polyphony slot.
|
- CycleList + ArpList index collision: arp uses timing index, cycle uses polyphony slot.
|
||||||
- Scope widget not drawing completely in some terminal sizes.
|
- 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
|
### 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.
|
- `src/input.rs` split into 8 page-specific handlers.
|
||||||
- Undo/redo system with scope-based tracking.
|
- Undo/redo system with scope-based tracking.
|
||||||
- Feature-gated CLI vs plugin builds.
|
- Feature-gated CLI vs plugin builds.
|
||||||
|
- New reusable widgets: CategoryList, HintBar, PropsForm, ScrollIndicators, SearchBar, SectionHeader.
|
||||||
|
|
||||||
## [0.0.9]
|
## [0.0.9]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user