Assets 2

What’s New for Users

Nuvola 4.13 gathers all goodies that were continuously released to the genuine flatpak builds of Nuvola since July 21st, 2018. If you read Nuvola News blog regularly, chances are that you are already aware of most of the changes described below. Also, Nuvola News articles, unlike this changelog, contain screenshots to better illustrate the changes.

  • Spotify: Widevine Plugin Update Required. Nuvola 4.12.20 was updated to use Chromium 68.0.3440.75 (a bit delayed by another issue) to solve the incompatibility of Widevine plugin. Users who use any of the older versions of the Widevine plugin will be asked to update it to achieve maximal compatibility. If you encounter any issues, please don’t hesitate to report them. [GitHub ticket]

  • Some Apps Use Dark Theme by Default. Nuvola 4.11.60 brought back the option to use a dark theme variant. Nuvola 4.12.20 goes further and enables the dark theme by default for 9 scripts whose user interface is rather dark. Other apps use a light variant by default if the theme provides it. As always, you can change these default settings in the preferences.

  • Tweaked Scrollbars. After the dark theme option was reintroduced, the default ugly Chromium scrollbars becamethe last noisy element ruining the otherwise pleasant visual experience. Nuvola 4.12.20 tackles that with new dark scrollbars (enabled by default for the 9 dark apps). Other apps use new light scrollbars. As always, you can change these default settings in the preferences.

  • About Dialog with Tips Shown on Start-Up. Nuvola performs start-up checks to make sure all dependencies are satisfied. It used to show a simple start-up to present the progress, bit it now shows a set of useful tips instead: how to add an app to favorites or pin to a dock for faster access; how to open Preferences and a help corresponding to individual features; how to report a bug, suggest a feature or ask a question. When all start-up checks are finished, the dialog usually closes automatically. You can show the tips anytime later, just click the Menu button, then About.

  • New Documentation Written from Scratch. Nuvola has finally received new documentation. I’ve been writing it from scratch for a while and hope it will be more useful than the old one. You can now open help pages of individual features with a single click from the recently redesigned preferences dialog.

  • Two Clicks to Report Bug and New Issue Templates. Nuvola now provides extra menu actions to report bugs, ask questions or suggest features more easily. The actions point directly to the new issue templates on GitHub.

  • Repeat & Shuffle States. Web app integration scripts can now export repeat and shuffle states. You can change them from Media Player Indicator applet or a tray icon, for example.

  • Flash Plugin Update. Good news is that BBC iPlayer 1.5.7 has recently joined the no-Flash party, which makes Amazon Cloud Player the last script which needs Flash plugin for audio playback. While the long-term goal is to get rid of the Flash plugin entirely, Nuvola comes with a small security improvement: If you use Amazon Cloud Player, Nuvola will ask you to confirm the upgrade of Flash plugin every time a new release is available. Nuvola will then download and install the new version for you. (This applies only to builds with Chromium Embedded Framework.)

  • New Releases of Scripts. Amazon Cloud Player 5.8, BBC iPlayer 1.6, Deezer 3.1, Google Play Music 6.2, Jango 2.5, Jupiter Broadcasting 1.3, KEXP 1.4, Mixcloud 4.2, ownCloud Music 1.4, Plex 1.5, Pocket Casts 1.2, Qobuz 1.2, SoundCloud 1.5, Spotify 3.1, Yandex Music 1.7, YouTube 2.1 and YouTube Music 1.3. See individual changelogs for details.

