Changes from 1.3 to 1.4
Not many major headline-grabbing features (pinch-to-zoom!) in this release, but huge changes under the hood. I overhauled the layout system yet again, with a cleaner design which should be more stable & more maintainable, but now also leverages mpv to draw not just the video area but the black margins around it. This has some drawbacks (keep reading...), but I think the benefits outweigh them as it unlocks new uses of that space. Plugin support is now enabled. A large number of bugs have been fixed; support for many advanced features has been improved, and nearly every part of the UI has been touched & improved in various ways.
Of interest to a few maybe: I completed a painstaking migration of the main player window out of ancient XIB and into pure Swift code. Yes, it's not SwiftUI, at least not yet, and there are still tons of XIBs for various components & other windows. But it eliminates a huge cause of recurring bugs & opens up lots more flexibility for window manipulation.
New Features / Improvements
Major New Features
- As mentioned above, window layout now uses the mpv library internally to maintain the video aspect & to draw the black space around video, instead of doing it via Auto Layout constraints.
- This means that when
Lock proportions to prevent empty space around videois disabled, subtitles can be shown in the black space above or below the video. For example:
- This means that when
- Similarly, Lua scripts such as
thumbfastandconsolecan use this space to show graphics and text. - When navigating between videos with different aspect ratios in the playlist, there is now no visual glitch during the transition as in previous versions.
- Internally, these mpv properties are hard-coded:
--keepaspect-window=no,--keepaspect=yes - Unfortunately, this comes with one downside: the video tends to "wobble" or distort unexpectedly during video resize, and during animations. This seems to be a problem inherent to mpv, and can be seen in the standalone mpv Mac application. My best guess is that this is due to a timing mismatch between the window size updates and the layer's knowledge of the window size when it redraws the video layer Hopefully someone can fix this upstream soon. But if not I will start looking into it myself.
- Added "pinch to zoom" when window is maximized or full screen:
- When
Settings…>Control>Pinch to:is set toScale windoworScale window or toggle full screen, the new optionEnable pinch to zoom videowill be shown below it, with an option to set the maximum zoom (up to 10x). When enabled, first expand a player window so that it fills the whole screen, or enter full screen, then pinch to zoom in further. When the window is resized to less than full screen, the zoom will be reset to 1.0x automatically. - Added a new OSD message when
video-zoomchanges. Added ability to disable this message viaSettings…>UI>OSD.
- When
- Added new option:
Allow duplicate windows(inSettings…>General), available ifAlways open media in new windowis checked. If enabled, a new window will always be opened for each opened media even if some of those media are already playing in other windows. - Add option to change the width of the "floating" OSC. The default is 440 pts, but it can now be set to between 200 and 1000 pts:
Key Bindings
- Added a summary description above the Bindings table:
- Added support for changing Media Player keys (issue iina#2502 in upstream IINA). Quick summary of how these work:
- The
Use system media controlcheckbox must be selected inSettings…>Key Bindingsfor any of these to work at all. - If there is no key binding for a media key, then the key will fall back to the default action. (You can see the default actions in the
IINA Defaultconfiguration.) This is different from the behavior of other keys, which will be ignored if they have no bindings. To disable one of these entirely, you must have a key binding for it withignoreas its action. - The 3 media keys on a MacBook keyboard which double as
F7/F8/F9, are calledPREV/PLAYPAUSE/NEXT, respectively. - The keys with names
PLAY/PAUSE/STOP/GO_BACK/GO_FORWARDshould also work now, though untested because I don't have a keyboard to test those with!
- The
- Added support for more keypad keys:
KP_ADD,KP_SUBTRACT,KP_MULTIPLY,KP_DIVIDE,TAB,Shift+TAB. - Added support for mpv's internal
ANY_UNICODEwildcard key: this allows mpv's built-inconsole.luascript to be fully usable. [You still need to include an active key binding for the actionscript-binding console/enablein your key binding configuration in order to start the script. You can find this binding from thempv Defaultconfiguration.] - Also implemented support for mpv's
UNMAPPEDwildcard, although this is untested. Haven't found a script which makes use of it - if you know of one, please get in touch. - Added Command Not Found OSD message if an invalid command is attempted.
Layout Improvements
- Several improvements to Font Picker window. It now selects the current font by default when opened. Selecting a typeface using the tables now updates the current font selection at the bottom, which should be more intuitive. And its layout has generally been cleaned up a bit.
- In native full screen, when the mouse is moved to the top and the title bar is shown, the document icon is now shown. The "toggle sidebar" buttons (if configured) are now shown as well:
- Updated style of
Audio Filters,Video Filters,Inspectorwindows for a more native look under Mac OS Tahoe. - The music mode window now uses the native Close and Minimize buttons, and the Exit Music Mode button is changed to look similar to them.
- Updated style of Playback History window, which puts the search field & Group By button in the title bar. These will appear larger (with a more native look) in Mac OS Tahoe.
- Updated style of Settings window in Tahoe: the search field is located in the title bar, and the title is shown. Popup buttons, checkbox buttons, and other controls are larger to show off the new rounded style. Layout of
Key BindingsandAdvancedtabs was modernized to look better in Tahoe. - Increase roundedness of rounded corners for OSD, thumbnails, and other elements in Tahoe.
Tables
(Yup, this gets its own section because MacOS tables are a lot of work).
- Added animations to the Playlist table, so that drag & drop of rows and other changes should look more intuitive (this required a surprising amount of work).
- Added undo/redo support for most add/move/remove-type operations in the Playlist table. (Cannot undo
Move to trash: too many perceived corner cases when trying to dig out of the Trash). - The Active Filters table (in the Audio Filters / Video Filters windows) now supports multi-line text.
- Add drag & drop import of external audio files into
Audio tracktable, and of subtitle files intoSubtitle&Secondary Subtitletables (from currently unmerged IINA PR #3301). - Added undo/redo support to
Additional mpv Optionstable inSettings…>Advanced. - Cells in the Key Bindings table now wrap text to multiple lines when their content is too long to be displayed in one line.
- Various small bug fixes to table animations in general.
- Tab navigation tweaks. When editing text in a table, it was previously possible to hit
TABto quickly accept changes to the current cell & begin editing the cell in the next column; likewise,Shift+TABcould be used in the opposite direction. These previously stopped editing if used to navigate past the edges of the row. Now they will wrap around to a cell in the next or previous row. This makes it possible to edit all cells on all rows using only the keyboard. (UsingRETURN/ENTER, as before, will accept changes and end editing, whereas usingESCwill cancel any changes to the current cell.)
Welcome window
- Welcome window now changes the cursor to a pointed hand when hovering over its buttons and recent file entries.
- Welcome window buttons match behavior of buttons elsewhere. They will highlight on hover & are clickable (by "first mouse") even when it is not the frontmost window, but will not trigger their actions until mouseUp.
Command Line Interface
- The CLI code has been completely rewritten, with lots of fixes and improvements. It is now possible (and generally recommended) to run the
IINA Advancebinary directly (i.e.,/Applications/IINA Advance.app/Contents/MacOS/IINA Advance) instead of having to useiina-cli(/Applications/IINA Advance.app/Contents/MacOS/iina-cli). Unlikeiina-cli, this does not support the--keep-runningoption, and in fact it behaves as though hard-coded with--keep-running=yes. There may be some differences yet to be discovered with either stdin handling or IPC. - Added support for the
--macos-app-activation-policyCLI option and additional logic to support encoding mode, which is activated when the--ooption is found. (All together, these improvements allow the Thumbfast script to use IINA Advance to generate thumbnails, instead of requiring a copy ofmpv.app.)
Other Improvements
- Added a spin animation to the arrow buttons in the OSC when clicking them to seek +/- 10 sec (MacOS 15+ only).
- Added a checkbox so it is now possible to disable scroll wheel functionality when hovering over the play position & volume sliders (IINA issue iina#3264).
- Add support for mpv options
cursor-autohide&cursor-autohide-fs-only(thoughcursor-autohide=alwaysstill needs more work to remove an unpleasant flicker while moving the cursor). Also improved the cursor auto-hide logic to fix general bugginess & improve precision, so that the cursor only hides itself when inside a player window. - The subtitles & secondary subtitles tables in the Subtitles sidebar now gray out rows in one table which are already selected in the other table. It's not possible to select the same subtitle track for both primary & secondary subtitles.
- Some minor improvements to window positioning logic which should reduce cases of windows not being responsive. Also more refinements to show/hide of "inside" panels for better usability overall.
- When using Path Finder, IINA Advance now shows up as an
Open withoption for folders & volumes (upstream IINA issue iina#5488). - When subtitle download fails, a portion of the error message is now displayed as an OSD message.
- The plugin sidebar shows a message when there are no plugin tabs. (Even if plugins are enabled, they often do not add anything to the Plugin sidebar, and it looks strange to show a blank sidebar.)
- Add option to mask private identifiable information in log files (
Settings…>Advanced):- When writing to
iina.logwith this setting enabled, the app will try very hard to replace all file names, directories, and various fields which contain free form text with a token following the pattern{piiXX}, whereXXis a number which can be used as a key to look up the actual name if needed. These keys will be written with their values to a separate file,pii.txt. The idea is thatiina.logcan be shared in bug reports, omitting thepii.txt(though the latter may be needed for some rare cases). Note that this will not affect thempv.logfiles. Also note that there is not a 100% guarantee that all PII will be masked. There may be a bug or something missed. - This was already enabled in v1.3, so the real change here is the ability to disable it via the UI.
- When writing to
- Added a button to the Log Viewer window to show the
iina.logfile in Finder, when logging to file is enabled.
Bug Fixes
MacOS 26 Tahoe
- Fixed unwanted outline around the window when in custom full screen.
- Fixed: "Always open media in new window: NO" was no longer honored, and stopped detecting duplicate files.
- Numerous bug fixes for OSD, including laggy progress bar updates and wrong icon size.
- Modified the native full screen transition animation to resize the window immediately instead of trying to smoothly resize it.
Major Bugs Fixed
- Fixed bug introduced in v1.3: player window state saved on quit even if save/restore was disabled in Settings.
- Fixed vertical HVEC videos (+ possibly other formats) sometimes shown with wrong aspect ratio and/or thumbnails to be incorrectly displayed with 45° rotation.
- Fixed bug in v1.3: incorrect executable name caused
iina-clito fail completely (PR #10). - Fixed: saving downloaded subtitles caused crash without saving (Issue #12).
- Fixed bug in v1.3 which completely broke command-line launches (oops).
- Fixed longstanding bug (a race condition) which randomly prevented thumbnails from being shown.
- Fixed bug in v1.3: prevention of display sleep / screen saver was broken.
- Fix crash when dragging large number of table rows in any table.
- Fixed bugs which caused mpv options in the format
--no-{option_name}to fail when added via theAdditional mpv Optionstable in the Advanced settings, and when given as an command line argument before the--. - Fix issue #13: Screenshots do not save to selected folder
- Fix issue #15: Player state did not reset when opening new window
- Each player now saves & restores the mpv user options (set via the Prefs > Advanced table) independently with its other state, instead of just loading whatever is currently in the table.
Other Bugs Fixed
- Fixed: sometimes the cursor did not properly change to a pointed hand when hovering over the playback position slider.
- Fixed regression in v1.3: some menu items such as Undo/Redo were not grayed out when they should have been.
- Fixed bug/regression: key bindings for Lua scripts disappeared from the Key Bindings table if changing the selection in the Configuration table.
- Fixed regression in v1.3: layout constraint errors for horizontal separators when screen mirroring to a low-DPI display.
- Fixed: it was previously possible to resize the window in the middle of an animation, causing undefined effects.
- Fixed: changing the secondary subtitle to None showed "0" instead of "" in the OSD message.
