Vienna 3.10.0
This version is recommended for all Vienna users. Development has focused on stability and consistency, in the spirit of Apple's "Snow Leopard".
1. Evolutions since Vienna 3.9.5
🚲 Changes
- Support closing tabs by clicking the middle button of the mouse
- Add a command to reopen the last closed tab
- Use a new icon
- Make other visual adaptations necessary for macOS Tahoe (macOS 26), while avoiding Tahoe's tendency to put icons on every menu item
- Distribute Vienna in .dmg disk images instead of .tgz archives
- Add a button to access notifications settings from Vienna's settings
- Use Command-Control-0 to Command-Control-2 shortcuts for layout selection (these replace Control+Number shortcuts which are reserved)
- Use green double dot instead of yellow sparkle as mark of revised articles in article list
- Change filter bar position in vertical layout and refactor filter bar into its own view controller
- Display new downloads at the top of the download window
- Group file download notifications in Notification Center
- Add a Mastodon plugin (based on AppleScript) : configuration can be modified by holding down the Option key when invoking the plugin
- Remove deprecated Pocket and Google Current plugins
- Replace Twitter plugin with X plugin
- Remove obsolete sources of RSS feeds
- Make search plug-in names in toolbar more explicit
- Register Vienna as being able to open OPML files, e.g. in "Open With" menus
- Add keywords for Spotlight search
- Disable in the user interface the "Subscribe in Open Reader" option if syncing is not yet configured
- Suspend (up to 5 minutes) connection attempts when the computer is disconnected from network
- Be more tolerant with feeds using RSS tags instead of Atom tags (or vice-versa)
- Display details about failures on parsing feed in activity window
- Update translations
🤷🏻 Bugfixes
- Prevent some freezes related to attempts to detect RSS feeds
- Fix date 1.1.1970 or 31.12.1969 appearing for "Last Update"
- Prevent some of the situations which led Vienna to reset its folder order to alphabetical order
- Fix search plugins
- Fix search of plugins on case-sensitive file systems
- Multiple improvements and fixes to AppleScript support
- Fix icons not being visible in table header on macOS 26
- Improve handling and retention of the font selected in settings
- Fix / improve validation for many menu / toolbar items
- Fix text-only mode of toolbar and support of palette-color icons on macOS 15+
- Fix minimum font size setting
- Update link underline color to match system link color
- Fix animation bug when collapsing/expanding groups in folder list sidebar
- Fix bug that caused an invalid (duplicate) folder name being displayed while it has been rejected by the app
- Trim whitespaces at start or end of folder names entered by user
- Fix enclosure detection in OPDS acquisition feeds
- Fix crash or inability to parse some feeds containing HTML tags instead of their XHTML equivalent
- Fix relative URLs for certain feeds
⚙️ Internals improvements
- Have article controller fetch articles asynchronously (makes the application more responsive on folder selection)
- Improve detection and repair of inconsistent counts of unread articles
- Improve management of feed articles cache
- Overhaul plugin manager with NSBundle instances to enable plugins localization
- Improve error handling in OpenReader
- Rebalance AppController role:
- move parts of the layout code and many actions to ArticleController
- modify handling of keyboard events to avoid doing everything in AppController
- diminish ArticleListView and UnifiedDisplayView reliance on AppController
- move Sparkle Updater controller to ViennaApp
- Remove unused methods from BaseView protocol
- Optimize notifications timings during feed refreshes
- Improve lookup/selection of the "Unread Articles" smart folder
- Use storyboards as starting points for application, activity window, NewSubscription
- Refactor feed discovery
- Use view-based table view in download window; refactor the window and its contextual menus
- Remove ExtendedTableViewDelegate in favor of NSMenuDelegate
- Remove NSKeyedArchiver/NSKeyedUnarchiver methods which were needed for macOS 10.12 backwards compatibility
- Mimic Safari for web browser's user agent
- Remove legacy address bar
- Use find(_:configuration:completionHandler:) for searching in WKWebView in macOS 11.0+
- Remove unnecessary debugging code using some private properties of WKWebView
- Fix discrepancy in HTTP user-agent when adding a new subscription
- Reorganize the code used for fetching and caching websites' favicons
- Improve the code which manages the size of a split view involving web view
- Remove deprecated network calls
- Update document type declarations in Info.plist
- Clean up imports and class forward declaration
- Refactor Article's properties and accessors
- Declare some Objective-C designated initializers
- Rename multiple actions/variables/constants for consistency
- Reorganize items in Xcode
- Update tests
- Simplify our version of Autorevision
🛤️ Infrastructure updates
- Build on macOS 26.3 / Xcode 26.2
- Update FMDB to version 2.7.12, Sparkle to version 3.8.0
- Add Crowdin CLI configuration for translations management
- Clarify the directories used for derived files during build process
- Update Github checkout action to version 6
- Update SwiftLint settings
📖 Documentation
- Add documentation about usage of large language models (so-called "AI")
- Minor fix in Changelog regarding versions 2.6.0
- Various updates
2. Evolutions since Vienna 3.10.0 Beta 7
- Add keywords for Spotlight search
- Replace some toolbar icons with symbols having a higher resolution
- Update translations
- Fix enclosure detection in OPDS acquisition feeds
- Optimize asynchronous articles refresh
- Improve handling of "Check for Updates" menu item
- Remove a documentation file from bundle resources
- Build on macOS 26.3 / Xcode 26.2