Other changes since release 4.12.0:

  • Individual Nuvola apps check whether the installed Nuvola Apps Service does have the same version to prevent compatibility issues. (Nuvola Apps Service is an optional background service that provides individual Nuvola apps with globally shared resources such as global configuration storage, global keyboard shortcuts, an HTTP remote control server, and a command-line controller.)
  • Some labels in Preferences dialog were tweaked.
  • The list of Patrons was replaced with a static widget instead of a web page.
  • The Welcome screen was removed, the About dialog with tips is shown instead.
  • Nuvola no longer warns if a matching GTK+ theme for Flatpak is not installed. One of the start-up tips guides users to open Preferences, and the Appearance tweaks are the very first item there.
  • The permissions of Flatpak builds were tweaked to require specific DBus services instead of the unrestricted access to session/system DBus. [GitHub ticket]
  • Nuvola no longer allows a user to set multimedia keys as in-app/global keybinding because it clashes with the system handling of these keys, especially in GNOME. Instead, take a look at Multimedia keys feature which is designed to avoid the conflicts. [GitHub ticket]
  • Memory leaks with Vala 0.42 were fixed.
  • Various minor bug fixes, performance improvements, and clean-up of the codebase.

What’s New for Script Maintainers

What’s New for Third-Party Packagers

  • Several scripts now require Nuvola 4.13. See individual changelogs for details.
  • Diorite & Nuvola now require Valac 0.42 because it contains fixes for GLib.Variant reference counting bugs and Diorite & Nuvola removed workarounds for these issues. If you decide to use older Valac, you can expect crashes because of invalid memory access. We recommend building the correct Vala version from source prior to building Diorite/Nuvola. Note that Vala is only a build-time dependency, you don’t need to include it in the resulting package.
  • Diorite and Nuvola: Dependencies were increased: glib-2.0 >= 2.56.1, gtk+-3.0 >= 3.22.30.
  • Diorite: GIR is no longer built by default. Use --gir configure flag to build it.
  • Diorite: All deprecation warnings were resolved. [GitHub ticket]
  • Diorite: Diorite is now built with fatal warnings but you can pass --no-strict to disable that.

@fenryxo fenryxo released this Jul 21, 2018 · 97 commits to master since this release

Assets 2

What’s New for Users

Nuvola 4.12 gathers all goodies that were continuously released to the genuine flatpak builds of Nuvola since May 8th, 2018. There were too many changes to list them here again, so I’m kindly asking you to read the previous announcements instead.

What’s New for Script Maintainers

  • Commands nuvolasdk new-project, nuvolasdk convert-project and nuvolasdk check-project were updated to follow the latest Nuvola standards: two space indentations and no trailing whitespace are used for and Standard JS code style is enforced for integrate.js.
  • The template was updated and the command nuvolasdk convert-project creates & files to help with the update of your file.
  • Nuvola SDK build system: If src/webview.png image is found, it is used to generate screenshots combining that web view snapshot image with base Nuvola screenshots. The resulting images can be found in the screenshots subdirectory. More screenshot types will be added in the next development cycle. [GitHub ticket]
  • Changes in guidelines: Web view snapshots are mandatory, Standard JS coding style for integrate.json is mandatory, the minimal API level was raised to 4.11.
  • Nuvola.Core::NavigationRequest: You can overwrite request.url field to force redirect during URL filtering.
  • Nuvola.queryAttribute: You can specify a parent element and a relative selector as an array of [parent element, selector].
  • Nuvola.queryText: You can specify a parent element and a relative selector as an array of [parent element, selector].
  • Nuvola.setInputValueWithEvent: The change event is emitted as well.
  • Nuvola ADK is no longer built with the WebKitGTK+ backend.
  • The default web app requirements Feature[Flash] Codec[MP3] were dropped.
  • An issue with radio actions in developer sidebar toggling themselves without user interaction was fixed. [GitHub ticket]
  • Service Integrations Tutorial and Media Player Integration pages were updated to use a new demo player.

What’s New for Third-Party Packagers

  • A build error with--no-cef flag was fixed and a continuous integration task was set up to test a build configuration with this flag after each commit. [GitHub ticket]
  • Since the genuine flatpak builds of Nuvola no longer use WebKitGTK+ backend, all scripts are tested only with the Chromium backend and specify Chromium[X.Y.Z] requirement for that reason. If you are stuck with the WebKitGTK backend, you may remove Chromium[X.Y.Z] Feature[MSE] requirements to make the script run with the WebKitGTK+ backend and add Feature[Flash] to use Flash plugin for audio playback. However, this should be done on a case-by-case basis and after careful testing.
  • Nuvola SDK build system: New dependency for building Nuvola scripts— Pillow ≥ 4.3.
  • Nuvola SDK build system: If src/webview.png image is found, it is used to generate screenshots combining that web view snapshot image with base Nuvola screenshots. The resulting images can be found in the screenshots subdirectory. More screenshot types will be added in the next development cycle. [GitHub ticket]

