Learn what Felgo offers to help your business succeed. Start your free evaluation today! Felgo for Your Business

Felgo Updates

Felgo Update Guide

After installing the Felgo SDK, you can receive updates with the Maintenance Tool. The Maintenance Tool is located at the installation directory of your Felgo SDK and is called MaintenanceTool.

Run this application and select Update components to check if any updates are available for the Felgo SDK.

You then see a list of packages for which an update is available. To update the packages, click Continue and then Update on the following screen. After all packages were downloaded and installed, you can close the Maintenance Tool by clicking the Done button.

Note: After you updated the SDK, you need to Clean your project so the updated Felgo version is used. To clean your project, open Qt Creator and select Clean Project from the Build menu. Afterwards you can run your project and the updated Felgo version is used.

With your Felgo signup, you get access to all Felgo updates for free. Some of the components are available exclusively for Felgo customers - to upgrade to a Felgo license click here.

Latest Felgo Release

v 4.1.0 (2023-06-22)

Highlights Blog Post: Release 4.1.0: Build Qt 6 Apps for WebAssembly, Integrate Firebase Analytics, Gaming Components and SpeechToText

Felgo 4.1.0 adds support for WebAssembly, Firebase Analytics, Felgo Gaming Components, SpeechToText functionality and an improved Felgo Live connnection process.

Felgo 4.1.0 comes as a free update for all Felgo developers.

Update Now (New to Felgo? Get started here)

Highlights

  • You can now build your Qt and Felgo 4 project for WebAssembly and run your application on the web.

    The WebAssembly Kit in Qt 6 and Felgo 4 integrates perfectly with Qt Creator. Similar to building for Desktop, you can build and run the application by pressing the Run button in Qt Creator. Qt Creator will compile the project, start a local web server, deploy your app, and open the the browser to run it.

    You can also use the Felgo Live Server to start a Web Client and directly run your Qt Quick project in the browser. All changes to the code are reloaded on the fly - without the need for compilation and deployment to a local web server.

  • The Felgo Games components are now migrated to Qt 6 and ready to take your 2D games to the next level.

    The update includes all the core gaming modules. The following features are currently only available in Felgo 3:

    There are also number of API changes due to underlying changes in Qt 6:

    • The property GameSoundEffect.category no longer exists.
    • The property BackgroundMusic.availability no longer exists.
    • The property BackgroundMusic.autoLoad no longer exists. To delay loading the media file, set the BackgroundMusic::source property only before calling BackgroundMusic::play().

    Lastly, some Felgo Games components used a name that also exists in QtQuick modules. To avoid conflicts due to the identical name, the Felgo types are now renamed with the Game-prefix. The affected Felgo QML types and existing QtQuick types are:

Note: For more information about migrating projects from Felgo 3 to 4, see the migration guide.

  • The Firebase Plugin now includes a new FirebaseAnalytics type, a cross-platform integration of Google’s Firebase Analytics service. This plugin type uses Google Analytics 4 instead of the outdated Universal Analytics and replaces the Google Analytics Plugin.
     import Felgo
     import QtQuick
    
     App {
       FirebaseAnalytics {
         id: analytics
    
         // GAv4 web measurement ID for desktop:
         measurementId: "G-GB8PY1E0JT"
         userId: "USER15"
       }
    
       NavigationStack {
         AppPage {
           title: "Firebase Analytics"
    
           Row {
             AppButton {
               text: "logEvent"
               onClicked: analytics.logEvent("ButtonClicked", { “type”: “logEvent” })
             }
             AppButton {
               text: "logScreen"
               onClicked: analytics.logScreen("Firebase Analytics")
             }
           }
         }
       }
     }

New Features

  • You can now use new SpeechToText item to record and transcribe spoken text online or on-device on Android and iOS.
     import Felgo
     import QtQuick
    
     App {
       NavigationStack {
         AppPage {
           title: "Speech to Text"
    
           AppButton {
             id: button
             anchors.horizontalCenter: parent.horizontalCenter
             flat: false
             enabled: SpeechToText.recognitionAvailable
             text: !SpeechToText.recognitionActive ? "Start" : "Stop"
             onClicked: {
               if(!SpeechToText.recognitionActive)
                 SpeechToText.startSpeechToText("en-US")
               else
                 SpeechToText.stopSpeechToText()
             }
           }
    
           Connections {
             target: SpeechToText
             enabled: SpeechToText.recognitionAvailable
             onSpeechToTextResult: (result, isFinal) => {
                                     recognized.text = result
                                   }
           }
    
           AppText {
             id: recognized
             width: parent.width
             anchors.top: button.bottom
             anchors.bottom: parent.bottom
             verticalAlignment: Text.AlignTop
             padding: 10
           }
         }
       }
     }

    Using this functionality requires some additional project configuration. See the SpeechToText documentation for more information.

    Note: To use speech-to-text on your Android device, make sure that you have Google Search und Google SpeechServices installed.

