| 1 |
# Changelog |
| 2 |
|
| 3 |
All notable changes to audiofiles will be documented in this file. |
| 4 |
|
| 5 |
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 6 |
|
| 7 |
## [Unreleased] |
| 8 |
|
| 9 |
### Added |
| 10 |
- Forge: resample overshoot handling. Conforming to an integer target now detects true-peak overshoot (>1.0); by default the signal is left untouched and a warning is shown that it will clip. A new Settings > Forge toggle, "Auto-trim resample overshoot", opts in to the gentlest reversible fix (a single linear gain to full scale), reported when applied. 32-bit float targets are unaffected (lossless passthrough). |
| 11 |
|
| 12 |
### Added |
| 13 |
- Starter filename rules. "Add starter rules" in Tag Rules seeds a pack covering the common drum, instrument-family and format words, so `Kick.wav` becomes `instrument.drum.kick` and `Guitar Loop 120.wav` becomes `instrument.guitar` plus `type.loop`. The filename is a far better source of instrument identity than the audio: the same names our corpus script reads labelled 1,049 of 1,074 one-shots correctly, where the retired DSP classifier managed 33.4% on those exact files. Rules arrive disabled and fully editable, so nothing is tagged until you enable them. A name that hits two drum classes (`Kick_Cowbell.wav`) gets neither tag rather than one picked at random. |
| 14 |
- Browse by measured axes: Brightness (spectral centroid), Tonal / Noisy (spectral flatness) and Attack join BPM, duration and loudness as numeric range filters in the filter panel. Continuous rather than binned, because a fixed "bright" cut does not transfer between one-shots and loops. These are what replaced the sample-class filter, and unlike a label they cannot be wrong: there is no classification step to be right or wrong about, only the measurement. Samples analysed before the spectral stage existed have no value on these axes and drop out of a bounded query. |
| 15 |
|
| 16 |
### Removed |
| 17 |
- The single sample-class label, and everything that consumed it. Measured at 33.4% accuracy on exact class match, with two of its seven drum classes unreachable by any rule; the features it read carry coarse family structure, not instrument identity. Browsing moves to the measured axes, instrument names to filename rules and your own tags, and "more like this" stays on k-NN. Gone with it: the Class column and its sort, the class filter checkboxes, the class badge, the `{class}` rename token, the `classification` field in the export sidecar, the per-class tag suggestions and their dismissal list, and the `classification` / `classification_confidence` database columns. A saved rename pattern containing `{class}` reports an unknown token rather than quietly dropping it, and a saved search that filtered on the class loses that criterion. |
| 18 |
|
| 19 |
### Fixed |
| 20 |
- Store: importing identical bytes under a different file extension no longer leaves an unreachable orphan blob on disk; the import reuses the canonical content-addressed blob, restoring "import twice is a no-op". |
| 21 |
|
| 22 |
## [0.4.1] - 2026-05-31 |
| 23 |
|
| 24 |
### Added |
| 25 |
- Device profile fields: category and notes |
| 26 |
- Edit history affordance and review-sort in browser |
| 27 |
- Undo for sample edits |
| 28 |
- About modal (Cmd+I) with version and credits |
| 29 |
- Updater opt-out preference |
| 30 |
|
| 31 |
### Changed |
| 32 |
- License-activation contact email points to info@makenot.work |
| 33 |
- Documentation: 2024 edition, plugin path references, theme phrasing |
| 34 |
|
| 35 |
### Fixed |
| 36 |
- Export overwrite protection |
| 37 |
- Database initialization recovery |
| 38 |
- SyncKit client 0.4.0: pass sentinel key in token exchange |
| 39 |
|
| 40 |
## [0.4.0] - 2026-04-16 |
| 41 |
|
| 42 |
### Added |
| 43 |
- Trial mode: use the app without a license key with a 30-day countdown |
| 44 |
- Trial button on activation screen with days remaining indicator |
| 45 |
- Trial status display in Settings > License section |
| 46 |
- Trial state persisted to `~/.config/audiofiles/trial.json` |
| 47 |
|
| 48 |
## [0.3.6] - 2026-04-16 |
| 49 |
|
| 50 |
### Changed |
| 51 |
- Monorepo path dependency restructure (MNW shared libs) |
| 52 |
- Audit Run 14: test coverage, refactoring, cleanup |
| 53 |
- Added CONTRIBUTING.md with project coding patterns |
| 54 |
|
| 55 |
## [0.3.5] - 2026-04-13 |
| 56 |
|
| 57 |
### Added |
| 58 |
- SSE push notifications for real-time sync events |
| 59 |
- Background cleanup worker for orphaned sample removal |
| 60 |
- macOS metadata filtering during import |
| 61 |
- Collapsible filter panel in browser UI |
| 62 |
- Cleanup progress screen |
| 63 |
|
| 64 |
### Changed |
| 65 |
- Extracted theme loading to shared `theme-common` crate |
| 66 |
- Preview decode cancellation for faster navigation |
| 67 |
- Increased undo stack depth |
| 68 |
|
| 69 |
### Fixed |
| 70 |
- File list scroll-follow when selecting samples |
| 71 |
- Collection breadcrumb navigation |
| 72 |
- Collection export paths |
| 73 |
- Null-safe VFS handling and drag-drop |
| 74 |
|
| 75 |
### Security |
| 76 |
- Disabled `eval()` and module imports in Rhai plugin engine |
| 77 |
- Blob validation on sync upload/download |
| 78 |
- OAuth state parameter verification |
| 79 |
|
| 80 |
## [0.3.0] - 2026-03-28 |
| 81 |
|
| 82 |
First beta-ready release. |
| 83 |
|
| 84 |
### Added |
| 85 |
- Cloud sync via SyncKit SDK (sample metadata, tags, VFS mappings) |
| 86 |
- OTA updates via custom reqwest-based checker |
| 87 |
- ML-based sample classification (two-layer system, 94.4% accuracy on drums) |
| 88 |
- VP-tree similarity search across sample library |
| 89 |
- Content-addressed blob store (SHA-256) |
| 90 |
- Virtual filesystem for sample organization |
| 91 |
- Device-aware export with 14 bundled sampler profiles |
| 92 |
- Rhai plugin system for custom device profiles |
| 93 |
- Drag-to-DAW export (macOS and Windows) |
| 94 |
- Waveform visualization |
| 95 |
- Collections for organizing samples |
| 96 |
- Audio analysis: spectral features, BPM, key detection, MFCC extraction |
| 97 |
- Bundled color themes (see `crates/audiofiles-browser/themes/`) |
| 98 |
- macOS, Windows, and Linux builds |
| 99 |
|
| 100 |
### Fixed |
| 101 |
- All issues identified in audit runs 1–12 |
| 102 |
- Concurrency and type safety patterns (Rust patterns audit) |
| 103 |
|
| 104 |
### Security |
| 105 |
- Full observability instrumentation (115 traced functions) |
| 106 |
- 17 justified FFI unsafe blocks for platform drag-and-drop (macOS objc2 + Windows COM) |
| 107 |
|