@fenryxo fenryxo released this May 8, 2018 · 159 commits to master since this release

Assets 2

Already Announced Changes

Since the genuine flatpak builds of Nuvola are updated continuously, we also announce user-visible changes more often:

Changes for Script Maintainers

  • New utility function Nuvola.queryText() (doc) used to query an element by a CSS selector expression and return text content or null.
  • New utility function Nuvola.queryAttribute()(doc) used to query an element by a CSS selector expression and return its attribute or null.
  • New utility function Nuvola.setInputValueWithEvent() (doc) used to set the value of an input element and then emit aninput event.
  • New utility function Nuvola.exportImageAsBase64() (doc) used to load and export an image as base64 data URI, e.g., in the case of blob:// resources.
  • The Chromium-based backend now supports URL filtering for external links, which is more powerful than that of WebKitGTK backend, e.g., it can detect JavaScript redirects in initially empty pop-up windows.
  • Developer tools add the WebView sidebar to retrieve and change the dimensions of the web view or to take a snapshot. It will be used to provide AppStream metadata with per-app screenshots to be shown in GNOME Software, for example.
  • Nuvola ADK includes Standard JavaScript code style checker. You can use the standard command to check the style of your script or use standard --fix to convert it.
  • NuvolaKit JavaScript API Reference was updated with new symbols and changelogs were added to track changes more easily.
  • Nuvola SDK calculates a micro version number from git as the number of commits from the last tag and adds it to metadata.json. The micro version number is shown in the About dialog.
  • Nuvola SDK uses two spaces for the indentation of JSON files.

Changes for Third-Party Packagers

  • Nuvola can still be built without the Chromium-based backend. Please let us know whether you still need that possibility or the WebKitGTK-based backend can be removed.
  • Vala ≥ 0.40.4 is required and all compatibility issues with Valac 0.40 were fixed. [GitHub 1, GitHub 2]
  • New dependencies: libpulse and libpulse-mainloop-glib.
  • Canonical’s appindicator3 was replaced with a better maintained fork (libayatana-appindicator3) from Ayatana Indicators project.
  • The WebKitGTK+ VAPI patch was dropped.
  • WAF build system was upgraded to 2.0.6.
  • Build instructions were updated and moved to file [GitHub].
  • Another batch of scripts was ported to use the Chromium-based backend: 8tracks, Bandcamp, Google Calendar, OwnCloud Music, Plex Music, Pocket Casts, SiriusXM, Amazon Cloud Player, BBC iPlayer, and Jupiter Broadcasting. If you still support only the WebKitGTK-based backend, you can try to remove Chromium[] Feature[MSE] flags from their requirements and add Feature[Flash] when necessary. However, this should be done on a case-by-case basis and only after careful testing. We do not test and support these modifications though.

@fenryxo fenryxo released this Mar 12, 2018 · 204 commits to master since this release

Assets 2

Nuvola 4.10 is the first release to use new Chromium backend for five selected scripts to achieve audio playback without Flash plugin.

@fenryxo fenryxo released this Dec 17, 2017 · 370 commits to master since this release

Assets 2