Improvements

  • Enhanced Connection Process for Felgo Live: Previously, the Felgo Live Client relied on UDP broadcasts within the local network to discover the Felgo Live Server. However, UDP broadcasts are limited in iOS 16+ and may even be blocked in certain networks. These limitations resulted in occasional connection issues and inconveniences during development, impacting the overall workflow.

    The new solution eliminates UDP broadcasts and enables direct client-to-server connections. Here's how it works:

    • Unique Server Identifier: Each Felgo Live Server now has a unique server identifier, displayed prominently in the Felgo Live Server application.

    • Direct Connection: In the Felgo Live Client mobile app, you can manually enter the server ID of your development computer. This allows the client to directly connect to the specified server without relying on UDP broadcasts.

    • Improved Connection Management: The Felgo Live Client now remembers previous connections, creating a list of hosts that you can easily choose from for subsequent connections. This eliminates the need to enter the server ID every time and simplifies the process of reconnecting to a known host.

    These changes address the drawbacks of the previous approach while introducing a more reliable and efficient connection method.

  • The SwipeOptionsContainer now provides a better user experience when when opening or closing the swipe options.
  • Adds a new option for NativeUtils::setStatusBarStyle() and Theme::statusBarStyle. Use statusBarStyleCustom to have control over the status bar via native code.
  • The Felgo application does no longer apply a custom font by default. If you are already using native platform fonts in your application, you can thus remove the setting from the main.cpp:
     // Use platform-specific fonts instead of Felgo's default font - this setting is no longer required
     felgo.setPreservePlatformFonts(true);

Fixes

Known Issues

  • The Qt Multimedia backend for Qt 6.4.1 WebAssembly is not fully supported yet. It is currently not possible to play audio or video with the MediaPlayer type. Playing raw audio with the SoundEffect type works as expected.
  • Qt Multimedia Audio Output is not working on Windows. See QTBUG-108383 for a workaround that can be applied globally on your system or locally for the project. The issue has been fixed already. With the next Qt version update of the Felgo SDK, the workaround will not be required anymore.

v 4.0.1 (2023-03-15)

Highlights Blog Post: Release 4.0.1: Support for Apple Sign In and Android Content URI, Improved Felgo Live Permissions on macOS

Felgo 4.0.1 adds support for the Apple Sign In Plugin, allows you to use content:// URIs on Android in Qt Quick, and includes better app permission handling for Felgo Live on macOS.

Felgo 4.0.1 comes as a free update for all Felgo developers.

Update Now (New to Felgo? Get started here)

New Features

  • The Apple Sign In Plugin with the AppleSignIn and AppleSignInButton QML types is now available on iOS.
     import QtQuick
     import Felgo
    
     App {
       AppPage {
         Column {
           AppleSignInButton {
             id: appleSignInButton
           }
    
           AppText {
             text: !appleSignInButton.visible
                   ? "Apple Sign-in unavailable."
                   : appleSignInButton.appleSignIn.isLoggedIn
                     ? "Signed in with Apple user: " + appleSignInButton.appleSignIn.userName
                     : "Click above button to sign in with Apple user"
           }
         }
       }
     }
  • The AdMobBannerNative type is now available to display ad banners inline. To use the type on iOS, it is required to change the graphics API to OpenGL:
     #include <QQuickWindow>
    
     int main(int argc, char *argv[])
     {
       // Set OpenGL rendering
       QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGLRhi);
    
       QApplication app(argc, argv);
       …
     }

Improvements

  • You can now use Android content:// URIs as source for an AppImage, for example when accessing and showing the NativeUtils::galleryPhotos or using the ImagePicker.
     import Felgo
     import QtQuick
    
     App {
       NavigationStack {
         AppPage {
           id: page
           title: qsTr("Choose Photos")
    
           // right bar item to accept selection
           rightBarItem: TextButtonBarItem {
             text: "Next"
             enabled: imagePicker.selectedCount > 0
    
             // your app will probably pop the photo selection page from the stack to move on
             // this example only logs the selected photos
             onClicked: console.debug("SELECTED:", JSON.stringify(imagePicker.selection))
           }
    
           // image picker view for photo selection
           ImagePicker {
             id: imagePicker
             anchors.fill: parent
           }
         }
       }
     }
  • The Felgo Live Client now better handles app permissions on macOS Monterey and later.

Fixes

  • The Qt Bluetooth APIs do no longer require the Qt Location permission on Android 12 or later.
  • Stability improvements for Felgo Live and QML Hot Reload.

