Fixed
- MCP server dropped its connection mid-session — under the stdio transport stdout *is* the JSON-RPC channel, but engine diagnostics were written there with bare
print(). A buffer flush spliced raw text into a reply, which the client could no longer parse; it surfaced as an unexplained timeout or "server disconnected" long after the write that caused it. Stdout is now reserved for the protocol and stray writes go to stderr. - MCP servers failed to start in GUI clients — Claude Desktop, Cursor, Windsurf and Zed launch with a bare login
PATH, so amediafind-mcpcommand that works in a terminal was never found by the app. Configs now name an absolute interpreter. - Claude Desktop bundle — carried the same
PATHfailure, and its version had drifted 17 releases behind because nothing rebuilds it on a release. Both fixed, andmake syncnow guards the manifest version.
Added
mediafind-mcp --print-config <client>— emits a ready-to-paste MCP config for Claude Code, Claude Desktop, Codex, Cursor, Gemini CLI, VS Code, Windsurf and Zed, in each client's own format with aPATH-independent command.mediafind-mcp --doctor— diagnoses an MCP connection by speaking the protocol to it: real handshake, tool calls, stdout-purity check and timings. It distinguishes a corrupted stream from cold-start latency, which matters because corruption presents as a timeout.- MediaFind agent skill (
packaging/skill/mediafind-mcp/) — installs and verifies the MCP server across clients.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current main release head with synced 0.1.39 package, desktop, MCP bundle and storefront metadata.
Added
- Developer Pro unlock — hidden development builds can now unlock Pro locally with the guarded dev-mode environment flags, while production builds continue to ignore local-only unlocks.
Changed
- Evaluation campaign durability — hardened exact MMEB/MTEB and supervised Qwen campaign tooling with disk/headroom guards, source-group validation, query grouping, partial materialization support, and clearer readiness provenance.
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current main release head with synced 0.1.38 package, desktop, and storefront metadata.
Changed
- Shared license activation — cut over the desktop app to the shared licensing service so current builds can activate successfully against the production license backend.
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.37 package, desktop, and storefront metadata.
Added
- Public-video training pipeline — added receipted source-audit, materialization, feature-building, checkpoint, and leaderboard-readiness tooling for the Qwen/MMEB/MTEB top-contender campaign.
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.36 package, desktop, and storefront metadata.
Changed
- Evaluation readiness — added disk/headroom preflights, bounded visual feature caching, cache-local media grouping, and clearer readiness ledgers for partial exact campaign runs.
Fixed
- Search channel restoration — restored the temporal action search channel and corrected OCR sidecar card assignment in result rendering.
Added
- ShadowIndex — infer and search for missing media that is not in the current library using corroborated evidence from existing files, with an opt-in Pro-gated search channel, scan job, review API, and evidence-rich UI cards.
- Exact public video-eval runners — added MMEB and MTEB video-evaluation tooling, submission prep, aggregation, and model-backend coverage for reproducible retrieval benchmarking.
- LAN access toggle — let users explicitly expose the local MediaFind server on the LAN so they can search from a phone or another device on the same network.
- Launch materials — added the Product Hunt launch kit and pinned the Android companion APK link for the storefront.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.35 package, desktop, and storefront metadata.
Fixed
- Bug-bash fixes — shipped the July 17 licensing, search, Create-room, downloader, frontend, and server-guard fixes verified across the release suite.
- Release-gate hardening — bounded long-running MMEB campaign subprocesses and made the batch download/index job test tolerate slower loaded release machines.
Changed
- Cross-platform release refresh — rebuilt the signed, notarized macOS DMG and native Windows/Linux installers from the unchanged v0.1.33 source head, with synchronized 0.1.34 package and desktop metadata.
- Storefront release alignment — advanced the public download URLs and static asset cache keys together so the website, GitHub Latest release, and in-app stable update channel all resolve to v0.1.34.
Added
- Confidence-aware multimodal fusion — combine transcript, visual, OCR, and metadata evidence with calibrated channel confidence and learned local weights so mixed-signal searches rank the strongest moments more reliably.
- Temporal action recognition — recognize actions across frame sequences with the bundled MF-Action-T head over cached CLIP embeddings, without uploading media or re-encoding the source library.
- Auditable Perception Test benchmark — reproduce temporal-grounding results with pinned attribution, metric protocols, evaluator provenance, and official-union IoU parity.
Changed
- Release quality gates — expanded regression coverage for fusion and Perception Test evaluation, including refreshed baselines and model-portfolio documentation.
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.33 package, desktop, and storefront metadata.
Fixed
- Create-room export destinations — use the saved-path fallback consistently for FCPXML, EDL, and caption exports when a native save dialog is unavailable.
- Premiere timeline timecode — carry fractional seconds into the next minute correctly instead of displaying values such as 59.96 seconds.
Added
- Private Media Intelligence workflows — turn local transcript and visual signals into cited Interview Briefs, Research Quote Packs, and Rough Cuts, with natural-language event queries, reviewable speaker-to-face suggestions, and an explicitly opt-in local visual verifier.
Changed
- Subscription licensing — moved MediaFind Pro to monthly and annual Stripe subscriptions with signed device-bound leases, self-service billing, and controlled device transfers.
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.32 package, desktop, and storefront metadata.
Fixed
- Cross-platform library paths — display folder and file names correctly when a saved library contains Windows, Linux, or macOS path separators.
- Notes and export durability — preserve note ranges and colors during partial edits and imports, avoid concurrent export clobbering, and harden cleanup of malformed note data.
Added
- Moment DNA reattachment — recover annotations after media is transcoded, reframed, or otherwise transformed by aligning stored visual moments, with a review panel on the file page for applying recovered matches.
- Correction Memory — remember approved search corrections locally and surface recovered results and counts in the interface so a correction made once can improve future retrieval without sending library data off-device.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.31 package, desktop, and storefront metadata.
Fixed
- Text export destinations — added a save-to-folder fallback for coded notes, calendar, and timeline text exports when the native save dialog is not available.
Added
- More accurate scene recognition — bundled calibrated on-device classifiers for eight broad scene types and 35 specific places, substantially improving coverage and precision without re-encoding media or sending it off-device.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.30 package, desktop, and storefront metadata.
Fixed
- Scene search precision — required whole-word matches for curated scene labels so unrelated fragments such as "ice" or "officer" no longer activate the Office facet.
Added
- Local-first library sync — synchronize MediaFind libraries between devices through a user-selected shared folder while keeping the source media and index under the user's control.
- Production search vocabulary — search and filter by shot type, camera angle, camera motion, HDR, bit depth, color space, B-roll, cuts, montage structure, alternate takes, and resurfaced people-and-date memories.
- Premiere Pro panel — search the MediaFind library and add results to the active timeline from a live in-editor CEP panel.
Changed
- Faster, more resilient indexing — parallelized folder and pipeline stages, auto-tuned concurrency, bounded nested frame workers, and healed renamed or moved files without unnecessarily rebuilding their index records.
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.29 package, desktop, and storefront metadata.
Fixed
- Search and metadata correctness — refreshed knowledge caches after speaker or entity changes, folded diacritics consistently, preserved same-name local collections, and bounded malformed embedding slices and clip values.
- Media workflow reliability — corrected diarization scoring, atomic share bundles, OTIO file URLs, C2PA manifests, music-gap detection, and settings responsiveness during indexing.
Added
- Cross-file Ask — added a conversational across-files mode that synthesizes answers by source while preserving follow-ups, suggestions, and source links.
- Report exports — surfaced clean, timestamped transcript downloads and CSV quote-table export for citations gathered across multiple files.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.28 package, desktop, and storefront metadata.
- Marketing-site polish — repaired navigation toggles, product-page check marks, long-title hero layouts, tutorial overlap, and narrow reading columns.
Fixed
- Request hardening — bounded cleanup, restore, purge, forget, and protected directory lists and their path lengths without constraining folder removal.
- Ask source navigation — kept repeated quotes from different files linked to their own source cards in cross-file answers.
Added
- Obsidian export — exposed an Obsidian-friendly export path alongside the hardened export, reel, and clip-pack surfaces.
- Storefront download metrics — activated the
get.mediafind.iodownload counter across MediaFind and sibling apps, with D1-backed asset resolution and a cache fix so redirects stay current across Cloudflare colos. - Video benchmark evals — added new benchmark coverage for video-oriented quality and performance checks.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.27 package, desktop, and storefront metadata.
- Export UX — surfaced redaction status and per-speaker transcripts in the web UI so exported material is easier to review before handoff.
Fixed
- Security hardening — closed a second symlink-write hole, bounded waits and request fields that gate real work, and tightened export, reel, and clip-pack surfaces.
- Ask grounding — stopped citing sources for "I don't know" answers and fenced untrusted transcripts in LLM prompts.
Added
- Campaign attribution — added site-wide Plausible support and UTM passthrough so campaign tags persist to Polar checkout links without adding a backend.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.26 package, desktop, and storefront metadata.
Fixed
- Bug-bash hardening — fixed correctness and durability issues across search, license handling, cleanup, create/export rendering, provenance, indexing, and the home/onboarding UI.
Added
- Insights discovery — added Trending Topics and Sound & Music rails, made user notes searchable by default, and let users add more folders/files while indexing is still running.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.25 package, desktop, and storefront metadata.
- Knowledge graph clarity — explained what graph circles mean and tuned people/voice suggestions so "View clips" routes to the right surfaces.
- Storefront refresh — bumped the PhotoFind download page to its 0.1.1 release.
Fixed
- Insights browsing — made "Most of your media is from <month>" Browse open the matching media instead of a dead-end filter.
- Search and indexing hardening — fixed bare codec-token filtering, inherited interactive busy timeouts across channel fan-out, and serialized refresh-faces detection against the native index lock; speaker-filtered searches no longer leak file-level Details hits.
- UI polish — fixed left-aligned chapter rows, one-letter follow-up columns, the "Your tags" page chip markup, graph drag/pan release navigation, everyday gallery mononym extraction, download job terminal copy, and the meeting-processing button label.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and native Windows/Linux installers from the current release head with synced 0.1.24 package, desktop, and storefront metadata.
- Site expansion — added a Descript-alternative comparison page for people evaluating private, local media search alongside cloud editor workflows.
Fixed
- Bug-bash hardening — fixed correctness, privacy, and durability issues across imported-media trust state, sequential-audio filtergraphs, scoped search recall, stale frame ANN signatures, malformed captions, GIF time caps, audiogram and waveform edge cases, CLI safety checks, object detection, phonetic matching, provenance revocation, phone redaction, and atomic saved-search refresh.
Added
- Task Assistant — added the draft-only goal-to-recipe router, approval-gated render-reel action, gated batch tagging, and duplicate-review workflow so assistant-suggested library actions stay explicit and reviewable.
Changed
- Site navigation — completed the Apps and Developers navigation rollout across the marketing pages and added SDK/MCP education for people embedding MediaFind locally.
Fixed
- Bug-bash hardening — fixed correctness, privacy, and security issues across share redaction/source handling, unsupported password-protection paths, missing-transcript state, color facets, cancellation races, malformed face blobs, bare-word source filters, symlink-safe import/export/download paths, mixed-fps clip-pack trims, Ask anti-repeat grounding, ANN atomic swaps, and search-pool load shedding.
- Release verification — fixed release-status false negatives so the post-publish verifier reports half-published releases more accurately.
Added
- AI-agent integration — added a local MCP server so Claude Desktop, Claude Code, Cursor, and other MCP clients can search, ask, and read transcripts from the same on-device MediaFind library.
- In-app agent setup — added a Settings flow that shows copyable MCP commands/JSON and can install the Claude Desktop config when the local desktop environment allows it.
- Python SDK — introduced the typed
mediafind.core.Enginefacade, exported it frommediafind, and shipped apy.typedmarker for downstream type-checkers. - Public HTTP API — added the frozen-contract
/api/v1routes for search, Ask, transcript reads, and status so local and on-prem integrations do not depend on internal UI endpoints. - Developer and agent docs — added the public Developers and AI agents pages, plus MCP packaging docs and the MediaFind MCP product icon.
Changed
- Cross-platform release — refreshed the signed, notarized macOS DMG and published native Windows and Linux installers from the current release head with synced 0.1.22 version metadata.
- MCP privacy controls — added operator control for whether MCP tools may return answer and transcript content to the calling agent.
- Website updates — surfaced the AI-agent and developer surfaces from the home page and Tools menu, added the PhotoFind product page to the site family, and added new comparison/intent guide pages.
Fixed
- Packaged startup checks — avoided unnecessary model probes for empty-library status, health, and stale-index checks so a fresh packaged app starts without loading local AI models just to report idle state.
- Release QA stability — added a server-only packaged-app QA mode and longer live CUJ timeout so signed release verification exercises the app without window-management flakiness.
Fixed
- First-run transcription stays offline — packaged builds now use the bundled whisper tier on first use instead of falling back into a runtime model download.
- Long-file diarization stability — bounded diarization work on long files and made speaker-stage progress visible during indexing.
- Indexing throughput — background jobs now run at the expected system QoS so indexing work uses performance cores again.
- Packaged Ask responsiveness — bounded bundled Mini answer generation so a cold packaged-app Ask request cannot monopolize the release CUJ run.
- Ask cold-start fallback — default Ask now returns a cited extractive answer until the local model is already warm, avoiding cold-start stalls.
- Summary cold-start fallback — default indexing no longer starts the bundled local model just to generate summaries; explicit LLM summaries still opt in.
Fixed
- Indexing freeze hardening — bounded the remaining client-reachable ffmpeg/ffprobe call sites, serialized native media work more defensively, and kept foreground UI reads responsive while a library is indexing.
- Crash-loop resilience — set the native OpenMP duplicate-runtime guard at package import time and excluded the app data directory from media walks to avoid flash-quits and self-indexing loops.
Fixed
- External checkout links — the Tauri desktop shell now opens non-local links, including Pro checkout links, in the OS browser instead of trapping them inside the app window.
- Pro pricing consistency — synced the in-app Pro price constant to the current $29 storefront price.
Changed
- Storefront cleanup — removed the retired MediaCreate, MediaGen, and MediaTrends marketing surfaces so the site focuses on MediaFind.
- Pro pricing refresh — updated the site and related docs to the current $29 Pro price and kept purchase links visible during the free trial flow.
Fixed
- Freeze-prone workflows — hardened long-running create/render work, desktop shell health checks, stale database recovery, and background routing so the app is less likely to stall under heavy local media work.
Changed
- What's New navigation — moved the What's New callout into the main navigation CTA area so release updates stay visible without crowding the nav.
Changed
- Offline first-run transcription — packaged builds now bundle the lightweight faster-whisper Base model, so new users can transcribe local media without a first-run ASR download; Small and larger models remain quality upgrades.
Fixed
- Search no longer freezes during indexing — heavy media work (transcription, embeddings, frames, faces) now runs through the background job queue instead of blocking the search path, so the app stays responsive while a library indexes.
- On-screen-text (OCR) matches — an exact on-screen-text hit is now treated as a confident match in search results rather than being scored down.
- First-run model picker — improved the default model selections offered on first run.
- Stabilization guardrails — additional guardrails across background work and UI state to prevent stuck/stalled states, plus a round of release bug-bash hardening and clearing a stale ASR download job id.
Added
- Per-file Re-transcribe — the play page now has a per-file Re-transcribe button to re-run ASR on a single recording on demand.
- ASR download status in Settings — Settings now surfaces the current ASR model download status.
Fixed
- whisper-cpp empty transcripts (frozen app) — whisper-cpp now decodes audio in-process instead of shelling out to a PATH
ffmpegthat the packaged app lacks, so transcripts are no longer silently blank; also fixed the whisper-cpp model directory. - Stranded empty transcripts — when the ASR model isn't ready at first index the file is no longer left permanently blank; indexing logs a warning and self-heals on a later pass.
- Search freezes during indexing — hardened the search, playback, and live cold-load paths so the UI no longer freezes or times out while indexing is running.
- Frozen / stuck UI states — audited and hardened remaining stuck job and UI states, the activity-dock close button, model-change settings UX, and queued exports / architecture lifecycle.
Changed
- Keyless AI backend — removed the old keyless answer/summary backend and made the bundled Mini on-device model the default. Ask and summaries now work keyless, on-device, with no cloud, account, or download out of the box; Small is the one-tap quality upgrade.
- Unified Activity dock — all progress and status (indexing, downloads, model fetches, background jobs) now live in one always-present Activity dock, replacing the per-feature progress bars and the old global job tray.
Added
- Analysis sidecar import — indexing now reuses matching, non-redacted
<media>.mediafind.jsonsidecars to restore transcript segments, summaries, and chapters before recomputing expensive analysis. - MediaCreate — an on-device video studio (timeline editing, transitions, color, reframe, titles, audio, render presets) fed straight from search results, with FCPXML/EDL/OTIO/AAF interchange export and OTIO re-import.
- Celebrity recognition — expanded the bundled gallery to ~3,700 public figures and raised the match threshold for more precise name matches.
Fixed
- Indexing correctness — hardened the local and internet indexing paths.
- Visual frame alignment — a frame whose processing failed no longer shifts every later frame onto the wrong CLIP embedding, timestamp, and dominant color.
- LLM chapter titles — chapter titles now use the bundled on-device model before falling back to a local LLM server, matching summaries.
- Cleaner AI summaries — non-speech ASR markers (e.g. blank-audio / silence / inaudible) are stripped before summarization, so a near-silent clip yields an empty summary instead of a summary of those markers.
- Job metrics — failed and cancelled jobs are no longer counted as completed in the Activity dock totals.
- Search paywall — a People & Faces search no longer shows a "Brand-logo" upgrade card; the paywall is titled from the actual gated feature.
- Face-indexing defaults — the Add Media face checkbox is now selected by default only for Pro/trial installs, and left unchecked for free installs, matching the privacy copy and product gating.
- Faces never stranded — a file is no longer marked faces-done when the face backend was unavailable; indexing retries instead of silently leaving zero faces.
- Download start — fixed a freeze when starting a download, and the activity-dock Pro badge no longer overlaps adjacent UI.
Added
- Meetings mode polish — a batch-first Meetings redesign with cross-meeting follow-up rollups, a Source/transcript toggle, Copy-as-Markdown, a bundled policy-meeting demo clip, and a Meetings walkthrough in the first-run tutorial. Curated action items and decisions load straight from a meeting's
summary.jsonsidecar — now honored even for already-indexed recordings. - Live indexing progress — adding videos now shows a single, expandable job card with named progress stages instead of a flashing, multi-card status.
- Faces selected by default when adding media — face indexing is pre-checked on the Add Media page (still Pro-gated; it skips silently for free users).
Changed
- Category chips open in Home — clicking a category now routes to a precise in-Home browse view rather than jumping to Find.
- Faster app launch — the desktop window now opens immediately and navigates to the UI as soon as the local server is ready.
- Sweeping accessibility pass — hundreds of buttons, chips, toggles, tabs, and dialogs across Find, Ask, Knowledge & Insights, People & Speakers, Collections, Cleanup, Operations, Add Media, and the Video Editor now carry proper labels, hover titles, ARIA roles/state, keyboard focus handling, and screen-reader announcements for empty-state and result feedback.
- Clearer empty-input feedback — submitting an empty search, Ask prompt, tag, collection, or saved search now announces what's missing instead of failing silently.
- Reliability and performance hardening across the API — async request handling for heavy routes, a thread-safe search-index connection pool, opt-in structured request logging, a feature-flag system, and a unified error-response format — with no change to on-device, keyless behavior.
Fixed
- Search reliability under load — the shared search-index connection pool now opens its SQLite connections for safe cross-thread reuse, fixing intermittent 500s (e.g. on the suggestions rail) when the server handled concurrent requests.
- Offline faces — face-recognition weights are now bundled, so face detection works in the packaged app without a network round-trip.
- Onboarding & status routes — fixed an admin-router prefix bug that broke the onboarding and status endpoints.
- Model picker — the local-LLM picker now unlocks when a local LLM server is running, keeps the local model choice available, and focuses the currently selected model.
- Insights — findings drill-through now handles the "open" action type, and the Embeddings coverage meter uses the transcribed-file count as its denominator.
- Home — face crops now appear in the asset quick-look drawer's People section.
- Sample clips — corrected the playback allowlist and face-thumbnail fallbacks so bundled demo clips and player faces render reliably.
- Library imports — imports are now cancellable, abort cleanly if a safety backup fails, preview their impact before overwriting (dry run), and clean up pending uploads on cancel.
- Downloads — batch download jobs now fail correctly when every item fails, surface backend hints in discovery, and re-enable cancel for batches.
- Captions — generated caption tracks are replaced on regeneration, remapped to sequence time (including translated and speed-adjusted clips), and sorted by sequence time.
- File resolution — segments, notes, tags, transcript edits, frames, and exports now resolve media by unique basename, with ambiguous CLI basenames rejected instead of guessed.
- Privacy — share output paths stay hidden by default and the privacy audit keeps running on keyless backends.
- Resolved a large batch of additional code-audit findings across search, migrations, exports, provenance, and meetings endpoints.
Added
- Create — an on-device video studio. Turn search results into a finished video without leaving MediaFind: send clips straight from Find to a new project (Find → Create handoff), then edit on a real timeline with split, drag-trim, drag-move, duplicate, reverse, speed changes, rotate/flip, and undo.
- Transitions & motion — cross-dissolve and fade-to/from-black between clips, keyframed overlay animation, and freeze-frame holds.
- Color room — named look presets and primary color adjustments.
- Reframe room — re-aspect to any ratio with subject-tracked cropping, previewed live (WYSIWYG).
- Text & Graphics room — titles and lower-thirds with fade/slide-in animation and brand-kit styling.
- Audio room — per-track gain, loudness normalization, denoise + high/low-pass EQ, dissolve crossfades, and auto-ducking (music under speech).
- Brand Kits & Templates — save reusable brand styling and whole-project templates, and start new projects from a template.
- WYSIWYG preview — real frame-at-playhead video preview with live caption/graphic overlays, reframe crop, and color grade applied.
- Deliver — render presets (resolution / codec / container) with proxy-generation control.
- More export formats — animated GIF, contact-sheet thumbnail grids, audio-only export, poster/freeze frames, project chapters (YouTube / ffmetadata), captions (SRT/VTT), and full project JSON export/import portability.
- Multi-language caption translation.
- Content provenance — C2PA Content Credential badges on Find results.
- Apple GPU / Neural Engine transcription — a GPU/Neural-Engine transcription engine now ships in builds for faster on-device transcription.
- Durable crash logging — on-disk logs plus crash handlers for better support diagnostics.
Changed
- Hardened security and reliability across the API — path-traversal, SSRF, SQL-injection, and import-size protections — plus new per-channel search-latency and queue-depth metrics.
Fixed
- Share bundles — output paths are now redacted by default; share IDs no longer accept fake/spoofed values.
- Face detection — reverted to opt-in default (was accidentally flipped on in 0.1.9).
- Search latency metrics — Prometheus channel-latency histogram now correctly selects the child label before observing.
- Job queue — hardened handling of closed and legacy job states to prevent spurious errors.
- Collections — rename errors now surface context instead of a blank message.
- MediaCreate — undo and transitions repaired; add-clip is now undoable.
- Exports — library exports written atomically; prior render exports preserved on failure; report exports no longer clobbered.
- Interchange — default FPS validation added; render container validation tightened.
- Reindex — stale-embedding detection now triggers when sidecar inputs change.
- Embedding model — model ID stays tied to the loaded backend across restarts.
- Resolved additional code-audit findings across packaging, API validation, and meetings endpoints.
Added
- Unified Find + Ask surface — search and the conversational agent now live on one Google-style surface instead of separate destinations.
- On-device song recognition — keyless music detection plus same-track grouping by chroma fingerprint, with a player "Same music track" panel that lists every clip sharing the recognized track. Fully on-device; no AcoustID.
- Faces on by default — face detection is now enabled by default everywhere (still Pro-gated: it skips silently for free users and 402s on explicit opt-in).
- Multilingual search — an opt-in i18n embedding profile for non-English media, selectable from a new Settings → Search language / Embedding model toggle.
- Knowledge & Insights dashboard — a chart dashboard and a capture-date timeline over your library's facets.
Fixed
- Packaging — ship the runtime resource directories inside the wheel so a pip install has everything it needs at runtime.
- Dependencies —
requirements.txtis back in sync with the pyproject core deps. - Auto-updater — replace the deprecated
datetime.utcnow()with a naive-UTC helper. - Play page — focused person page and scroll-position restore when going Back from a facet.
- Resolved 23 confirmed code-audit findings.
Changed
- Marketing site — light/dark theme switch (light by default) with theme-aware blog illustrations.
- Internal — typed domain errors with a structured handler across the API, a continued
app.py→api/routes/decomposition,index.htmlinline JS split into static modules, and a per-commit retrieval quality + latency eval harness with a regression gate.
Added
- NLE interchange export — send search moments to a video editor as an FCPXML/EDL timeline for Premiere, Resolve, or FCP (
POST /api/export/timeline, Pro). Each clip is marked with its matched text, exports use drop-frame timecode for 29.97/59.94 footage, and a "bundle trimmed clips" mode produces a self-contained proxy bundle. A one-click handoff sends found moments straight to the open DaVinci Resolve timeline (POST /api/export/resolve) via a bundled, installable Resolve script. - Nine new keyless search channels — scene, audio, object, color, emotion, phonetic, temporal-action, related, and by-image, alongside a channel/scope picker in a unified search bar.
- Named-entity facet — exact-name search over transcripts and on-screen text via a keyless gazetteer, with an optional open-vocabulary NER backend and Wikidata linking.
- On-screen text (OCR) is now its own selectable search modality.
- Brand-logo and action detection facets — keyless zero-shot CLIP search for brand logos (by name or sample image) and actions (e.g. "dancing", "cooking").
- Ask, redesigned as a multi-turn conversational agent and promoted to its own top-level destination, with multi-select scope (limit answers to chosen folders/files) and per-bubble citations.
- Knowledge & Insights — the Knowledge Agent reworked into a facet-aware dashboard with coverage meters, on-device AI summaries, and a findings inbox.
- Transcription model picker — choose a Whisper model on first use, with an optional CoreML/Metal engine and persisted word timestamps + confidence.
- On-device LLM tier — download a local model from Settings to power Ask and summaries fully offline.
- Video Editor — a keyless ffmpeg Tools workspace (cut, convert, resize, compress, extract audio, grab frame, GIF) with a live preview and trim timeline.
- First-launch guided tour — a spotlight walkthrough of search, Ask, People, and brands over the demo clips, re-runnable from Settings.
- Demo mode and a refreshed onboarding sample set whose bundled clips exercise every demonstrable search channel.
- Player — pop video out to a floating/Picture-in-Picture mini player, draggable anywhere, with finer waveform scrubbing.
- People & Voices — merge/link voices, per-person appearance segments + clip export, click-through face/voice/brand/action pages, and celebrity detection.
- Search — folder and date-range filters, recency sort, and bulk-select on results and the library grid.
- Mobile — the companion app codebase is now cross-platform (iOS + Android) with OTA updates and a no-server demo mode; Android ships as a sideloadable APK, with iOS via TestFlight planned.
- Reverse-image search is now a first-class channel (no longer logo-gated): find visually similar frames from any sample image.
- Comprehensive file detail on the play page — full metadata, categories, brands, actions, and an on-screen-text (OCR) panel that now also covers images.
- Richer onboarding demos — an OCR-showcase clip, plus curated summaries and chapters for the bundled demo clips.
- Video Editor — AV1 output in the convert tool.
- First-run model pickers block until the download finishes, showing progress, so Ask/summaries are never silently downgraded; the Pro trial counts down in hours on its final day.
Changed
- Large-library scaling — heavy operations moved off the request thread, hot aggregations cached, and writes batched; load-shedding sheds search overload (503 + Retry-After) while keeping
/healthresponsive. - Persistent writable preferences with open-data-folder and clear-cache actions in Settings.
Fixed
- Resolved findings from multiple full-codebase, UX, and critical-user-journey audits — relevance floors so off-topic queries don't surface junk, honest done/empty states, accessibility and contrast fixes, and several latent crash paths in faces, jobs, and people.
- Cross-platform: persistent data directory and UTF-8 file IO on Windows/Linux.
Added
- Click-a-voice to see a speaker's clips, mirroring click-a-face; player panel scoped to the video with voice management moved into Faces & People.
- Right-click a library file to reveal it in Finder, play it, or copy its path.
Fixed
- Scroll-away player keeps result-navigation context, and face-click playback jumps to the right moment.
Added
- Cross-platform desktop installers: native Ubuntu + Windows builds via Tauri, alongside the macOS app, plus matching Windows/Linux (beta) downloads on the site.
- "Try MediaFind on real videos" onboarding: three bundled, redistributable demo clips that install + index offline (
GET /api/samples,POST /api/samples/install). - Dedicated player page reused across search, play, and full-view open.
- In-app blog with three technical deep-dives.
Changed
- Cosmetic overhaul (continued): a single SVG icon system across app chrome, sidebar nav, and result rows, plus an inline-style teardown into named components (Dialog) and utilities. Unified Pro-upsell CTA wording.
Fixed
- Accessibility: stop exposing a phantom second search field to screen readers; restore focus to the trigger when the image lightbox closes.
- Show an inline error + Retry instead of silently blanking panels on failure.
Added
- Duplicate & cleanup workspace: near-duplicate / similar-video detection with a safe, reviewable quarantine workflow, batch keep-best policies, per-frame fingerprinting, and quality culling of blurry / low-res images (
/api/cleanup/*— exact-dup free, near-dup / quality tiers Pro). - Per-person video segments + clip export: click a person to see contiguous appearance spans and export them as clips or a stitched reel (
GET /api/people/segments,POST /api/people/clips). - In-app feedback: report bugs, send thanks, or suggest ideas, logged locally and sent via the OS mail client (
/api/feedback). - Finder-style folder tree + resizable rows in the library list view.
- Unsigned Ubuntu + Windows server binaries, plus an enriched commercial landing site.
Changed
- Cosmetic overhaul (phase 1–2): a design-token + utility foundation and an explicit button-tier system.
- Honest "Refresh embeddings" nudge surfaced inline when search is degraded.
- Mark Pro-gated sidebar items with a PRO badge for free users.
Fixed
- Spoken-word search and Ask now keyword-fall-back so they work when embeddings are stale instead of returning nothing.
- Mouse / browser Back button navigates between workspaces.
- Knowledge graph canvas drag / zoom / click restored.
Added
- Redesigned Home / library browser: a dedicated Home page (split from Find) that lays files out as icons or a list, with sorting, folder drill-in, and an adjustable icon size; a new sidebar of Recent files, Recent searches, and Saved searches.
- Knowledge Agent: Categories and the Knowledge Map became an evidence-first agent — a proactive review/findings queue, a durable inbox, ad-hoc Q&A, and a live force-directed graph of how the library connects.
- Celebrity / public-figure face recognition: notable faces are auto-named ⭐ with no setup; click a face to jump to every moment they appear, surfaced in People & Faces.
- People & Faces rebuild: merge/split people, rich per-person appearances, reindex faces from the page, and automatic clustering after a download.
- Media downloader: discover videos on a webpage and batch-download a whole channel or playlist, then transcribe and index them like local media.
- Editable speaker names from the transcript and a speaker library, with the roster moved into the file panel.
- Auto-update check: background poll of the GitHub releases API with a 24h cached result (
GET /api/updates), an in-app toast when a newer version is available, and stable/beta release channels (POST /api/updates/channel, envMEDIAFIND_UPDATE_CHANNEL). - Library management: relink moved/missing media, review failed files and retry just those, remove/forget a file (incl. on-disk derivatives), and preview an export before applying it.
Changed
- Add Media panel regrouped into "from local / from internet" plus a Remove Media section; indexing options are selected by default.
- Pro UX: a Pro badge replaces the buy-Pro CTA, upgrade CTAs are hidden for users who already own Pro, and
is-prois stamped server-side to avoid a CTA flash. - Honest, count-accurate category browse with a stronger relevance floor and a scene-tag confidence gate.
Fixed
- Packaged macOS app: bundle ffmpeg/ffprobe, the face-recognition model, yt-dlp, and the speaker-diarization model so search, faces, the downloader, and diarization work in the frozen app.
- Knowledge graph repaints on interaction so pan/zoom/drag work.
Added
- Durable background job queue with SQLite backend (crash-recoverable)
- SQLite WAL mode, backup/restore API, DB integrity checks
- Structured JSON logging and support bundle download
- Security: SSRF redirect validation, CSRF protection, security headers
- Real-media fixtures and Playwright E2E tests
- Typed response models and Pydantic v2 schemas
- ANN vector index (hnswlib) for >10k clip libraries
- WER accuracy benchmark suite
- Library export/import (portable ZIP format)
- First-run onboarding wizard and ffmpeg detection
Fixed
- Auth token logged in plaintext (now via logger.warning)
- Inline JS event handlers migrated to addEventListener (CSP prerequisite)