Nuvola 4.9.0 is mostly a maintenance release as most of the energy is invested in the Chromium port of Nuvola, and the development of other features has slowed down. The current status of this ambitious effort will be described in a separate announcement.


  • URL entry widget was added: Press Ctrl+L or click the gear menu button → Load URL to display/change the current URL.
  • Updated script: Yandex Music 1.5 was adopted by Aleksey Zhidkov and enhanced with an integrated Like button. An album art fix by Alexander Konarev has been also incorporated. Issue: tiliado/nuvola-app-yandex-music#2, tiliado/nuvola-app-yandex-music#10.
  • Updated script: SiriusXM 1.4 by Jiří Janoušek. Metadata parsing adapted to recent SiriusXM changes.
  • Updated script: BBC iPlayer 1.3 by Andrew Stubbs. Fixed integration of radio shows, added integration of progress bar, volume bar and skip action.
  • Page loading indicator was added. Issue: tiliado/nuvolaruntime#229
  • If Bumblebeed is detected, Nuvola assumes that the integrated Intel graphics card is the primary and skips unnecesary checks for an NVidia flatpak driver. Issue: tiliado/nuvolaruntime#380
  • Various fixes regarding VDPAU & VA-API drivers. Issue: tiliado/nuvolaruntime#380

Under the hood

  • WebKitGTK >= 2.18.0 is required.
  • If Nuvola is told that WebKitGTK supports MSE, it checks whether it is so and aborts otherwise. Don't use --webkitgtk-supports-mse if it isn't true.
  • Fixed various memory leaks.
  • Ongoing optimizations to replace synchronous IPC calls with asynchronous variants.
  • ValaCEF project has been created to provide Nuvola with Vala bindings for Chromium Embedded Framework (CEF).

@fenryxo fenryxo released this Sep 30, 2017 · 405 commits to master since this release

Assets 2
  • Release announcements for users are posted to Nuvola News blog and social network channels.
  • Developers, maintainers and packagers are supposed to subscribe to Nuvola Devel mailing list to receive more technical announcements and important information about future development.

New Features

  • New script: Pocket Casts by Jiří Janoušek. Pocket Casts is the only podcatcher you’ll ever need. Listen to your favorite shows in one place, keep in sync progress across various devices, find great new content with curated featured podcasts, currently trending podcasts and much more. Now also with desktop integration provided by Nuvola.
  • Updated script: Groove Music script 2.0 by Joel Cumberland works again in Nuvola after being ported to use Media Source Extension instead of Flash plugin.
  • Updated script: Amazon Cloud Player script 5.5 by Andrew Stubbs integrates a track progress bar and volume controls.
  • Updated script: Google Play Music script 6.0 by Jiří Janoušek uses new asynchronous API to improve responsiveness and reduce lags, but also drops support for Nuvola 4.7 and older.

Discontinued Features

  • Spotify script is temporarily unsupported until Nuvola is ported to Chromium Embedded framework because Spotify dropped support for WebKit browsers (including Nuvola and Safari).
  • Yandex Music script is currently orphaned and needs a new maintainer. The script is still shipped with Nuvola 4.8 but may be removed in the future unless somebody adopts it. If anyone is interested, please get in touch with me at Nuvola Devel mailing list.

News for Script Maintainers

  • Asynchronous variants of various JavaScript API calls were introduced deprecating original synchronous methods. The async methods return a Promise object, which is used to resolve the result of the async operation.
  • List of async methods: Notifications.isPersistenceSupportedAsync, Actions.isEnabledAsync, Actions.getStateAsync, Core.getComponentInfoAsync, Core.isComponentLoadedAsync, Core.isComponentActiveAsync, KeyValueStorage.setDefaultAsync, KeyValueStorage.hasKeyAsync, KeyValueStorage.getAsync and KeyValueStorage.setAsync.
  • New function: Nuvola.logException to log exceptions to terminal.
    JavaScript API reference now supports new annotations such as "Deprecated since", "Available since" and "asynchronous" function.

Under the Hood

  • Nuvola uses new IPC API from Diorite 4.8 and replaced a lot of synchronous IPC calls between WebWorker and AppRunner processes with asynchronous variants. This should improve the performance of the WebKit WebProcess, reduce lags and prevent occasional deadlocks. However, scripts must use the newly-introduced async JavaScript API to reach the full potential. Google Play Music is the first one.

