Changelog
New updates and improvements to Vextra.
v0.8.4
April 2026Vextra v0.8.4 — Fix: Save MIDI button on macOS
The GrooveEngine's Save MIDI button did nothing on Mac builds. Root cause: WKWebView (Tauri's macOS engine) silently blocks programmatic clicks for security. The button fired but nothing happened, no error.
Fix: when running inside Tauri, use the native save dialog + fs writeBinaryFile API instead of the anchor-click trick. Browser fallback is preserved for dev mode. Both paths ship the same .mid bytes produced by patternToMidi().
Enabled dialog.save and fs.writeFile in the Tauri allowlist (+ the matching cargo features: dialog-save, fs-write-file). fs scope is "**" so the user's chosen save location always works — the save dialog itself is user-initiated so no silent file writes can occur.
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
v0.8.3
April 2026Vextra v0.8.3 — Hotfix: provider race + first auto-update test
Fixes a race condition where Collections, Favorites, and SavedSearches panels would appear empty after app launch until the user took some action. These providers mount in main.tsx before , so their initial fetch races with the Python backend still warming up the CLAP model. Without retry, the empty state persisted until a later action triggered a refresh.
Each provider now retries the initial fetch up to 30 times with 500ms spacing (~15s window). User-initiated refreshes remain single-shot. Bug predates v0.8.2 — present since v0.6.0 (CollectionsProvider).
Also:
- Settings Updates section now surfaces the actual updater error text when a check fails, making debugging easier
- Rust host falls back to runtime env var for VEXTRA_SESSION_API_KEY so local dev builds can set the key without rebuilding
This release is also the first real test of the Tauri auto-updater: users on v0.8.2 (production install) should now see the update banner and be able to install v0.8.3 directly.
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
v0.8.2
April 2026Vextra v0.8.2 — Session Tracking, Auto-Update, Quality-of-Life
Headline features:
- Auto-updater: checks on startup (opt-in), manual check in Settings, signed updates delivered via Cloudflare R2
- Session + key-event analytics: sessions, searches, groove generations, and MIDI exports now surface on the landing admin dashboard, with offline queueing so no event is lost
- Unified version management: single source of truth in src-tauri/tauri.conf.json, propagated to Rust, Python backend, and frontend at runtime — scripts/check-versions.sh guards against drift
Desktop app UX:
- New "Show in folder" action per sample (reveals in Explorer / Finder)
- Results list now has a dedicated Action column; Details and Match columns trimmed so the waveform gets more room
- Duration shows sub-second precision (0:00.4) for short one-shots
- Action icons normalized to a consistent 16×16 stroke style
- Settings: new Updates section with current version + Check for updates
- Splash, sidebar, and About all read the version from Tauri dynamically
Vietnamese search:
- Expanded vi_phrases.json, chips, and idle placeholders with producer slang (nấu beat, bốc, nện, dính, …) — user-edited, pass-through to the existing VI→EN translation pipeline
Infrastructure:
- GitHub Actions builds now sign updater artifacts on Windows + macOS, upload them to R2 at downloads/updater//, and generate downloads/updater/tauri-update.json for the Tauri updater
- Rust host passes VEXTRA_APP_VERSION + VEXTRA_SESSION_API_KEY to the Python subprocess so analytics work in production without extra config
Guardrails respected:
- Search ranking, Groove generator, and audio playback untouched
- Existing downloads/releases/latest.json format preserved for the landing page
- No forced updates; every analytics call is fire-and-forget
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
v0.8.1
April 2026Vextra v0.8.1 — Quality, Performance, and Personalization Upgrade
Groove Engine Quality
- Pattern history avoidance: reduces repetitive pattern reuse across regenerate cycles
- Bar 2 evolution: blends from bar 1 instead of jarring full-swap — sounds related, not random
- Fill control: probability reduced to 8%, restricted to kick/snare/perc only
- Hat density limiter: prevents machine-gun hi-hat patterns (max 10 of 16 steps)
- Triangular velocity: more human feel — clusters near center, rarely hits extremes
- Sustain crossfade: bass/lead/loop get smooth 80ms crossfade on retrigger instead of hard cut
Favorites
- Hard cap at 150 with clear feedback when full
- Count display in panel header
- No silent deletion — user manages manually
Search — Filename Matching
- Filename-like query detection: underscores, extensions, word+digits patterns
- Exact filename score: new search component for specific file lookup
- Amplified boosts: +40% for all-keywords-in-filename on filename queries
- Rebalanced weights: semantic 35%, keyword 20%, type 10%, filename 10%, tags 10%
User Tag System (Pro)
- Personal tags: add up to 5 custom tags per sample
- Tag search: search by tag name — tagged samples jump to top of results (3x boost)
- Protected system tags: kick, snare, pad, loop etc. cannot be used as user tags
- Inline UI: tag chips on sample rows, add via +, remove via double-click
- Pro gated: free users see tags read-only, Pro users can create and manage
Onboarding
- Updated guide: 6 steps now including Groove Engine and Personal Tags
- Translated in English, French, and Vietnamese
Library Health
- Missing folder detection: prompts user to re-index when library is moved
Full Changelog: https://github.com/HyperClaire/vextra/compare/v0.8.0...v0.8.1
v0.8.0
April 2026Vextra v0.8.0 — Groove Engine, Creative Workflow Upgrade
Groove Engine (New)
- Crate-scoped rhythm generator with WebAudio schedule-ahead playback
- 28 groove styles across 7 families: Electronic, Hip-Hop, Jazz, Blues, Rock, Country, Groove
- Pattern-based step sequencer with core, variation, and fill banks
- Musical humanization: accent-shaped velocity, role-aware swing and microtiming
- Auto-fill: searches library for missing roles, cached for instant regeneration
- Lock groups (Drums / Bass / Melody) preserved across regeneration
- Pattern visualization with VU meter LED board animation
- Color-coded role assignments with individual per-role display
- Style aliases and tags for discoverability
- Tempo randomization for instrument-oriented styles
- MIDI export with GM drum map and multi-channel pitched instruments
- Pro license gating with upgrade prompt for free users
- Available in both Collections and Favorites panels
New Styles for Instrument Players
- Jazz, Swing, Blues, Rock, Country, Reggae, Jam Band
- Vinahouse / House Lak (Vietnamese dance style)
Audio Improvements
- Mono-voice choke prevents retrigger overlap
- Leading silence detection skips dead portions
- Long sample truncation prevents multi-bar overlap noise
- BPM sync via playbackRate for loop-type roles
- Audio output device selector in Settings
UX Improvements
- Collapsible sidebar with icon-only compact mode
- Auto-collapse on narrow window, state persisted
- Crate limit: 20 samples max per collection (oldest trimmed on overflow)
- Quick-add button with checkmark success feedback
- "Vibe" button for fast pattern regeneration
Backend
- sample_type exposed in API response for role assignment
- full_track content kind filter support
- Path scope validation on sample serving (security hardening)
- Session analytics tracking (async, non-blocking)
Settings
- Audio output device dropdown
- Legacy license key input removed (signed license files only)
Internationalization
- All groove UI strings in English, French, and Vietnamese
- 28 style labels with aliases and tags
Security
- Path traversal protection on sample serving endpoint
- File scope validation against registered library folders
Full Changelog: https://github.com/HyperClaire/vextra/compare/v0.7.7...v0.8.0
v0.7.7
April 2026v0.7.7 — Search Quality, Classification & UX Upgrade
- Parallel query embedding + LRU cache for faster search
- Sigmoid semantic normalization and retuned scoring weights
- Filename stem bonus (5% weight) in search ranking
- Multi-type query parsing (primary + secondary types)
- 50+ artist style profiles with case-insensitive detection and query expansion
- FR/VI multilingual style connectors for artist queries
- Multi-signal classification replacing rigid if/elif chain (6 signals)
- Added full_track content kind with effective duration trimming
- Real byte-level download progress on splash screen
- Path marquee scroll pauses at end before returning
- Full Track filter chip in search UI
v0.7.6
April 2026Activation Analytics
- Non-blocking activation analytics reporting to landing page backend
- Acknowledged-once model — report sent only on first activation per license
- Automatic retry on app launch (max 3 attempts, persisted across sessions)
- Silent failure — never blocks UI or licensing flow
Build & CI
- Cross-platform CI build pipeline (Windows + macOS)
- Release artifacts no longer committed to repo
- Automated GitHub Release publishing via CI
Infrastructure
- Desktop backend reports activation events to production analytics
- State file persistence for offline retry tracking
Full Changelog: https://github.com/IDiscriminate/vextra/compare/v0.7.5...v0.7.6
Full Changelog: https://github.com/HyperClaire/vextra/compare/v0.7.5...v0.7.6
Full Changelog: https://github.com/HyperClaire/vextra/compare/v0.7.5...v0.7.6
v0.7.5
April 2026v0.7.5 — Playhead fix + version bump hotfix
- Fix waveform playhead not resetting to 0 on quick play/stop/play
- Restart from beginning on resume instead of continuing mid-sample
- Wait for audio canplay before starting playback on sample switch
- Sync version display across sidebar, splash, and all config files
v0.7.4
April 2026v0.7.4 — Hardening + Release Pipeline
- Configurable API base URL (default: https://vextra.fr)
- Stricter refresh validation (accept VALID only)
- Atomic license file writes
- URL-safe base64 signature decoding
- Release publishing automation via Vercel Blob
v0.7.3
April 2026v0.7.3 — Signed Entitlement System + License File Import
- Ed25519 signed entitlement verification with embedded public key
- Silent subscription refresh for premium_subscription tier
- Legacy license migration (v0.3.0–v0.7.2 keys auto-upgraded)
- Grace period support with UI state display
- .lic file import UI in Settings panel
- Colored activation feedback (success/error states)
v0.7.2
April 2026v0.7.2 — Vietnamese Localization + Onboarding Hotfix
- Rewrite all Vietnamese i18n strings for natural producer tone
- Replace technical terms with producer-friendly language throughout
- Rewrite Vietnamese search chips and idle sentences with producer slang
- Improve onboarding content across all 3 languages (EN/FR/VI)
- Explain Favorites and Collections with practical examples
- Fix onboarding popup card sizing: consistent min-height + flexbox
- Add vi_phrases.json for user-editable Vietnamese search enrichment
- Load custom Vietnamese phrases into translation pipeline at startup
v0.7.1
April 2026v0.7.1 — Window Polish Hotfix
- Frameless window with custom title bar (minimize/maximize/close)
- Sticky compact search overlay on all pages (search, favorites, collections)
- Native folder picker in library panel
- Smart scroll-into-view for rows behind sticky search
- Scroll-on-blur UX refinements
