github svobs/iina-advance v1.4

7 hours ago

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 video is disabled, subtitles can be shown in the black space above or below the video. For example:
Subtitles-over-video

Moved outside the video:
Subtitles-outside-video

  • Similarly, Lua scripts such as thumbfast and console can 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:
    Zoom-Feature
    • When Settings… > Control > Pinch to: is set to Scale window or Scale window or toggle full screen, the new option Enable pinch to zoom video will 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-zoom changes. Added ability to disable this message via Settings… > UI > OSD.
  • Added new option: Allow duplicate windows (in Settings… > General), available if Always open media in new window is 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:
Floating-OSC-Long Floating-OSC-Short

Key Bindings

  • Added a summary description above the Bindings table:
Key-Bindings-Summary
  • Added support for changing Media Player keys (issue iina#2502 in upstream IINA). Quick summary of how these work:
    • The Use system media control checkbox must be selected in Settings… > Key Bindings for 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 Default configuration.) 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 with ignore as its action.
    • The 3 media keys on a MacBook keyboard which double as F7/F8/F9, are called PREV/PLAYPAUSE/NEXT, respectively.
    • The keys with names PLAY/PAUSE/STOP/GO_BACK/GO_FORWARD should also work now, though untested because I don't have a keyboard to test those with!
  • Added support for more keypad keys: KP_ADD, KP_SUBTRACT, KP_MULTIPLY, KP_DIVIDE, TAB, Shift+TAB.
  • Added support for mpv's internal ANY_UNICODE wildcard key: this allows mpv's built-in console.lua script to be fully usable. [You still need to include an active key binding for the action script-binding console/enable in your key binding configuration in order to start the script. You can find this binding from the mpv Default configuration.]
  • Also implemented support for mpv's UNMAPPED wildcard, 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:
    TitleBar-controls-in-full-screen
  • Updated style of Audio Filters, Video Filters, Inspector windows 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.
History-window-facelift
  • 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 Bindings and Advanced tabs 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 track table, and of subtitle files into Subtitle & Secondary Subtitle tables (from currently unmerged IINA PR #3301).
  • Added undo/redo support to Additional mpv Options table in Settings… > 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 TAB to quickly accept changes to the current cell & begin editing the cell in the next column; likewise, Shift+TAB could 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. (Using RETURN/ENTER, as before, will accept changes and end editing, whereas using ESC will 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 Advance binary directly (i.e., /Applications/IINA Advance.app/Contents/MacOS/IINA Advance) instead of having to use iina-cli (/Applications/IINA Advance.app/Contents/MacOS/iina-cli). Unlike iina-cli, this does not support the --keep-running option, 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-policy CLI option and additional logic to support encoding mode, which is activated when the --o option is found. (All together, these improvements allow the Thumbfast script to use IINA Advance to generate thumbnails, instead of requiring a copy of mpv.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 (though cursor-autohide=always still 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 with option 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.log with 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}, where XX is 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 that iina.log can be shared in bug reports, omitting the pii.txt (though the latter may be needed for some rare cases). Note that this will not affect the mpv.log files. 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.
  • Added a button to the Log Viewer window to show the iina.log file 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-cli to 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 the Additional mpv Options table 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.

Don't miss a new iina-advance release

NewReleases is sending notifications on new releases.