Repository navigation
v0.1.8
Fixed
.ogg,.oga,.opusand.ogvfiles now reach the Quick Look extension on Macs where another app (for example a Chromium-based browser) declaresorg.xiph.ogg-audio/org.xiph.ogg-video. macOS resolved these files to those identifiers, whichQLSupportedContentTypesdid not list. A new test checks the identifier this Mac resolves for every advertised extension.- The "Preparing video surface..." placeholder no longer reappears over a playing video after a layout pass (window resize, full screen). A failure message is no longer replaced on the next layout pass.
- Audio-only Ogg files use the audio preview layout instead of an empty black video frame. Audio vs. video is now decided from the tracks VLCKit parses, not from the file extension.
- Renderer smoke tests pointed to a missing
Reflections.mkvsample. They now useReflections-test.mkvand name the missing file when a local sample is absent. - Loading a file no longer parses it on the main thread. The deprecated
synchronousParse()blocked the Quick Look window on large files or slow volumes. Parsing now runs asynchronously (parse(options:timeout:), 5 s timeout), and the video size and audio/video kind arrive throughmediaDidFinishParsing(_:). The player keeps its own reference to the currentVLCMedia, becauseVLCMediaPlayerdoes not keep it alive and itsmediagetter returns a different object. - AppKit no longer logs "Invalid view geometry" while the video frame is smaller than 2 pt.
VideoLayout.fittedRectreturned the null rect (infinite origin) it got from insetting tiny bounds; it now returns.zerofor null or infinite bounds.
Added
- The video play/pause overlay is an accessibility button ("Play" / "Pause"), so VoiceOver, Voice Control and Full Keyboard Access can start and pause a video.
- The app ships the VLCKit license (LGPL 2.1) at
MKVQuickLook.app/Contents/Resources/VLCKit-COPYING.txt. A test checks the built app for it.
Changed
- The host app no longer advertises AVI and now lists Opus in its supported formats. Leftover development wording ("scaffold", "Next Implementation Step", "remaining work", "current phase") was replaced.
- The Renderer Lab can open
.opusfiles. - The Quick Look extension and the Renderer Lab now share one tested player/view wiring (
PreviewPlayerBinding) instead of two hand-copied versions. Diagnostics keep thecontroller-*andlab-*log names. PreviewContentViewstores its presentation mode instead of reading it from a hidden label.- Removed code without effect:
VolumeFeedbackStateandMediaPreviewPlaybackMetrics.volume(the view never read them), the unusedsetMuted, an emptyupdateTrackingAreasoverride, aperform()inendScrubbingthat never applied a seek, and redundantawait MainActor.runcalls. The[volume] metricslog now reports the actual VLCKit volume. scripts/install-local.shbuilds into its own.build/install-derived-datafolder instead of searching Xcode's shared DerivedData, which could pick up a stale build from another copy of the project. A failed build now prints the errors and the log path.- GitHub releases use only the matching
CHANGELOG.mdsection as release notes (scripts/changelog-section.sh), not the whole file. The release job fails if that section is missing. .claude/settings.json: removed permission rules for a deleted file and for an old project path.project.yml: removed theresources:keys. XcodeGen ignored them, so they never copied anything; regenerating the project without them produces an identical project file. The license file is added throughsourceswithbuildPhase: resources.
Documentation
- README: fixed the workflow link, which pointed to a local path on the developer's Mac.
- The 0.1.7 entry said all AVI references were removed. The bundle registration, the bundle metadata tests, and the Renderer Lab still reference AVI on purpose.
- Corrected the AVI notes in
.plans/01-initial-plan.md(Pitfall #9). This also corrects the 0.1.6 Known Issues entry, which said the system preview plays AVI files with common codecs. On macOS 26.6.2, AVFoundation opens an AVI with MPEG-4 Part 2 (DivX) video and MP3 audio with no tracks, so the system preview cannot play it. While VLC (or any other app without a Quick Look extension) is the default.aviapp, such files get no working preview. VLC stays the default AVI app by decision. - Fixed the
dutiexample, which used a wrong bundle identifier (com.robertwildling.MKVQuickLookAppinstead ofcom.robertwildling.MKVQuickLook).
Known Issues
- Quick Look routing still depends on the type identifier each Mac resolves for a file, and other installed apps can declare their own identifiers. This release covers the identifiers seen on the development Mac (
org.xiph.ogg-audio,org.xiph.ogg-video). A Mac where yet another app wins can still route a format past the extension; the new bundle test reports this on the machine that runs it. - AVI files with codecs AVFoundation cannot decode (for example DivX/MP3) get no working Quick Look preview while another app, such as VLC, is the default
.aviapp. Making MKVQuickLook the default AVI app is not practical: the host app cannot open files, so a double-click would only show its status window. - VLCKit (about 79 MB) is embedded twice, in the app and in the extension, so the app is about 159 MB.
- Not verified: a Finder preview pane larger than 720 × 440 pt is treated as the full Quick Look player and may start playback with sound.
- Seek and volume delays are inherent pipeline constraints, not bugs. See README section "Playback Delays".
- The app is ad hoc signed and not notarized. See README section "Gatekeeper".
Third-party software
This release bundles VLCKit 3.7.2 (VLC 3.0.23), licensed under the GNU LGPL 2.1 or later (license text: https://code.videolan.org/videolan/VLCKit/-/blob/3.7.2/COPYING).
- Binary: VideoLAN package
VLCKit-3.7.2-3e42ae47-79128878.tar.xz(SHA-25645fc6398c80d1f8dc0e384a9c80704848e9e82a3a382611bf531fa83c198c276) - Source code: VLCKit tag
3.7.2(commit3e42ae4786d74be5a7387e01824733cbd4b294c3): https://code.videolan.org/videolan/VLCKit/-/tree/3.7.2 - Source code: VLC 3.0.x commit
79128878ddb2c280bbb6c89c76a46b31a80ade1c, with the patches in VLCKit'slibvlc/patchesapplied: https://code.videolan.org/videolan/vlc/-/tree/79128878ddb2c280bbb6c89c76a46b31a80ade1c - Full notices: https://github.com/rowild/MKVQuickLook/blob/main/THIRD_PARTY_NOTICES.md