Skip to main content

max / audiofiles

5.6 KB · 107 lines History Blame Raw
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