Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qFlipper for openSUSE:Factory 
checked in at 2023-12-20 21:03:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qFlipper (Old)
 and      /work/SRC/openSUSE:Factory/.qFlipper.new.9037 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qFlipper"

Wed Dec 20 21:03:15 2023 rev:3 rq:1134216 version:1.3.3+git0.1699609231.bfce851

Changes:
--------
--- /work/SRC/openSUSE:Factory/qFlipper/qFlipper.changes        2023-05-23 
14:54:41.958538477 +0200
+++ /work/SRC/openSUSE:Factory/.qFlipper.new.9037/qFlipper.changes      
2023-12-20 21:03:41.577602757 +0100
@@ -1,0 +2,10 @@
+Wed Dec 20 12:51:35 UTC 2023 - msucha...@suse.com
+
+- Update to version 1.3.3:
+  * Implement screen orientation (#202)
+  * Update Flipper graphic
+  * Added udev rule for U2F (#106)
+  * Support different targets for resources_tgz
+  * Better error messages
+
+-------------------------------------------------------------------

Old:
----
  qFlipper-1.3.1~rc1+git1.1684488882.0199220.tar.xz

New:
----
  qFlipper-1.3.3+git0.1699609231.bfce851.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qFlipper.spec ++++++
--- /var/tmp/diff_new_pack.ARhQ2B/_old  2023-12-20 21:03:43.981690218 +0100
+++ /var/tmp/diff_new_pack.ARhQ2B/_new  2023-12-20 21:03:43.985690363 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           qFlipper
-Version:        1.3.1~rc1+git1.1684488882.0199220
+Version:        1.3.3+git0.1699609231.bfce851
 Release:        0
 Summary:        Graphical desktop application for updating Flipper Zero 
firmware
 License:        GPL-3.0-or-later

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ARhQ2B/_old  2023-12-20 21:03:44.021691674 +0100
+++ /var/tmp/diff_new_pack.ARhQ2B/_new  2023-12-20 21:03:44.025691819 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/flipperdevices/qFlipper</param>
-              <param 
name="changesrevision">0199220d20954c92e89589105dac866c225eda27</param></service></servicedata>
+              <param 
name="changesrevision">bfce851d4da5a01f24189ba79eac9385b7ce8533</param></service></servicedata>
 (No newline at EOF)
 

++++++ qFlipper-1.3.1~rc1+git1.1684488882.0199220.tar.xz -> 
qFlipper-1.3.3+git0.1699609231.bfce851.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/.github/actions/docker/action.yml
 new/qFlipper-1.3.3+git0.1699609231.bfce851/.github/actions/docker/action.yml
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/.github/actions/docker/action.yml
    2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/.github/actions/docker/action.yml    
    1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-name: 'Run in docker'
-inputs:
-  run:  # id of input
-    description: 'A command to run'
-    required: true
-    default: ''
-runs:
-  using: 'docker'
-  image: '../../../docker/Dockerfile'
-  args:
-    - ${{ inputs.run }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/.github/workflows/ci.yml 
new/qFlipper-1.3.3+git0.1699609231.bfce851/.github/workflows/ci.yml
--- old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/.github/workflows/ci.yml     
2023-05-19 11:34:42.000000000 +0200
+++ new/qFlipper-1.3.3+git0.1699609231.bfce851/.github/workflows/ci.yml 
2023-11-10 10:40:31.000000000 +0100
@@ -6,29 +6,33 @@
   build_linux:
     runs-on: ubuntu-latest
     steps:
-      - name: Cleanup workspace
-        uses: AutoModality/action-clean@v1
+      - name: 'Wipe workspace'
+        run: find ./ -mount -maxdepth 1 -exec rm -rf {} \;
 
       - name: Checkout code
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
         with:
           fetch-depth: 0
           submodules: true
 
-      - uses: satackey/action-docker-layer-caching@v0.0.11
-        continue-on-error: true
-        with:
-          key: docker-cache-${{ hashFiles('docker/**') }}-{hash}
-          restore-keys: docker-cache-${{ hashFiles('docker/**') }}-
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v3
 
-      - name: Build docker image
-        uses: ./.github/actions/docker
+      - name: Build and push
+        uses: docker/build-push-action@v5
+        with:
+          push: false
+          context: docker
+          tags: qflipper-build:latest
+          load: true
+          cache-from: type=gha
+          cache-to: type=gha,mode=max
 
       - name: Build application in docker
-        run: docker build -t flipp ./docker/ && docker run --rm --privileged 
-v $(pwd):/project flipp /project/build_linux.sh
+        run: docker run --rm --privileged -v $(pwd):/project 
qflipper-build:latest /project/build_linux.sh
 
       - name: Publish application
-        uses: actions/upload-artifact@v2
+        uses: actions/upload-artifact@v3
         with:
           name: qFlipper-x86_64.AppImage
           path: |
@@ -48,7 +52,7 @@
       MAC_OS_SIGNING_PASSWORD: ${{ secrets.MAC_OS_SIGNING_PASSWORD }}
     steps:
       - name: Checkout code
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
         with:
           fetch-depth: 0
           submodules: true
@@ -71,7 +75,7 @@
         SIGNING_TOOL: ${{ secrets.WIN_SIGNING_TOOL }}
     steps:
       - name: Checkout code
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
         with:
           fetch-depth: 0
           submodules: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/applicationupdater.cpp
 new/qFlipper-1.3.3+git0.1699609231.bfce851/application/applicationupdater.cpp
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/applicationupdater.cpp
   2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/applicationupdater.cpp   
    2023-11-10 10:40:31.000000000 +0100
@@ -78,7 +78,7 @@
 #if defined(Q_OS_WINDOWS) || defined(Q_OS_MAC)
     const auto filePath = QDir::temp().absoluteFilePath(fileName);
 #elif defined(Q_OS_LINUX)
-    const auto filePath = fileName;
+    const auto filePath = QDir::current().absoluteFilePath(fileName);
 #else
     #error "Unsupported OS"
 #endif
@@ -206,9 +206,7 @@
     return mountDmg->error() == QProcess::UnknownError; //Really? no NoError 
code?
 
 #elif defined(Q_OS_LINUX)
-    const auto info = QFileInfo(path);
-    const auto success = QProcess::startDetached(info.fileName(), {}, 
info.absoluteDir().absolutePath());
-
+    const auto success = QProcess::startDetached(path);
     if(success) exitApplication();
     return success;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/assets/gfx/images/flipper.svg
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/assets/gfx/images/flipper.svg
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/assets/gfx/images/flipper.svg
    2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/assets/gfx/images/flipper.svg
        2023-11-10 10:40:31.000000000 +0100
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 
6.00 Build 0)  -->
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 
6.00 Build 0)  -->
 
 <svg
    version="1.1"
@@ -7,196 +7,110 @@
    x="0px"
    y="0px"
    viewBox="0 0 360 156"
-   style="enable-background:new 0 0 360 156;"
    xml:space="preserve"
+   width="360"
+   height="156"
    xmlns="http://www.w3.org/2000/svg";
    xmlns:svg="http://www.w3.org/2000/svg";><defs
-   id="defs104" />
-<style
+   id="defs24" />&#10;<style
    type="text/css"
-   id="style2">
-       .st0{fill:url(#SVGID_1_);}
-       .st1{fill:#FE8A2C;}
-</style>
-<g
-   id="g99">
-       <linearGradient
+   id="style1">&#10;   .st0{fill:url(#SVGID_1_);}&#10; 
.st1{fill:#FE8A2C;}&#10;</style>&#10;<g
+   id="g24"
+   transform="translate(-2)">&#10;     <linearGradient
    id="SVGID_1_"
    gradientUnits="userSpaceOnUse"
-   x1="179.8875"
+   x1="181.8875"
    y1="156.4734"
-   x2="179.8875"
-   y2="-1.2854">
-               <stop
+   x2="181.8875"
+   y2="-1.2854">&#10;          <stop
    offset="7.885129e-07"
    style="stop-color:#3C1A00"
-   id="stop4" />
-               <stop
+   id="stop1" />&#10;          <stop
    offset="0.5511"
    style="stop-color:#220F00"
-   id="stop6" />
-               <stop
+   id="stop2" />&#10;          <stop
    offset="1"
    style="stop-color:#090400"
-   id="stop8" />
-       </linearGradient>
-       <path
+   id="stop3" />&#10;  </linearGradient>&#10;  <path
    class="st0"
-   
d="M301.3,1.2c0,0-219.9,0-229.7,0s-17,10.3-17,10.3S5.3,75.4,3.2,78.3c-3,4-2.1,14.1,0,17
   
c5.9,8,34.5,47.1,35.8,48.8c1.4,1.7,7.7,11.1,16.5,11.1s278.7,0,283.5,0c8.7,0,19.6-20.2,19.6-25.2s-0.3-58.9-0.3-64.5
   
c0-3.7-2.6-8.4-5.1-11.5c-2.3-2.8-35.3-44-38.2-47.5C312.5,3.6,306.8,1.2,301.3,1.2z"
-   id="path11" />
-       <g
-   id="g15">
-               <path
-   class="st1"
-   
d="M302,3c4.5,0,10,3.3,12,5.7c2.9,3.4,35.3,44,38,47.4c3.1,3.9,4.9,7.5,4.9,9.7v64.5c0,4-10.8,22.7-17.2,22.7
    
H55.1c-4.5,0-9.3-3.4-14.5-10c-0.2-0.2-0.3-0.4-0.4-0.5c-0.7-0.9-10.1-13.7-18.4-25C14.5,107.6,7,97.4,4.3,93.7
    
C3,92,2.1,83.3,4.3,80.4c2.1-2.8,51.1-66.1,51.6-66.7l0.1-0.1l0.1-0.1C56.1,13.4,63.2,3,71.3,3H302
 M302,0c0,0-220.7,0-230.7,0    
c-9.9,0-17.8,11.8-17.8,11.8S4.1,75.7,1.9,78.6c-2.9,4-2.1,14.1,0,17c6,8,34.6,47.1,36,48.8c1.4,1.7,8.5,11.7,17.3,11.7
    
s279.9,0,284.7,0c8.8,0,20.2-20.8,20.2-25.7s0-58.9,0-64.5c0-3.7-3.1-8.4-5.6-11.5c-2.3-2.8-35.2-44-38.1-47.5
    C313.9,3.9,307.6,0,302,0L302,0z"
-   id="path13" />
-       </g>
-       <g
-   id="g45">
-               <g
-   id="g19">
-                       <path
-   class="st1"
-   
d="M116.3,137l-0.8,5H112l2.1-13H138l-0.5,3h-20.4l-0.3,2.1h17.3l-0.5,3H116.3z"
-   id="path17" />
-               </g>
-               <g
-   id="g23">
-                       <path
-   class="st1"
-   d="M143.5,129l-1.6,10H162l-0.5,3H138l2.1-13H143.5z"
-   id="path21" />
-               </g>
-               <g
-   id="g27">
-                       <path
-   class="st1"
-   d="M170,129l-2.3,13H164l2.3-13H170z"
-   id="path25" />
-               </g>
-               <g
-   id="g31">
-                       <path
-   class="st1"
-   
d="M174.7,137l-0.8,5h-3.4l2.1-13h19.9c0.9,0,1.7,0.3,2.3,0.9c0.6,0.6,0.8,1.3,0.7,2.1l-0.3,2
     c-0.1,0.8-0.6,1.5-1.3,2.1c-0.8,0.6-1.6,0.9-2.6,0.9H174.7z 
M175.5,132l-0.3,2.1h16.5l0.3-2.1H175.5z"
-   id="path29" />
-               </g>
-               <g
-   id="g35">
-                       <path
-   class="st1"
-   
d="M200.7,137l-0.8,5h-3.4l2.1-13h19.9c0.9,0,1.7,0.3,2.3,0.9c0.6,0.6,0.8,1.3,0.7,2.1l-0.3,2
     c-0.1,0.8-0.6,1.5-1.3,2.1c-0.8,0.6-1.6,0.9-2.6,0.9H200.7z 
M201.5,132l-0.3,2.1h16.5l0.3-2.1H201.5z"
-   id="path33" />
-               </g>
-               <g
-   id="g39">
-                       <path
-   class="st1"
-   
d="M247.4,139l-0.5,3H223l2.1-13H249l-0.5,3h-20.4l-0.3,2.1h17.9l-0.5,3h-17.9l-0.3,2H247.4z"
-   id="path37" />
-               </g>
-               <g
-   id="g43">
-                       <path
-   class="st1"
-   
d="M253.7,137l-0.8,5h-3.4l2.1-13h19.9c0.9,0,1.7,0.3,2.3,0.9c0.6,0.6,0.8,1.3,0.7,2.1l-0.3,2
     
c-0.1,0.4-0.3,0.8-0.7,1.1c-0.3,0.3-0.7,0.4-1.1,0.4c0.4,0,0.7,0.2,1,0.4c0.3,0.3,0.4,0.6,0.3,1l-0.8,5h-3.4l0.8-5H253.7z
      M270.7,134l0.3-2.1h-16.5l-0.3,2.1H270.7z"
-   id="path41" />
-               </g>
-       </g>
-       <g
-   id="g49">
-               <path
-   class="st1"
-   
d="M221.3,98H92.7C89,98,86,95,86,91.3V25.7c0-3.7,3-6.7,6.7-6.7h128.6c3.7,0,6.7,3,6.7,6.7v65.6
    C228,95,225,98,221.3,98z 
M92.7,20c-3.1,0-5.7,2.6-5.7,5.7v65.6c0,3.1,2.6,5.7,5.7,5.7h128.6c3.1,0,5.7-2.6,5.7-5.7V25.7
    c0-3.1-2.6-5.7-5.7-5.7H92.7z"
-   id="path47" />
-       </g>
-       <g
-   id="g53">
-               <path
-   class="st1"
-   
d="M274.5,94C254.9,94,239,78.1,239,58.5S254.9,23,274.5,23S310,38.9,310,58.5S294.1,94,274.5,94z
 M274.5,24    
c-19,0-34.5,15.5-34.5,34.5S255.5,93,274.5,93S309,77.5,309,58.5S293.5,24,274.5,24z"
-   id="path51" />
-       </g>
-       <g
-   id="g57">
-               <path
-   class="st1"
-   
d="M326.6,94c-6.3,0-11.5-5.2-11.5-11.5S320.2,71,326.6,71s11.5,5.2,11.5,11.5S332.9,94,326.6,94z
 M326.5,72    
c-5.8,0-10.5,4.7-10.5,10.5S320.7,93,326.5,93S337,88.3,337,82.5S332.3,72,326.5,72z"
-   id="path55" />
-       </g>
-       <g
-   id="g61">
-               <path
-   class="st1"
-   
d="M328.8,88h-6.4c-0.3,0-0.5-0.2-0.5-0.5v-2c0-0.3,0.2-0.5,0.5-0.5h5.9c0.6,0,1-0.2,1.3-0.6
    
c0.3-0.4,0.5-0.9,0.5-1.4c0-1-0.5-1.9-1.7-1.9h-4.4v1.5c0,0.2-0.1,0.4-0.3,0.5c-0.2,0.1-0.4,0-0.5-0.1l-2.9-3
    
c-0.2-0.2-0.2-0.5,0-0.7l2.8-3c0.1-0.1,0.4-0.2,0.5-0.1c0.2,0.1,0.3,0.3,0.3,0.5V78h4.9c2.8,0,4.2,2.5,4.2,5c0,1.3-0.4,2.5-1,3.4
    C331.2,87.4,330.1,88,328.8,88z 
M322.9,87h5.9c1,0,1.8-0.4,2.4-1.2c0.5-0.7,0.8-1.7,0.8-2.8c0-1.9-1-4-3.2-4h-5.4  
  
c-0.3,0-0.5-0.2-0.5-0.5v-0.8l-1.7,1.8l1.7,1.8v-0.8c0-0.3,0.2-0.5,0.5-0.5h4.9c1.8,0,2.7,1.5,2.7,2.9c0,0.8-0.2,1.5-0.7,2
    c-0.5,0.6-1.3,1-2.1,1h-5.4V87z"
-   id="path59" />
-       </g>
-       <g
-   id="g65">
-               <path
-   class="st1"
-   
d="M274.5,70c-6.3,0-11.5-5.2-11.5-11.5S268.2,47,274.5,47S286,52.2,286,58.5S280.8,70,274.5,70z
 M274.5,48    
c-5.8,0-10.5,4.7-10.5,10.5S268.7,69,274.5,69S285,64.3,285,58.5S280.3,48,274.5,48z"
-   id="path63" />
-       </g>
-       <g
-   id="g69">
-               <path
-   class="st1"
-   
d="M279.2,40h-9.3c-0.4,0-0.8-0.2-0.9-0.5c-0.2-0.3-0.2-0.7,0-1.1l4.7-7.9c0.4-0.7,1.5-0.7,1.9,0l4.7,7.9
    c0.2,0.3,0.2,0.7,0,1.1C279.9,39.8,279.5,40,279.2,40z 
M274.5,30.9C274.5,30.9,274.4,31,274.5,30.9l-4.7,7.9c0,0,0,0.1,0,0.1    
c0,0,0,0,0.1,0h9.3c0,0,0.1,0,0.1,0c0,0,0-0.1,0-0.1L274.5,30.9C274.6,31,274.5,30.9,274.5,30.9z"
-   id="path67" />
-       </g>
-       <g
-   id="g73">
-               <path
-   class="st1"
-   
d="M274.5,87c-0.4,0-0.8-0.2-1-0.5l-4.7-7.9c-0.2-0.3-0.2-0.7,0-1.1c0.2-0.3,0.6-0.5,0.9-0.5h9.3
    
c0.4,0,0.8,0.2,0.9,0.5c0.2,0.3,0.2,0.7,0,1.1l-4.7,7.9C275.3,86.8,274.9,87,274.5,87z
 M269.9,78C269.8,78,269.8,78,269.9,78    
c-0.1,0.1-0.1,0.1-0.1,0.2l4.7,8.1c0,0.1,0.1,0.1,0.2,0l4.7-8.1c0,0,0-0.1,0-0.1c0,0,0-0.1-0.1-0.1H269.9z"
-   id="path71" />
-       </g>
-       <g
-   id="g77">
-               <path
-   class="st1"
-   
d="M294.1,64.2c-0.2,0-0.4,0-0.5-0.1c-0.3-0.2-0.5-0.6-0.5-0.9v-9.3c0-0.4,0.2-0.8,0.5-0.9
    
c0.3-0.2,0.7-0.2,1.1,0l7.9,4.7c0.3,0.2,0.5,0.6,0.5,1c0,0.4-0.2,0.8-0.5,1l-7.9,4.7C294.4,64.2,294.3,64.2,294.1,64.2z
     
M294.1,53.7C294,53.7,294,53.8,294.1,53.7c-0.1,0-0.1,0.1-0.1,0.1v9.3c0,0,0,0.1,0,0.1c0,0,0.1,0,0.1,0l7.9-4.7c0,0,0,0,0-0.1
    c0,0,0-0.1,0-0.1L294.1,53.7C294.1,53.8,294.1,53.7,294.1,53.7z"
-   id="path75" />
-       </g>
-       <g
-   id="g81">
-               <path
-   class="st1"
-   
d="M254.9,64.2c-0.2,0-0.4,0-0.5-0.1l-7.9-4.7c-0.3-0.2-0.5-0.6-0.5-1c0-0.4,0.2-0.8,0.5-1l7.9-4.7
    
c0.3-0.2,0.7-0.2,1.1,0c0.3,0.2,0.5,0.6,0.5,0.9v9.3c0,0.4-0.2,0.8-0.5,0.9C255.3,64.2,255.1,64.2,254.9,64.2z
 M254.9,53.7    
C254.9,53.7,254.9,53.8,254.9,53.7l-7.9,4.7c0,0,0,0,0,0.1c0,0,0,0.1,0,0.1l7.9,4.7c0,0,0.1,0,0.1,0c0,0,0,0,0-0.1v-9.3
    C255,53.8,255,53.8,254.9,53.7C255,53.8,255,53.7,254.9,53.7z"
-   id="path79" />
-       </g>
-       <g
-   id="g85">
-               <path
-   class="st1"
-   
d="M327.5,98H275c-22.4,0-40-17.1-40-39c0-22,17.9-40,40-40c11.1,0,21.7,4.6,29.3,12.8l33.9,40.8
    c4,4.3,3.9,8.7,3.9,11.3l0,0.6C342,90.7,334.1,98,327.5,98z 
M275,20c-21.5,0-39,17.5-39,39c0,21.3,17.1,38,39,38h52.5    
c6,0,13.5-6.9,13.5-12.6l0-0.6c0-2.5,0.1-6.6-3.6-10.6l-33.9-40.8C296.1,24.5,285.7,20,275,20z"
-   id="path83" />
-       </g>
-       <g
-   id="g89">
-               <path
-   class="st1"
-   
d="M238.5,98c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5c1.9,0,3.5,1.6,3.5,3.5S240.4,98,238.5,98z
 M238.5,92    
c-1.4,0-2.5,1.1-2.5,2.5c0,1.4,1.1,2.5,2.5,2.5s2.5-1.1,2.5-2.5C241,93.1,239.9,92,238.5,92z"
-   id="path87" />
-       </g>
-       <g
-   id="g93">
-               <path
-   class="st1"
-   
d="M339.5,120H70.3c-9.1,0-12.5-3.8-17.7-9.5l-0.6-0.7c-4.9-5.5-11.7-13.5-15.8-18.8c-3.8-4.9-2.3-7.3,0.6-12
    
l0.2-0.3c1.6-2.5,11.1-16,20.3-29.1c9.2-13,18.7-26.5,20.5-29.3C82.5,13.1,88.5,10,98,10h199.6c3.6,0,8.8,1.7,12,5.5l0.8,0.9
    
c20.6,24.6,32.3,38.7,34.9,41.9c4.2,5.3,4.8,7.7,4.8,11.4v39.7C350,114.4,345.7,120,339.5,120z
 M98,11c-9.1,0-14.9,2.9-19.2,9.8    
C77,23.6,67.4,37.1,58.2,50.2C49,63.3,39.5,76.8,37.9,79.3l-0.2,0.3c-3,4.7-4.1,6.5-0.7,10.8c4,5.2,10.8,13.2,15.7,18.7l0.6,0.7
    
c5.1,5.7,8.3,9.2,16.9,9.2h269.2c5.6,0,9.5-5.1,9.5-9.6V69.7c0-3.6-0.7-5.7-4.6-10.8c-2.5-3.2-14.2-17.3-34.8-41.9l-0.8-0.9
    c-2.9-3.5-7.9-5.1-11.2-5.1H98z"
-   id="path91" />
-       </g>
-       <g
-   id="g97">
-               <rect
-   x="89"
-   y="22"
-   class="st1"
-   width="136"
-   height="73"
-   id="rect95"
-   ry="4" />
-       </g>
-</g>
-</svg>
+   d="m 303.3,1.2 c 0,0 -219.9,0 -229.7,0 -9.8,0 -17,10.3 -17,10.3 0,0 
-49.3,63.9 -51.4,66.8 -3,4 -2.1,14.1 0,17 5.9,8 34.5,47.1 35.8,48.8 1.4,1.7 
7.7,11.1 16.5,11.1 8.8,0 278.7,0 283.5,0 8.7,0 19.6,-20.2 19.6,-25.2 0,-5 
-0.3,-58.9 -0.3,-64.5 0,-3.7 -2.6,-8.4 -5.1,-11.5 C 352.9,51.2 319.9,10 317,6.5 
314.5,3.6 308.8,1.2 303.3,1.2 Z"
+   id="path3"
+   style="fill:url(#SVGID_1_)" />&#10; <g
+   id="g4">&#10;               <path
+   class="st1"
+   d="m 304,3 c 4.5,0 10,3.3 12,5.7 2.9,3.4 35.3,44 38,47.4 3.1,3.9 4.9,7.5 
4.9,9.7 v 64.5 c 0,4 -10.8,22.7 -17.2,22.7 H 57.1 c -4.5,0 -9.3,-3.4 -14.5,-10 
-0.2,-0.2 -0.3,-0.4 -0.4,-0.5 -0.7,-0.9 -10.1,-13.7 -18.4,-25 C 16.5,107.6 
9,97.4 6.3,93.7 5,92 4.1,83.3 6.3,80.4 8.4,77.6 57.4,14.3 57.9,13.7 L 58,13.6 
58.1,13.5 C 58.1,13.4 65.2,3 73.3,3 H 304 m 0,-3 C 304,0 83.3,0 73.3,0 63.4,0 
55.5,11.8 55.5,11.8 c 0,0 -49.4,63.9 -51.6,66.8 -2.9,4 -2.1,14.1 0,17 6,8 
34.6,47.1 36,48.8 1.4,1.7 8.5,11.7 17.3,11.7 8.8,0 279.9,0 284.7,0 8.8,0 
20.2,-20.8 20.2,-25.7 0,-4.9 0,-58.9 0,-64.5 0,-3.7 -3.1,-8.4 -5.6,-11.5 C 
354.2,51.6 321.3,10.4 318.4,6.9 315.9,3.9 309.6,0 304,0 Z"
+   id="path4" />&#10;  </g>&#10;       <g
+   id="g10">&#10;              <polygon
+   class="st1"
+   points="118,137 117,137 117,139 116,139 116,142 115,142 115,144 114,144 
114,146 117,146 117,144 118,144 118,142 119,142 119,139 120,139 120,137 134,137 
134,136 135,136 135,135 136,135 136,134 122.9,134 123,133 124,133 124,131 
142,131 142,130 143,130 143,129 144,129 144,128 121,128 121,131 120,131 120,133 
119,133 119,135 118,135 "
+   id="polygon4" />&#10;               <path
+   class="st1"
+   d="m 148.1,128.1 h 2.9 v 3.9 h -1 v 2 h -1 v 2 h -1 v 2 h -1 v 2 h 14 v 0.9 
h -1 v 1 h -1 v 1 h -17 v -2 h 1 v -2 h 1.1 v -2 h 0.9 v -2 h 1 v -2 h 1 v -2 h 
1 c 0,0.1 0,-2.8 0.1,-2.8 z"
+   id="path5" />&#10;          <path
+   class="st1"
+   d="m 171,128 v 3 h -1 v 2 h -0.9 v 2 h -1 v 2 h -1 v 2 h -1 v 2 h -1 v 1.9 
h 2.9 v -2 h 1.1 v -2 h 1 v -2 h 1 v -2 h 1 v -2 h 1 v -1 h 1 V 128 c -0.1,0 
-3.1,0 -3.1,0 z"
+   id="path6" />&#10;          <path
+   class="st1"
+   d="m 181,128 v 3 h -1 v 2 h -0.9 v 2 h -1 v 2 h -1 v 2 h -1 v 2 h -1 v 1.9 
h 2.9 v -2 h 1.1 v -2 h 1 v -2 h 15 V 136 h 1 v -1 h 1 v -1 h 1 v -1 h 1 v -1 h 
1 v -1 h 1 v -1 h 1 v -2 c -0.1,0 -21.1,0 -21.1,0 z m 15,4 v 1 h -0.9 v 1 H 182 
v -1 h 1 v -1 h 1 v -1 h 13 v 1.1 h -1 z"
+   id="path7" />&#10;          <path
+   class="st1"
+   d="m 205,128 v 3 h -1 v 2 h -0.9 v 2 h -1 v 2 h -1 v 2 h -1 v 2 h -1 v 1.9 
h 2.9 v -2 h 1.1 v -2 h 1 v -2 h 15 V 136 h 1 v -1 h 1 v -1 h 1 v -1 h 1 v -1 h 
1 v -1 h 1 v -1 h 1 v -2 c -0.1,0 -21.1,0 -21.1,0 z m 15,4 v 1 h -0.9 v 1 H 206 
v -1 h 1 v -1 h 1 v -1 h 13 v 1.1 h -1 z"
+   id="path8" />&#10;          <path
+   class="st1"
+   d="M 250.9,128.1 H 231 v 3 h -1 v 2 h -1 v 2 h -1 v 2 h -1 v 2 h -1 v 2 h 
-1 v 1.9 h 18.9 v -1 h 1 v -1 h 1.1 v -1 h -17 v -1.1 h 1 v -2 h 14 v -1 h 1 V 
135 h 1 v -1 h -14 v -1 h 1 v -2 h 17 v -1 h 1 c -0.1,0 -0.1,-2 -0.1,-1.9 z"
+   id="path9" />&#10;          <path
+   class="st1"
+   d="m 257,128 v 3 h -1 v 2 h -0.9 v 2 h -1 v 2 h -1 v 2 h -1 v 2 h -1 v 1.9 
h 2.9 v -2 h 1.1 v -2 h 1 v -2 h 11.1 v 1 h 0.9 v 1 h 1 v 1 h 1 v 1 h 1 v 1 h 1 
v 1 h 1 l 0.1,1 h 1 v 1.1 h 1 v 1 h 3 v -0.9 h -1 v -1 h -1 v -1 h -1 v -1 h -1 
v -1 h -1 v -1 h -1 v -0.9 h -1 v -1 h -1 v -1 h 1.1 v -1 h 1 v -1 h 1 v -1 h 1 
v -1 h 1 v -1 h 1 v -1 h 1 v -1 h 1 V 128 c -0.3,0 -21.3,0 -21.3,0 z m 15,4 v 1 
h -0.9 v 1 H 258 v -1 h 1 v -1 h 1 v -1 h 13 v 1.1 h -1 z"
+   id="path10" />&#10; </g>&#10;       <g
+   id="g11">&#10;              <path
+   class="st1"
+   d="M 223.3,98 H 94.7 C 91,98 88,95 88,91.3 V 25.7 C 88,22 91,19 94.7,19 h 
128.6 c 3.7,0 6.7,3 6.7,6.7 v 65.6 c 0,3.7 -3,6.7 -6.7,6.7 z M 94.7,20 C 
91.6,20 89,22.6 89,25.7 v 65.6 c 0,3.1 2.6,5.7 5.7,5.7 h 128.6 c 3.1,0 5.7,-2.6 
5.7,-5.7 V 25.7 c 0,-3.1 -2.6,-5.7 -5.7,-5.7 z"
+   id="path11" />&#10; </g>&#10;       <g
+   id="g12">&#10;              <path
+   class="st1"
+   d="M 276.5,94 C 256.9,94 241,78.1 241,58.5 241,38.9 256.9,23 276.5,23 
296.1,23 312,38.9 312,58.5 312,78.1 296.1,94 276.5,94 Z m 0,-70.1 c -19,0 
-34.6,15.6 -34.6,34.6 0,19 15.6,34.6 34.6,34.6 19,0 34.6,-15.6 34.6,-34.6 0,-19 
-15.6,-34.6 -34.6,-34.6 z"
+   id="path12" />&#10; </g>&#10;       <g
+   id="g13">&#10;              <path
+   class="st1"
+   d="m 328.6,94 c -6.3,0 -11.5,-5.2 -11.5,-11.5 0,-6.3 5.1,-11.5 11.5,-11.5 
6.4,0 11.4,5.2 11.4,11.5 0,6.3 -5.1,11.5 -11.4,11.5 z m -0.1,-22.1 c -5.8,0 
-10.6,4.8 -10.6,10.6 0,5.8 4.8,10.6 10.6,10.6 5.8,0 10.6,-4.8 10.6,-10.6 0,-5.8 
-4.8,-10.6 -10.6,-10.6 z"
+   id="path13" />&#10; </g>&#10;       <g
+   id="g14">&#10;              <path
+   class="st1"
+   d="m 330.8,88 h -6.4 c -0.3,0 -0.3,-0.2 -0.3,-0.5 v -2 c 0,-0.3 0,-0.4 
0.3,-0.4 h 5.9 c 0.6,0 1.1,-0.3 1.4,-0.7 0.3,-0.4 0.5,-0.9 0.5,-1.4 0,-1 
-0.5,-2 -1.6,-2 H 326 l -0.1,1.6 c 0,0.2 -0.1,0.4 -0.3,0.5 -0.2,0.1 -0.4,0 
-0.5,-0.1 l -2.9,-3 c -0.2,-0.2 -0.2,-0.5 0,-0.7 l 2.8,-3 c 0.1,-0.1 0.4,-0.2 
0.5,-0.1 0.2,0.1 0.3,0.3 0.3,0.5 V 78 h 4.9 c 2.8,0 4.2,2.5 4.2,5 0,1.3 
-0.4,2.5 -1,3.4 -0.7,1 -1.8,1.6 -3.1,1.6 z m -5.9,-1 h 5.9 c 1,0 1.8,-0.4 
2.4,-1.2 0.5,-0.7 0.9,-1.7 0.9,-2.8 0,-1.9 -0.8,-4 -3.2,-4 h -5.4 c -0.3,0 
-0.6,-0.2 -0.6,-0.5 v -0.8 l -1.7,1.8 1.7,1.8 v -0.8 c 0,-0.3 0.2,-0.5 0.5,-0.5 
h 4.9 c 1.5,0 2.6,1.5 2.6,3 0,0.8 -0.1,1.4 -0.5,1.9 -0.5,0.6 -1.3,1 -2.1,1 h 
-5.4 z"
+   id="path14" />&#10; </g>&#10;       <g
+   id="g15">&#10;              <path
+   class="st1"
+   d="M 276.5,70 C 270.2,70 265,64.8 265,58.5 265,52.2 270.2,47 276.5,47 c 
6.3,0 11.5,5.2 11.5,11.5 0,6.3 -5.2,11.5 -11.5,11.5 z m 0,-22 c -5.8,0 
-10.5,4.8 -10.5,10.6 0,5.8 4.8,10.5 10.5,10.5 5.7,0 10.5,-4.8 10.5,-10.6 C 
287,52.7 282.3,48 276.5,48 Z"
+   id="path15" />&#10; </g>&#10;       <g
+   id="g16">&#10;              <path
+   class="st1"
+   d="m 281.2,40 h -9.3 c -0.4,0 -0.8,-0.2 -0.9,-0.5 -0.2,-0.3 -0.2,-0.7 
0,-1.1 l 4.7,-7.9 c 0.4,-0.7 1.5,-0.7 1.9,0 l 4.7,7.9 c 0.2,0.3 0.2,0.7 0,1.1 
-0.4,0.3 -0.8,0.5 -1.1,0.5 z m -4.7,-9.1 c 0,0 -0.1,0.1 0,0 l -4.7,7.9 c 0,0 
0,0.1 0,0.1 0,0 0,0 0.1,0 h 9.3 c 0,0 0.1,0 0.1,0 0,0 0,-0.1 0,-0.1 l -4.8,-7.9 
c 0.1,0.1 0,0 0,0 z"
+   id="path16" />&#10; </g>&#10;       <g
+   id="g17">&#10;              <path
+   class="st1"
+   d="m 276.5,87 c -0.4,0 -0.8,-0.2 -1,-0.5 l -4.7,-7.9 c -0.2,-0.3 -0.2,-0.7 
0,-1.1 0.2,-0.3 0.6,-0.5 0.9,-0.5 h 9.3 c 0.4,0 0.8,0.2 0.9,0.5 0.2,0.3 0.2,0.7 
0,1.1 l -4.7,7.9 c 0.1,0.3 -0.3,0.5 -0.7,0.5 z m -4.6,-9 c -0.1,0 -0.1,0 0,0 
-0.1,0.1 -0.1,0.1 -0.1,0.2 l 4.7,8.1 c 0,0.1 0.1,0.1 0.2,0 l 4.7,-8.1 c 0,0 
0,-0.1 0,-0.1 0,0 0,-0.1 -0.1,-0.1 z"
+   id="path17" />&#10; </g>&#10;       <g
+   id="g18">&#10;              <path
+   class="st1"
+   d="m 296.1,64.2 c -0.2,0 -0.4,0 -0.5,-0.1 -0.3,-0.2 -0.5,-0.6 -0.5,-0.9 v 
-9.3 c 0,-0.4 0.2,-0.8 0.5,-0.9 0.3,-0.2 0.7,-0.2 1.1,0 l 7.9,4.7 c 0.3,0.2 
0.5,0.6 0.5,1 0,0.4 -0.2,0.8 -0.5,1 l -7.9,4.7 c -0.3,-0.2 -0.4,-0.2 -0.6,-0.2 
z m 0,-10.5 c -0.1,0 -0.1,0.1 0,0 -0.1,0 -0.1,0.1 -0.1,0.1 v 9.3 c 0,0 0,0.1 
0,0.1 0,0 0.1,0 0.1,0 l 7.9,-4.7 c 0,0 0,0 0,-0.1 0,0 0,-0.1 0,-0.1 l -7.9,-4.6 
c 0,0.1 0,0 0,0 z"
+   id="path18" />&#10; </g>&#10;       <g
+   id="g19">&#10;              <path
+   class="st1"
+   d="m 256.9,64.2 c -0.2,0 -0.4,0 -0.5,-0.1 l -7.9,-4.7 c -0.3,-0.2 -0.5,-0.6 
-0.5,-1 0,-0.4 0.2,-0.8 0.5,-1 l 7.9,-4.7 c 0.3,-0.2 0.7,-0.2 1.1,0 0.3,0.2 
0.5,0.6 0.5,0.9 v 9.3 c 0,0.4 -0.2,0.8 -0.5,0.9 -0.2,0.4 -0.4,0.4 -0.6,0.4 z m 
0,-10.5 c 0,0 0,0.1 0,0 l -7.9,4.7 c 0,0 0,0 0,0.1 0,0 0,0.1 0,0.1 l 7.9,4.7 c 
0,0 0.1,0 0.1,0 0,0 0,0 0,-0.1 v -9.3 c 0,-0.1 0,-0.1 -0.1,-0.2 0.1,0.1 0.1,0 
0,0 z"
+   id="path19" />&#10; </g>&#10;       <g
+   id="g20">&#10;              <path
+   class="st1"
+   d="M 329.5,98 H 277 c -22.4,0 -40,-17.1 -40,-39 0,-22 17.9,-40 40,-40 
11.1,0 21.7,4.6 29.3,12.8 l 33.9,40.8 c 4,4.3 3.9,8.7 3.9,11.3 v 0.6 C 344,90.7 
336.1,98 329.5,98 Z M 277,19.9 c -21.5,0 -39.1,17.6 -39.1,39.1 0,21.3 17.2,38 
39,38 h 52.5 c 6,0 13.6,-7 13.6,-12.6 v -0.6 c 0,-2.5 0,-6.5 -3.7,-10.6 L 
305.4,32.4 C 298.1,24.5 287.8,19.9 277,19.9 Z"
+   id="path20" />&#10; </g>&#10;       <g
+   id="g21">&#10;              <path
+   class="st1"
+   d="m 240.5,98 c -1.9,0 -3.5,-1.6 -3.5,-3.5 0,-1.9 1.6,-3.5 3.5,-3.5 1.9,0 
3.5,1.6 3.5,3.5 0,1.9 -1.6,3.5 -3.5,3.5 z m 0,-6 c -1.4,0 -2.5,1.1 -2.5,2.5 
0,1.4 1.1,2.5 2.5,2.5 1.4,0 2.5,-1.1 2.5,-2.5 0,-1.4 -1.1,-2.5 -2.5,-2.5 z"
+   id="path21" />&#10; </g>&#10;       <g
+   id="g22">&#10;              <path
+   class="st1"
+   d="M 341.5,120 H 72.3 c -9.1,0 -12.5,-3.8 -17.7,-9.5 L 54,109.8 C 
49.1,104.3 42.3,96.3 38.2,91 34.4,86.1 35.9,83.7 38.8,79 L 39,78.7 C 40.6,76.2 
50.1,62.7 59.3,49.6 68.5,36.6 78,23.1 79.8,20.3 84.5,13.1 90.5,10 100,10 h 
199.6 c 3.6,0 8.8,1.7 12,5.5 l 0.8,0.9 c 20.6,24.6 32.3,38.7 34.9,41.9 4.2,5.3 
4.8,7.7 4.8,11.4 v 39.7 c -0.1,5 -4.4,10.6 -10.6,10.6 z M 100,11 C 90.9,11 
85.1,13.9 80.8,20.8 79,23.6 69.4,37.1 60.2,50.2 51,63.3 41.5,76.8 39.9,79.3 l 
-0.2,0.3 c -3,4.7 -4.1,6.5 -0.7,10.8 4,5.2 10.8,13.2 15.7,18.7 l 0.6,0.7 c 
5.1,5.7 8.3,9.3 16.9,9.3 h 269.2 c 5.6,0 9.5,-5.1 9.5,-9.7 V 69.7 c 0,-3.6 
-0.7,-5.7 -4.6,-10.8 C 343.8,55.7 332.1,41.6 311.5,17 l -0.8,-0.9 C 307.8,12.6 
302.8,11 299.5,11 Z"
+   id="path22" />&#10; </g>&#10;       <g
+   id="g23">&#10;              <path
+   class="st1"
+   d="M 222.7,95 H 95.3 C 92.9,95 91,93.1 91,90.7 V 26.3 C 91,23.9 92.9,22 
95.3,22 h 127.4 c 2.4,0 4.3,1.9 4.3,4.3 v 64.4 c 0,2.4 -1.9,4.3 -4.3,4.3 z"
+   id="path23" />&#10; </g>&#10;</g>&#10;</svg>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/components/FileManagerDelegate.qml
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/components/FileManagerDelegate.qml
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/components/FileManagerDelegate.qml
       2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/components/FileManagerDelegate.qml
   2023-11-10 10:40:31.000000000 +0100
@@ -305,6 +305,8 @@
     }
 
     function commitEdit() {
+        if(!editBox.visible) return;
+
         const oldName = delegate.fileName;
         const newName = nameEdit.text;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/components/FinishOverlay.qml
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/components/FinishOverlay.qml
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/components/FinishOverlay.qml
     2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/components/FinishOverlay.qml
 2023-11-10 10:40:31.000000000 +0100
@@ -125,11 +125,13 @@
                 case BackendError.InternetError:
                     return ErrorStrings.errorInternet
                 case BackendError.InvalidDevice:
-                    return ErrorStrings.errorInvalidDevice
+                    return Qt.platform.os === "linux" ? 
ErrorStrings.errorInvalidDeviceLinux :
+                                                        
ErrorStrings.errorInvalidDevice
                 case BackendError.DiskError:
                     return ErrorStrings.errorDisk
                 case BackendError.SerialAccessError:
-                    return Qt.platform.os === "linux" ? 
ErrorStrings.errorSerialLinux : ErrorStrings.errorSerial
+                    return Qt.platform.os === "linux" ? 
ErrorStrings.errorSerialLinux :
+                                                        
ErrorStrings.errorSerial
                 case BackendError.RecoveryAccessError:
                     return Qt.platform.os === "linux" ? 
ErrorStrings.errorRecoveryLinux :
                            Qt.platform.os === "windows" ? 
ErrorStrings.errorRecoveryWindows :
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/components/TextBox.qml
 new/qFlipper-1.3.3+git0.1699609231.bfce851/application/components/TextBox.qml
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/components/TextBox.qml
   2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/components/TextBox.qml   
    2023-11-10 10:40:31.000000000 +0100
@@ -17,6 +17,12 @@
     color: "black"
     border.color: Theme.color.lightorange2
 
+    MouseArea {
+        id: mouseArea
+        anchors.fill: content
+        cursorShape: content.hoveredLink ? Qt.PointingHandCursor : 
Qt.ArrowCursor
+    }
+
     Text {
         id: content
 
@@ -36,6 +42,8 @@
         wrapMode: Text.Wrap
         textFormat: Text.RichText
 
-        onLinkActivated: Qt.openUrlExternally(link)
+        onLinkActivated: function(link) {
+            Qt.openUrlExternally(link)
+        }
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/imports/Misc/ErrorStrings.qml
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/imports/Misc/ErrorStrings.qml
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/imports/Misc/ErrorStrings.qml
    2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/imports/Misc/ErrorStrings.qml
        2023-11-10 10:40:31.000000000 +0100
@@ -14,7 +14,17 @@
 <p>2. Reconnect your Flipper.</p>
 <p>3. If the problem persists, reboot Flipper into RECOVERY MODE and click 
REPAIR to perform a clean installation.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
+
+    readonly property string errorInvalidDeviceLinux:
+"<p>Device cannot be recognized.</p>
+<p>=========== HOW TO FIX ============</p>
+<p>1. Disconnect all other similar devices from this computer.</p>
+<p>2. Grant user permissions to access Serial devices.</p>
+<p>Run \"./qFlipper-x86_64-%1.AppImage rules install\" to do so 
automatically.</p>
+<p>3. If the problem persists, reboot Flipper into RECOVERY MODE and click 
REPAIR to perform a clean installation.</p>
+<p>-----------------------------------</p>
+<center><a href='https://docs.flipper.net/'>READ 
MORE</a></center>".arg(App.version)
 
     readonly property string errorSerial:
 "<p>Cannot connect to Flipper. Device is busy.</p>
@@ -22,7 +32,7 @@
 <p>1. Ensure that Flipper is not connected via Bluetooth or Terminal 
session.</p>
 <p>2. Reconnect your Flipper.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorSerialLinux:
 "<p>Cannot connect to Flipper. Device is busy.</p>
@@ -32,7 +42,7 @@
 <p>Run \"./qFlipper-x86_64-%1.AppImage rules install\" to do so 
automatically.</p>
 <p>3. Reconnect your Flipper.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ 
MORE</a></center>".arg(App.version)
+<center><a href='https://docs.flipper.net/'>READ 
MORE</a></center>".arg(App.version)
 
     readonly property string errorRecovery:
 "<p>Cannot connect to Flipper in Update & Recovery mode. Device not found.</p>
@@ -41,7 +51,7 @@
 <p>2. Reconnect your Flipper.</p>
 <p>3. Reboot Flipper to Flipper OS and try again.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorRecoveryWindows:
 "<p>Cannot connect to Flipper in Update & Recovery mode. Device not found.</p>
@@ -51,7 +61,7 @@
 <p>3. Reinstall qFlipper to update DFU device driver.</p>
 <p>4. Reboot Flipper to Flipper OS and try again.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorRecoveryLinux:
 "<p>Cannot connect to Flipper in Update & Recovery mode. Device not found.</p>
@@ -62,7 +72,7 @@
 <p>Run \"./qFlipper-x86_64-%1.AppImage rules install\" to do so 
automatically.</p>
 <p>4. Reboot Flipper to Flipper OS and try again.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ 
MORE</a></center>".arg(App.version)
+<center><a href='https://docs.flipper.net/'>READ 
MORE</a></center>".arg(App.version)
 
     readonly property string errorInternet:
 "<p>Cannot connect to update server.</p>
@@ -71,7 +81,7 @@
 <p>2. Ensure that the update server is not down.</p>
 <p>3. Try updating again.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorDisk:
 "<p>Can’t save or read files to/from the local filesystem.</p>
@@ -80,7 +90,7 @@
 <p>2. Check that qFlipper has permissions to write on disk.</p>
 <p>3. When applicable, make sure to point qFlipper to the right 
files/directores.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorBackup:
 "<p>Can’t get data from Flipper. This may be caused by an internal error.</p>
@@ -89,7 +99,7 @@
 <p>2. Reboot your Flipper and reconnect via USB.</p>
 <p>3. Run the operation again.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorData:
 "<p>Necessary data seems to be damaged.</p>
@@ -98,7 +108,7 @@
 <p>2. Reboot your Flipper and reconnect via USB.</p>
 <p>3. Run the operation again.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorOperation:
 "<p>Current operation was interrupted. Connection to device is lost.</p>
@@ -107,7 +117,7 @@
 <p>2. Ensure that Flipper is not locked with PIN code.</p>
 <p>3. Connect your Flipper in Update & Recovery mode and start repair.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorUpdater:
 "<p>Firmware update could not be started.</p>
@@ -117,7 +127,7 @@
 <p>3. Try again.</p>
 <p>4. If the error persists, file a bug report.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 
     readonly property string errorUnknown:
 "<p>An unknown error has occurred.</p>
@@ -127,5 +137,5 @@
 <p>3. Try again.</p>
 <p>4. If the error persists, file a bug report.</p>
 <p>-----------------------------------</p>
-<center><a href='https://docs.flipperzero.one/'>READ MORE</a></center>"
+<center><a href='https://docs.flipper.net/'>READ MORE</a></center>"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/screencanvas.cpp 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/screencanvas.cpp
--- old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/screencanvas.cpp 
2023-05-19 11:34:42.000000000 +0200
+++ new/qFlipper-1.3.3+git0.1699609231.bfce851/application/screencanvas.cpp     
2023-11-10 10:40:31.000000000 +0100
@@ -11,7 +11,8 @@
     m_foreground(QColor(0x00, 0x00, 0x00)),
     m_background(QColor(0xFF, 0xFF, 0xFF)),
     m_canvas(QImage(1, 1, QImage::Format_RGB32)),
-    m_zoomFactor(1.0)
+    m_zoomFactor(1.0),
+    m_orientation(Qt::LandscapeOrientation)
 {
     connect(this, &ScreenCanvas::zoomFactorChanged, this, 
&ScreenCanvas::updateImplicitSize);
     connect(this, &ScreenCanvas::canvasSizeChanged, this, 
&ScreenCanvas::updateImplicitSize);
@@ -30,6 +31,7 @@
     }
 
     setCanvasSize(frame.size);
+    setCanvasOrientation(frame.orientation);
 
     for (auto x = 0; x < m_canvas.width(); x++) {
         for (auto y = 0; y < m_canvas.height(); y++) {
@@ -37,9 +39,7 @@
             const auto z = y % 8;
             const auto color = ((frame.pixelData.at(i) & (1 << z))) ? 
m_foreground : m_background;
 
-            m_canvas.setPixelColor(frame.isFlipped ? m_canvas.width() - x - 1 
: x,
-                                   frame.isFlipped ? m_canvas.height() - y - 1 
: y,
-                                   color);
+            m_canvas.setPixelColor(x, y, color);
         }
     }
 
@@ -48,27 +48,8 @@
 
 void ScreenCanvas::paint(QPainter *painter)
 {
-    const auto bw = boundingRect().width();
-    const auto bh = boundingRect().height();
 
-    const auto aspectRatio = (double)m_canvas.width() / m_canvas.height();
-
-    auto w = bw;
-    auto h = floor(w / aspectRatio);
-
-    if(h > bh) {
-        h = bh;
-        w = bh * aspectRatio;
-    }
-
-    w -= ((int)w % m_canvas.width());
-    h -= ((int)h % m_canvas.height());
-
-    const auto dw = (bw - w) / 2;
-    const auto dh = (bh - h) / 2;
-
-    const QRectF canvasRect(dw, dh, w, h);
-    painter->drawImage(canvasRect, m_canvas);
+    painter->drawImage(canvasRect(), m_canvas.transformed(canvasTransform()));
 }
 
 qreal ScreenCanvas::zoomFactor() const
@@ -144,11 +125,83 @@
     emit canvasSizeChanged();
 }
 
+void ScreenCanvas::setCanvasOrientation(Qt::ScreenOrientation orientation)
+{
+    m_orientation = orientation;
+}
+
+QTransform ScreenCanvas::canvasTransform() const
+{
+    switch (m_orientation) {
+    case Qt::InvertedLandscapeOrientation:
+        return QTransform().rotate(180);
+    case Qt::PortraitOrientation:
+        return QTransform().rotate(isLandscapeOnly() ? 0 : 90);
+    case Qt::InvertedPortraitOrientation:
+        return QTransform().rotate(isLandscapeOnly() ? 180 : -90);
+    case Qt::LandscapeOrientation:
+    default:
+        return QTransform();
+    }
+}
+
+QRectF ScreenCanvas::canvasRect() const
+{
+    const auto totalWidth = boundingRect().width();
+    const auto totalHeight = boundingRect().height();
+
+    const auto isRegular = isLandscapeOrientation() || isLandscapeOnly();
+
+    const auto canvasWidth = isRegular ? m_canvas.width() : m_canvas.height();
+    const auto canvasHeight = isRegular ? m_canvas.height() : m_canvas.width();
+
+    const auto aspectRatio = static_cast<qreal>(canvasWidth) / canvasHeight;
+
+    auto drawWidth = totalWidth;
+    auto drawHeight = floor(drawWidth / aspectRatio);
+
+    if(drawHeight > totalHeight) {
+        drawHeight = totalHeight;
+        drawWidth = totalHeight * aspectRatio;
+    }
+
+    if(drawWidth > canvasWidth) {
+        drawWidth -= (static_cast<int>(drawWidth) % canvasWidth);
+    }
+
+    if(drawHeight > canvasHeight) {
+        drawHeight -= (static_cast<int>(drawHeight) % canvasHeight);
+    }
+
+    const auto offsetX = (totalWidth - drawWidth) / 2;
+    const auto offsetY = (totalHeight - drawHeight) / 2;
+
+    return QRectF(offsetX, offsetY, drawWidth, drawHeight);
+}
+
+QSize ScreenCanvas::canvasSize() const
+{
+    return QSize(isLandscapeOrientation() ? m_canvas.width() : 
m_canvas.height(),
+                 isLandscapeOrientation() ? m_canvas.height() : 
m_canvas.width());
+}
+
+bool ScreenCanvas::isLandscapeOrientation() const
+{
+    return m_orientation == Qt::LandscapeOrientation ||
+           m_orientation == Qt::InvertedLandscapeOrientation;
+}
+
+bool ScreenCanvas::isLandscapeOnly() const
+{
+    return (boundingRect().width() < canvasSize().width()) ||
+           (boundingRect().height() < canvasSize().height());
+}
+
 const QImage ScreenCanvas::canvas(int scale) const
 {
     if(scale == 0) {
-        return m_canvas.scaled(m_canvas.width() * m_zoomFactor, 
m_canvas.height() * m_zoomFactor);
+        return m_canvas.scaled(m_canvas.width() * m_zoomFactor, 
m_canvas.height() * m_zoomFactor).transformed(canvasTransform());
     } else {
-        return m_canvas.scaled(m_canvas.width() * scale, m_canvas.height() * 
scale);
+        return m_canvas.scaled(m_canvas.width() * scale, m_canvas.height() * 
scale).transformed(canvasTransform());
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/screencanvas.h 
new/qFlipper-1.3.3+git0.1699609231.bfce851/application/screencanvas.h
--- old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/application/screencanvas.h   
2023-05-19 11:34:42.000000000 +0200
+++ new/qFlipper-1.3.3+git0.1699609231.bfce851/application/screencanvas.h       
2023-11-10 10:40:31.000000000 +0100
@@ -49,12 +49,21 @@
 
 private:
     void setCanvasSize(const QSize &size);
+    void setCanvasOrientation(Qt::ScreenOrientation orientation);
 
-const QImage canvas(int scale = 0) const;
+    QTransform canvasTransform() const;
+    QRectF canvasRect() const;
+    QSize canvasSize() const;
+
+    bool isLandscapeOrientation() const;
+    bool isLandscapeOnly() const;
+
+    const QImage canvas(int scale = 0) const;
 
     QColor m_foreground;
     QColor m_background;
     QImage m_canvas;
 
     qreal m_zoomFactor;
+    Qt::ScreenOrientation m_orientation;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperupdates.cpp 
new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperupdates.cpp
--- old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperupdates.cpp   
2023-05-19 11:34:42.000000000 +0200
+++ new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperupdates.cpp       
2023-11-10 10:40:31.000000000 +0100
@@ -6,21 +6,24 @@
 #include <QJsonArray>
 #include <QJsonObject>
 
-#include "debug.h"
-
 using namespace Flipper::Updates;
 
-FileInfo::FileInfo(const QJsonValue &val)
+FileInfo::FileInfo():
+    m_isValid(false)
+{}
+
+FileInfo::FileInfo(const QJsonValue &val):
+    FileInfo()
 {
     if(!val.isObject()) {
         throw std::runtime_error("Expected FileInfo to be an object");
     }
 
     const auto &json = val.toObject();
-    const auto canConstruct = json.contains("target") && json.contains("type") 
&&
+    m_isValid = json.contains("target") && json.contains("type") &&
                               json.contains("url") && json.contains("sha256");
 
-    if(!canConstruct) {
+    if(!m_isValid) {
         throw std::runtime_error("Malformed FileInfo");
     }
 
@@ -50,6 +53,11 @@
     return m_sha256;
 }
 
+bool FileInfo::isValid() const
+{
+    return m_isValid;
+}
+
 VersionInfo::VersionInfo(const QJsonValue &val)
 {
     if(!val.isObject()) {
@@ -103,8 +111,7 @@
             return (arg.type() == type) && (target == arg.target());
         });
 
-    check_return_val(it != m_files.cend(), "FileInfo not found", FileInfo());
-    return *it;
+    return (it != m_files.cend()) ? *it : FileInfo();
 }
 
 qint64 VersionInfo::compare(const VersionInfo &other) const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperupdates.h 
new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperupdates.h
--- old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperupdates.h     
2023-05-19 11:34:42.000000000 +0200
+++ new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperupdates.h 
2023-11-10 10:40:31.000000000 +0100
@@ -15,7 +15,7 @@
     Q_GADGET
 
 public:
-    FileInfo() = default;
+    FileInfo();
     FileInfo(const QJsonValue &val);
 
     const QString &target() const;
@@ -23,11 +23,14 @@
     const QString &url() const;
     const QByteArray &sha256() const;
 
+    bool isValid() const;
+
 private:
     QString m_target;
     QString m_type;
     QString m_url;
     QByteArray m_sha256;
+    bool m_isValid;
 };
 
 class VersionInfo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperzero/helper/firmwarehelper.cpp
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperzero/helper/firmwarehelper.cpp
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperzero/helper/firmwarehelper.cpp
        2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperzero/helper/firmwarehelper.cpp
    2023-11-10 10:40:31.000000000 +0100
@@ -160,12 +160,24 @@
 void FirmwareHelper::fetchAssets()
 {
     m_deviceState->setStatusString(QStringLiteral("Fetching databases..."));
-    const auto &fileInfo = 
m_versionInfo.fileInfo(QStringLiteral("resources_tgz"), QStringLiteral("any"));
+
+    const auto type = QStringLiteral("resources_tgz");
+    auto fileInfo = m_versionInfo.fileInfo(type, 
m_deviceState->deviceInfo().hardware.target);
+
+    if(!fileInfo.isValid()) {
+        fileInfo = m_versionInfo.fileInfo(type, QStringLiteral("any"));
+    }
+
     fetchFile(FileIndex::AssetsTgz, fileInfo);
 }
 
 void FirmwareHelper::fetchFile(FileIndex index, const Updates::FileInfo 
&fileInfo)
 {
+    if(!fileInfo.isValid()) {
+        finishWithError(BackendError::DataError, QStringLiteral("File info 
invalid (missing target?)"));
+        return;
+    }
+
     const auto fileName = QUrl(fileInfo.url()).fileName();
 
     auto *file = globalTempDirs->createFile(fileName, this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperzero/recovery.cpp 
new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperzero/recovery.cpp
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperzero/recovery.cpp 
    2023-05-19 11:34:42.000000000 +0200
+++ new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperzero/recovery.cpp 
2023-11-10 10:40:31.000000000 +0100
@@ -163,7 +163,7 @@
         end_ignore_block();
 
     } else {
-        error_msg("Unexpected FUS state.");
+        setErrorString("Can't start FUS: Unexpected FUS state.");
         success = false;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperzero/screenstreamer.cpp
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperzero/screenstreamer.cpp
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/flipperzero/screenstreamer.cpp
       2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/flipperzero/screenstreamer.cpp
   2023-11-10 10:40:31.000000000 +0100
@@ -61,7 +61,7 @@
     setScreenFrame({
         transposeImage(QByteArray((char*)default_bits, sizeof(default_bits)), 
default_width, default_height),
         QSize(SCREEN_FRAME_WIDTH, SCREEN_FRAME_HEIGHT),
-        false
+        Qt::LandscapeOrientation,
     });
 
     if(device) {
@@ -179,7 +179,7 @@
         setScreenFrame({
             screenFrameResponse->screenFrame(),
             QSize(SCREEN_FRAME_WIDTH, SCREEN_FRAME_HEIGHT),
-            screenFrameResponse->screenOrientation() == 
GuiScreenFrameResponseInterface::HorizontalFlip
+            screenFrameResponse->screenOrientation(),
         });
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/screenframe.h 
new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/screenframe.h
--- old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/backend/screenframe.h        
2023-05-19 11:34:42.000000000 +0200
+++ new/qFlipper-1.3.3+git0.1699609231.bfce851/backend/screenframe.h    
2023-11-10 10:40:31.000000000 +0100
@@ -7,7 +7,7 @@
 struct ScreenFrame {
     QByteArray pixelData;
     QSize size;
-    bool isFlipped;
+    Qt::ScreenOrientation orientation;
 };
 
 Q_DECLARE_METATYPE(ScreenFrame)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/installer-assets/appimage/AppRun 
new/qFlipper-1.3.3+git0.1699609231.bfce851/installer-assets/appimage/AppRun
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/installer-assets/appimage/AppRun 
    2023-05-19 11:34:42.000000000 +0200
+++ new/qFlipper-1.3.3+git0.1699609231.bfce851/installer-assets/appimage/AppRun 
2023-11-10 10:40:31.000000000 +0100
@@ -6,7 +6,7 @@
 export QT_QPA_PLATFORMTHEME=xdgdesktopportal
 
 THIS_DIR="$(readlink -f "$(dirname "$0")")"
-APPIMAGE_NAME="$(basename $APPIMAGE)"
+APPIMAGE_NAME="$(basename "$APPIMAGE")"
 
 RULES_FILE_NAME='42-flipperzero.rules'
 RULES_DIR=${3:-'/etc/udev/rules.d'}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/installer-assets/udev/42-flipperzero.rules
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/installer-assets/udev/42-flipperzero.rules
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/installer-assets/udev/42-flipperzero.rules
   2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/installer-assets/udev/42-flipperzero.rules
       2023-11-10 10:40:31.000000000 +0100
@@ -4,3 +4,5 @@
 SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", 
ATTRS{manufacturer}=="STMicroelectronics", TAG+="uaccess", GROUP="dialout"
 #Flipper ESP32s2 BlackMagic
 SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="40??", 
ATTRS{manufacturer}=="Flipper Devices Inc.", TAG+="uaccess", GROUP="dialout"
+#Flipper U2F
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5741", 
ATTRS{manufacturer}=="Flipper Devices Inc.", ENV{ID_SECURITY_TOKEN}="1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/plugins/flipperproto0/guiresponse.cpp
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/plugins/flipperproto0/guiresponse.cpp
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/plugins/flipperproto0/guiresponse.cpp
        2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/plugins/flipperproto0/guiresponse.cpp
    2023-11-10 10:40:31.000000000 +0100
@@ -10,17 +10,17 @@
     return QByteArray((const char*)f->bytes, f->size);
 }
 
-GuiScreenFrameResponseInterface::ScreenOrientation 
GuiScreenFrameResponse::screenOrientation() const
+Qt::ScreenOrientation GuiScreenFrameResponse::screenOrientation() const
 {
     switch(message().content.gui_screen_frame.orientation) {
     case PB_Gui_ScreenOrientation_HORIZONTAL_FLIP:
-        return ScreenOrientation::HorizontalFlip;
+        return Qt::InvertedLandscapeOrientation;
     case PB_Gui_ScreenOrientation_VERTICAL:
-        return ScreenOrientation::Vertical;
+        return Qt::PortraitOrientation;
     case PB_Gui_ScreenOrientation_VERTICAL_FLIP:
-        return ScreenOrientation::VerticalFlip;
+        return Qt::InvertedPortraitOrientation;
     case PB_Gui_ScreenOrientation_HORIZONTAL:
     default:
-        return ScreenOrientation::Horizontal;
+        return Qt::LandscapeOrientation;
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/plugins/flipperproto0/guiresponse.h
 new/qFlipper-1.3.3+git0.1699609231.bfce851/plugins/flipperproto0/guiresponse.h
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/plugins/flipperproto0/guiresponse.h
  2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/plugins/flipperproto0/guiresponse.h  
    2023-11-10 10:40:31.000000000 +0100
@@ -11,5 +11,5 @@
 public:
     GuiScreenFrameResponse(MessageWrapper &wrapper, QObject *parent = nullptr);
     const QByteArray screenFrame() const override;
-    ScreenOrientation screenOrientation() const override;
+    Qt::ScreenOrientation screenOrientation() const override;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/plugins/protobufinterface/guiresponseinterface.h
 
new/qFlipper-1.3.3+git0.1699609231.bfce851/plugins/protobufinterface/guiresponseinterface.h
--- 
old/qFlipper-1.3.1~rc1+git1.1684488882.0199220/plugins/protobufinterface/guiresponseinterface.h
     2023-05-19 11:34:42.000000000 +0200
+++ 
new/qFlipper-1.3.3+git0.1699609231.bfce851/plugins/protobufinterface/guiresponseinterface.h
 2023-11-10 10:40:31.000000000 +0100
@@ -6,15 +6,8 @@
 class GuiScreenFrameResponseInterface
 {
 public:
-    enum ScreenOrientation {
-        Horizontal,
-        HorizontalFlip,
-        Vertical,
-        VerticalFlip,
-    };
-
     virtual const QByteArray screenFrame() const = 0;
-    virtual ScreenOrientation screenOrientation() const = 0;
+    virtual Qt::ScreenOrientation screenOrientation() const = 0;
 };
 
 QT_BEGIN_NAMESPACE

Reply via email to