@fenryxo fenryxo released this Sep 4, 2017 · 431 commits to master since this release

Assets 2

New Features

  • New web app: Jupiter Broadcasting by Andrew Stubbs.
  • The genuine flatpak builds offers free trial and $1/month subscription.
  • For sake of transparency, preferences dialog shows placeholders for features which were disabled by a distributor.

Bug Fixes

  • VAAPI/VDPAU checks are not run under Wayland. Issue: #280 Issue: #359
  • URL sandbox was not honoured properly: Issue: #367

News for Script Maintainers

  • API 4.6 is required for new scripts.

Under the Hood

  • Nuvola no longer bundles *.vapi files but depends on those of Valac 0.36.3. However, glib-2.0.vapi and
    webkit2gtk-web-extension-4.0.vapi must be patched to work properly (see vapi/*.patch). You may need to
    modify wscript if you don't use Valac 0.36. Issue: #369
  • Valac and GLib dependencies were raised to 0.36.3 and 2.52. Issue: #369
  • GIR XML and typelib files are generated. Introduces new dependency on g-ir-compiler.
  • There was a lot of refactoring to allow usage of Python-GObject and to support multiple web engines in future.
  • Future warning: Nuvola is likely to introduce dependency on Python 3.6.
Sep 1, 2017
Release 3.0.10 - September 1st, 2017
This is a maintenance release.

  * Fix high CPU usage under Wayland. Issue: #364
  * Mark the series as "obsolete/legacy" instead of "stable".

Signed-off-by: Jiří Janoušek <>

@fenryxo fenryxo released this Jul 29, 2017 · 481 commits to master since this release

Assets 2

New Features:

  • Start-up system checks run in parallel to decrease start-up time. In case of any problem, only a single dialog is shown instead of multiple error dialogs or info bars.
  • WebKitGTK+ was upgraded to 2.16.6 fixing many security vulnerabilities and rendering issue.
  • Media Source Extension (MSE) is enabled in WebKitGTK as well as in Nuvola itself. This applies only to the genuine flatpak builds of Nuvola. MSE is required by some web apps for Flash-free audio/video playback.
  • New web app: BBC iPlayer by Andrew Stubbs. Note that this script requires MSE and may not work with third-party builds of Nuvola. Issue: #321

Bug fixes:

  • Graphics.dri2_get_driver_name() now throws error instead of an uncaught critical warning if it cannot connect to X Server. Issue: #359
  • Fixed typo in Nuvola.parseTimeUsec. Issue: #357
  • int64 is used for track position to avoid integer overflow. Issue: #358

News for Script Maintainers:

  • Developer sidebar can now change track rating.
  • Media player API documentation was updated with track rating.

Under the Hood:

  • New dependency: unit.js 2.0.0 (installed as /usr/share/javascript/unitjs/unit.js) is used for JavaScript unit tests (included in the test service - web_apps/test subdirectory).
  • Added support for org.gnome.SettingsDaemon.MediaKeys D-Bus name. Upstream ticket.
  • The content of format support dialog was moved to Preferences dialog and various toggles were removed.
  • The content of bindings, models and interfaces directories was merged into components directory.

@fenryxo fenryxo released this Jul 29, 2017 · 965 commits to master since this release

Assets 2

Release Notes

This is a bug fix release addressing following issues:

  • WebKitGTK+ ≥ 2.16.3 is required as it fixes many web compatibility issues.
  • Welcome text updated with with the link to Nuvola’s Medium blog and information about Nuvola 3.0.x End of Life schedule.

Ubuntu Software Bug

Ubuntu Software currently cannot install third-party deb packages. We recommend using GDebi package manager (package name gdebi) until this issue is fixed.

Nuvola Player Bundles

Nuvola Player bundles are packages that contain the core application as well as integration scripts of streaming services. Upon installation, all components are updated independently via the Nuvola Player Package Repository.

Note: The bundles are designed for new Nuvola Player installation only. If you wish to update your current Nuvola Player installation, use package manager application to find and install updates.