audiofiles/ testing
Alpha testing guide — features, workflows, and edge cases.
Version 0.3.0. Standalone desktop app. 560 automated tests. This document covers the human side.
This guide covers every user-facing feature in audiofiles, organized into testable workflows. Each section has a checklist of things to verify. The goal of alpha testing is to find bugs, rough edges, and missing affordances before the app reaches real users. Test on macOS first (primary platform), then Linux where possible.
How to use this document. Work through each section in order. Check off items as you go. The first three sections (First Launch, Import, Analysis) form the critical path — every user will hit these. Later sections cover power-user features. Report bugs with steps to reproduce, the theme you were using, and the exact error message if one appeared.
Feature Map
Storage & Import
Content-addressed store (SHA-256). Import WAV, FLAC, MP3, OGG, AIFF. Three strategies: new VFS, merge, flat. Drag-and-drop or CLI. Folder tagging on import.
Virtual File System
Multiple independent VFS roots. Directories, sample links, breadcrumb nav. Rename, move, delete with cascade. Same sample in unlimited hierarchies.
Analysis Pipeline
Loudness (peak/RMS/LUFS), BPM, key, spectral, loop detection, classification (12 categories), waveform, fingerprint. Each stage individually toggleable.
Search & Filter
Text search, BPM range, duration range, key (exact + compatible), classification multi-select, tag prefix. Smart folders save filter presets.
Tags & Suggestions
Hierarchical dot-notation. Auto-suggestions from analysis. Accept/reject per suggestion. Bulk add/remove. Tag on import by folder name.
Export & Devices
14 hardware sampler profiles. Sample rate conversion, bit depth dithering, filename sanitization. Rhai-scripted profiles. Background worker.
Preview & Instrument
Inline audio preview with waveform. Streaming decode for long files. Chromatic + multi-sample MIDI instrument. 8-voice polyphony, ADSR envelopes.
Sync & Themes
Cloud sync via SyncKit (E2E encrypted). 17 bundled themes. Native drag-out to Finder/DAWs. Collections. Similarity + duplicate search.
Keyboard Reference
j / ↓ Move down
k / ↑ Move up
Enter Open / play
Backspace Go up
Space Play / pause
Delete Delete selected
/ Focus search
Cmd+A Select all
Cmd+Z Undo
Cmd+T Bulk tag
F2 Bulk rename
F1 Help overlay
I Instrument panel
S Toggle sidebar
D Toggle detail
Esc Dismiss / clear
Shift+Click Range select
Cmd+Click Toggle select
1. First Launch
- Critical App opens without errors. Window appears, default "Library" VFS is created.
- Critical Empty state is clear: no samples, no errors, status bar is empty.
- Sidebar shows "Library" VFS. Detail panel and sidebar are both visible by default.
- Theme is "audiofiles" (default). All UI elements are legible and properly colored.
- F1 opens the help overlay with keyboard shortcuts. F1 again or Escape closes it.
- Window is resizable. Detail panel auto-hides below 700px width.
- Toggle sidebar (S key), detail panel (D key). Both remember state across navigation.
2. Import Workflow
Test with varied content. Use a folder containing WAV, FLAC, MP3, OGG, and AIFF files. Include subfolders, files with spaces and special characters in names, at least one corrupt or empty file, and at least one very large file (>100MB). The more diverse the test material, the better.
Import Configuration
- Critical Drop a folder onto the app window. Configure Import screen appears.
- Three import strategies available: New VFS (default), Merge Into, Flat.
- New VFS name defaults to the folder name. Editable.
- Merge Into shows a dropdown of existing VFS roots.
- Cancel returns to normal browsing without changes.
Import Progress
- Critical Progress bar advances. "Scanning for audio files..." spinner during walk phase.
- Current filename updates as files are processed.
- Error count appears in red if files fail (click to expand details).
- Cancel stops import mid-way. Partially imported files remain valid.
- Retry button re-opens configure screen with previous source path.
Folder Tagging
- After import, Tag Folders screen shows top-level subfolders.
- Each folder has an editable tag input. Comma-separated tags work.
- "Apply Tags" adds tags to all samples in that folder, then proceeds to analysis.
- "Skip" proceeds to analysis without tagging.
Post-Import Error Summary
- Important If any files failed import or analysis, the Review Errors screen appears.
- Analysis errors show sample name, error message, and per-row "Remove" button.
- Import errors show file path and error message (informational, no actions).
- "Keep All" dismisses errors and returns to browsing.
- "Remove All Failed" deletes failed samples from the store and returns to browsing.
- Individual "Remove" buttons delete one failed sample at a time.
Edge Cases
- Import the same folder twice: duplicates are skipped, count shown in status.
- Import an empty folder: no samples imported, status reflects this.
- Import a single file via drag-and-drop: immediate import + analysis, no configure screen.
- CLI import:
audiofiles-app /path/to/folder opens app and starts import.
- Files with no extension or wrong extension: handled gracefully (error or skip).
3. Analysis
Configuration
- Analysis config screen shows toggle checkboxes for each stage.
- All stages enabled by default. Each can be individually disabled.
- "Analyze" starts the background worker. "Cancel" returns to browsing.
Progress & Results
- Critical Progress bar advances. Current sample name shown.
- Errors accumulated during analysis show in expandable error list.
- Cancel stops analysis. Already-analyzed samples keep their results.
- After analysis, Review Suggestions screen shows auto-generated tags.
Tag Suggestions
- Important Each sample shows proposed tags (BPM, key, classification).
- Tags are pre-accepted. Click to reject individual suggestions.
- "Apply" commits accepted tags. "Skip" discards all suggestions.
- Navigate between samples using the review UI.
Detail Panel After Analysis
- Select an analyzed sample. Detail panel shows: duration, BPM, key, classification badge.
- Waveform renders correctly (stereo peaks, theme-colored).
- Sample rate, channels, peak dB, RMS dB, LUFS all populated.
- Loop detection shows Yes/No.
13. Drag-Out (macOS)
- Critical Drag a sample from the file list to the Desktop. File appears with correct name.
- Drag to a DAW (REAPER, Ableton, Logic). Sample loads in the DAW.
- Multi-file drag: select multiple, drag. All files transferred.
- Drag-out cooldown: rapid successive drags do not cause duplicate transfers.
- Drag a file that has been deleted from the store: handled gracefully.
14. Cloud Sync
- Open sync panel (toolbar icon). Shows "Disconnected" state.
- Auth flow: enter code, opens browser for Makenot.work login.
- After auth, encryption setup: enter passphrase. Keys derived and stored.
- Sync Now: pushes metadata. Status updates to "Last synced: ..."
- Auto-sync toggle with interval picker (5m, 15m, 30m, 1h).
- Disconnect: clears credentials. Returns to Disconnected state.
- Per-VFS sync toggle: metadata always syncs, audio blobs opt-in.
- Wrong passphrase: clear error message, not a crash.
15. Edge Cases & Stress
Data Integrity
- Critical Close and reopen the app. All data persists: VFS, tags, analysis, collections.
- Import the same folder twice. No duplicate samples created in the store.
- Delete a VFS. Samples remain in the store (still accessible from other VFS roots).
- Delete the last reference to a sample. Store entry remains (content-addressed, never auto-deleted).
Error Handling
- Import a folder with zero audio files: "No samples imported" message, no crash.
- Import a corrupt WAV: import error captured, other files import normally.
- Analyze a zero-length audio file: analysis error, sample still in store.
- Analyze a file with unusual sample rate (8kHz, 192kHz): no crash.
- Very short audio (<0.1s): analysis completes, BPM may be absent.
- Very long audio (>10 min): streaming preview works, analysis completes.
Performance
- Import a large library (1000+ files). Progress bar stays responsive.
- Navigate a VFS with 500+ items in one directory. Scroll is smooth.
- Run analysis on 100+ samples. Cancel mid-way. No orphaned workers.
- Similarity search on a library of 500+ analyzed samples. Results appear in <2s.
- Theme switch with many items visible: no frame drops.
Keyboard & Focus
- All keyboard shortcuts work when file list has focus.
- Shortcuts disabled when a text field has focus (except Escape).
- Tab order through modals is logical.
- Escape dismisses in priority: sync panel → bulk modal → confirm → help → search.
Multi-Select Interactions
- Shift+Click from item 2 to item 8: items 2–8 selected.
- Cmd+Click to deselect one item from a range: only that item deselected.
- Shift+Down/Up extends selection one row at a time.
- Select all (Cmd+A), then bulk tag, bulk rename, bulk move, bulk delete: all work.
- Select ".." parent entry: excluded from bulk operations.
16. OTA Updates
- On launch, update check runs in background (no UI freeze).
- If update available: consent dialog with "Download" and "Not Now".
- "Download" opens browser to download page.
- "Not Now" dismisses. No repeated prompting in same session.
- If no update available: no dialog, no indication. Silent.
When you find a bug. Note: (1) What you did. (2) What you expected. (3) What actually happened. (4) Which theme was active. (5) The exact error message or status text. (6) Whether the app crashed or recovered. File size and format of the involved sample if relevant.