Nuvola 4.10 Released

13 views
Skip to first unread message

fenryxo

unread,
Mar 4, 2018, 4:46:54 PM3/4/18
to Nuvola Apps Development
Dear friends,

Nuvola 4.10 & friends were released. It is the first release to use a new experimental Chromium backend for five selected scripts to achieve audio playback without the Flash plugin. Announcement for users is in Medium blog, as usual, more technical details for maintainers and packagers are here.


News for script maintainers:

  • Nuvola has introduced new experimental web engine based on Chromium Embedded Framework. While the WebKitGTK engine is still the default one, I'd like to see all scripts ported to be compatible with the CEF backend. This way, we could finally achieve audio playback without Flash plugin, which is handy as more and more services are dropping Flash player anyway. More instructions will follow as I still need to update developer documentation and write a porting guide.

  • Nuvola.parseTimeUsec now supports negative time specs.

News for packagers:

  • Nuvola has introduced a new optional experimental backend based on Chromium Embedded Framework. It depends on ValaCEF and can be disabled with--no-cef configure option. However, bear in mind that some websites no longer work with the old WebKitGTK backend (Spotify, YouTube, Mixcloud) because they dropped Flash-based player and require HTML5 Audio with MSE or even Widevine DRM plugin. Although I tried hard to use experimental MSE support in WebKitGTK, I finally gave up in favor of CEF. To find out whether a particular script requires the CEF backend, look at the requirements field of metadata.in.json (e.g. Chromium[63] Feature[MSE]). The goal of Nuvola is to switch all scripts from Flash to HTML5 Audio sooner then we are forced to by the websites dropping Flash player. That's why some scripts (e.g. Deezer) already depend on CEF while Flash-based playback is still possible. As a short-term workaround, you can set their requirement back to Feature[Flash] and continue using WebKitGTK backend.

  • Both Nuvola and Diorite need Vala >= 0.38.4. Nuvola added a new mandatory dependency on libarchive >= 3.2 and an optional dependency on Vala linter (pass --no-vala-lint to disable it).

  • Some configure options of Nuvola were renamed (e.g. --noxxx → --no-xxx).

  • It is no longer possible to launch scripts with nuvola -a ID, so you need to rebuild scripts with Nuvola SDK 4.10, which uses nuvolaruntime command instead.

  • Diorite supports the VAPIDIR environment variable to set extra Vala API directories.

  • Nuvola SDK generates AppStream Addon XML metadata and a nuvola-app-xxx launcher.

  • The default unique id is now eu.tiliado.WebRuntime, which is used consistently instead of the two previous ids (eu.tiliado.Nuvola and eu.tiliado.NuvolaOse).

  • Test scripts from web_apps directory are no longer installed. You may install them manually if you deem it necessary.

Best regards,

Jiri Janousek

P.S. Full changelog follows

Nuvola Runtime 4.10.0


New features:


Nuvola introduces a new experimental backend based on Chromium Embedded Framework, which facilitates a switch to audio playback without Flash plugin. At present, only Spotify, Deezer, YouTube, Mixcloud, and BBC iPlayer use the new engine, mostly because these scripts simply does not work with the old WebKitGTK backend. The goal of the project is to eventually port all scripts from Flash plugin to HTML5-Audio-based playback.


Enhancements:

  • Amazon Cloud Player 5.6 by Andrew Stubbs: Updated album name extraction, added thumbs up/down actions and fixed compatibility with CEF backend.
  • BBC iPlayer 1.4 by Andrew Stubbs: Update live TV & radio integration; fixed compatibility with CEF backend.
  • Deezer 3.0 by Jiří Janoušek: Switched to HTML5 Audio playback instead of the Flash plugin; fixed "Add to Favorite tracks" action.
  • Micxloud 4.1 adopted by Jiří Janoušek: Ported to support the new interface and added CEF backend requirement.
  • Spotify 3.0 adopted by Jiří Janoušek: Updated to support new Spotify web player. Requires CEF backend.
  • YouTube 2.0 adopted by Jiří Janoušek: Fixed metadata parsing and ported to use HTML5 Audio/Video. Requires CEF backend.

Under the hood:

  • Nuvola.parseTimeUsec now supports negative time specs.
  • Increased requirements: Vala >= 0.38.4.
  • New mandatory dependency: libarchive >= 3.2
  • New optional dependencies: ValaCEF (--no-cef), Vala linter (--no-vala-lint).
  • Source code was refactored to use a united coding style which is checked with Vala linter.
  • Some configure options were renamed (e.g. --noxxx → --no-xxx)
  • GIR generation is now optional, you can pass --no-gir to disable it.
  • Welcome screen is now shown from App Runner process instead of the Nuvola Service process, which makes start-up faster.
  • App Runner is now installed as bin/nuvolaruntime and can be invoked independently on Nuvola Service. However, some features are not available if the service cannot be launched via DBus activation.
  • Nuvola Service lost most of command line parameters and cannot be used to launch scripts with nuvola -a ID. Use nuvolaruntime instead.
  • The default unique id is now eu.tiliado.WebRuntime, which is used consistently.
  • Test scripts from web_apps directory are no longer installed. You may install them manually if you deem it necessary.

Nuvola SDK 4.10.0

  • Nuvola 3.0 compatibility mode was removed.
  • The nuvola-app-xxx binary launcher was replaced with a shell script, which is now always included. It requires Nuvola 4.10. Consequently, --with-dbus-launcher configure option was removed.
  • Individual apps now use the eu.tiliado.WebRuntimeApp... unique id.
  • AppStream Addon XML metadata are generated. Issue: tiliado/nuvolasdk#1

Diorite 4.10.0

  • Increased requirements: Vala >= 0.38.4.
  • The VAPIDIR environment variable is supported to set extra Vala API directories.
  • GIR generation is now optional, you can pass --no-gir to disable it.
  • Fixed bug in Entry widget that prevented user input.
  • Fixed bug when XDG Desktop Portal web browser selector was shown under a dialog window instead of above it.
  • RequirementsParser supports 4 states:
  • New utility functions: Drt.print_variant()
  • Added Drt.Event thread synchronization primitive.
Reply all
Reply to author
Forward
0 new messages