v 4.0.0 (2023-02-09)

Highlights Blog Post: Release 4.0: Create Beautiful Cross-Platform Apps with Qt 6

Felgo 4.0.0 makes it possible to develop Felgo apps with all the latest features of Qt 6.4.1. The release also brings support for the CMake build system, includes a custom build of the Qt Location module and updates Felgo controls to use Qt Quick Controls 2.

Felgo 4.0.0 comes as a free update for all Felgo developers and can be installed side-by-side to Felgo 3.

You can download the Felgo 4 installer here.

Highlights

The switch to Felgo 4 and Qt 6 comes with many different changes for various Qt Modules and Felgo components. The following list summarizes the most important topics:

  • Build System Update to CMake: For Qt 6 and Felgo 4, CMake is now the preferred build system. You can keep your qmake project configuration initially, but it is recommended to upgrade existing Felgo projects to the CMake build system. This is because some features, like multi-ABI builds on Android, are not supported with qmake and Qt does not plan to further develop and improve qmake support.

  • Felgo Controls with Qt Quick Controls 2.0: Qt Quick Controls 1 are no longer available with Qt 6. Thus, all Felgo controls now use Qt Quick Controls 2. However, the base Qt Quick Controls now come with an own icon property. As a result, it is now required to use a new iconType property for configuring an IconType in Felgo controls. This affects various QML types like AppIcon, AppButton, AppCheckBox, AppActivityIndicator, ActivityIndicatorBarItem, FloatingActionButton, IconButton, IconButtonBarItem, NavigationItem or SearchBar. In addition, the Felgo Page, ScrollIndicator and Icon types are now renamed to AppPage, AppScrollIndicator and AppIcon to avoid naming collisions with the respective Qt types:
     import Felgo
     import QtQuick
    
     App {
       Navigation {
         NavigationItem {
           title: "Home"
           iconType: IconType.home             // Change icon to iconType
    
           AppPage {                           // Change Page to AppPage here
             Column {
               anchors.centerIn: parent
    
               AppButton {
                 text: "Click me"
                 iconType: IconType.handodown  // Change icon to iconType
               }
               AppCheckBox{
                 text: "Enabled?"
                 iconType: IconType.adjust     // Change icon to iconType
               }
             }
           }
         }
       }
     }
  • Qt Location and Maps with MapLibreGL: The Qt Location module is currently not available with Qt 6. Felgo 4 thus provides a custom build of the module to support map features with the AppMap type. However, due to changes in Qt's rendering system, the MapBoxGL Plugin is not available anymore. As an alternative for rendering vector maps, Felgo 4 includes a new Maplibre GL Plugin. Other map plugins for tile-based rendering of maps are supported like before.

  • Changes to Qt Modules and QML: Qt 6 brings many changes for various Qt Modules and also includes some differences for Qt Quick and QML. For example, you no longer have to specify module version numbers for import statements. Also, Qt Quick now operates in high-dpi mode by default and some of the QML and C++ types have a slightly different API. See the Qt documentation for a full list of Changes to Modules in Qt 6 and a Qt 6 Porting Guide.

For detailed information on all the changes and how to migrate your Felgo 3 project, see the Felgo 4 update guide: Felgo 4 Update Guide and Project Migration for Qt 6.

Apart from the necessary changes for migration to Qt 6, the Felgo 4 release also includes new features, improvements and fixes for the Felgo SDK, which are listed in the sections below.

New Features

Improvements

  • The AppButton now allows setting the (background, border & text) color for the hovered state.

Fixes

  • Fixes incorrect AppToolTip position when using long bubble texts.
  • Fixes missing placeholder text when canceling AppTextEdit input on iOS with an empty field.
  • The Notification Plugin now supports Android 12+ (API level 31+) devices and build targets.
  • The NativeUtils::share functionality for iOS and Android is updated to properly support sharing text, web links or files with the native share dialog of the latest OS versions.
  • Fixes behavior problems when combining the PullToRefreshHandler with a ListView that has additional top spacing from a header item or top margin configuration.
  • Fixes the App::tablet property to already deliver a correct value when used in the Component.onCompleted handler of the app window.

Older Felgo Releases

Felgo 3 (Qt 5.15) Releases

See the Felgo 3 Releases for more information on the currently available version of Felgo 3.

Felgo 3 with Qt 5.15 can still be used independent from Felgo 4. It is possible to install Felgo 3 side-by-side with Felgo 4 or other Qt installations.

You can thus keep your Felgo 3 project until you are ready to migrate to Qt 6 and Felgo 4.

Qt_Technology_Partner_RGB_475 Qt_Service_Partner_RGB_475_padded