diff --git a/.github/workflows/ui_preview.yaml b/.github/workflows/ui_preview.yaml
index 2ded4a2d2a..9963f2958c 100644
--- a/.github/workflows/ui_preview.yaml
+++ b/.github/workflows/ui_preview.yaml
@@ -95,8 +95,21 @@ jobs:
for ((i=0; i<${#A[*]}; i=i+1));
do
+ # Check if the master file exists
+ if [ ! -f "${{ github.workspace }}/master_ui/${A[$i]}.png" ]; then
+ # This is a new file in PR UI that doesn't exist in master
+ DIFF="${DIFF}"
+ DIFF="${DIFF}${A[$i]} : \$\${\\color{cyan}\\text{NEW}}\$\$
"
+ DIFF="${DIFF}"
- if ! compare -fuzz 2% -highlight-color DeepSkyBlue1 -lowlight-color Black -compose Src ${{ github.workspace }}/master_ui/${A[$i]}.png ${{ github.workspace }}/pr_ui/${A[$i]}.png ${{ github.workspace }}/pr_ui/${A[$i]}_diff.png; then
+ DIFF="${DIFF}"
+ DIFF="${DIFF} master | "
+ DIFF="${DIFF} proposed | "
+ DIFF="${DIFF}
"
+
+ DIFF="${DIFF}
"
+ DIFF="${DIFF} "
+ elif ! compare -fuzz 2% -highlight-color DeepSkyBlue1 -lowlight-color Black -compose Src ${{ github.workspace }}/master_ui/${A[$i]}.png ${{ github.workspace }}/pr_ui/${A[$i]}.png ${{ github.workspace }}/pr_ui/${A[$i]}_diff.png; then
convert ${{ github.workspace }}/pr_ui/${A[$i]}_diff.png -transparent black mask.png
composite mask.png ${{ github.workspace }}/master_ui/${A[$i]}.png composite_diff.png
convert -delay 100 ${{ github.workspace }}/master_ui/${A[$i]}.png composite_diff.png -loop 0 ${{ github.workspace }}/pr_ui/${A[$i]}_diff.gif
diff --git a/selfdrive/ui/qt/offroad/firehose.cc b/selfdrive/ui/qt/offroad/firehose.cc
index fd173a1c7a..e6a9c5c6e9 100644
--- a/selfdrive/ui/qt/offroad/firehose.cc
+++ b/selfdrive/ui/qt/offroad/firehose.cc
@@ -12,6 +12,10 @@
#include
#include
+#ifdef SUNNYPILOT
+#define UIState UIStateSP
+#endif
+
FirehosePanel::FirehosePanel(SettingsWindow *parent) : QWidget((QWidget*)parent) {
layout = new QVBoxLayout(this);
layout->setContentsMargins(40, 40, 40, 40);
diff --git a/sunnypilot/sunnylink/api.py b/sunnypilot/sunnylink/api.py
index 4abefa12f8..9f82fd2d20 100644
--- a/sunnypilot/sunnylink/api.py
+++ b/sunnypilot/sunnylink/api.py
@@ -55,7 +55,7 @@ class SunnylinkApi(BaseApi):
imei_try = 0
while imei1 is None and imei2 is None and imei_try < MAX_RETRIES:
try:
- imei1, imei2 = self.params.get("IMEI", encoding='utf8') or HARDWARE.get_imei(0), HARDWARE.get_imei(1)
+ imei1, imei2 = HARDWARE.get_imei(0), HARDWARE.get_imei(1)
except Exception:
self._status_update(f"Error getting imei, trying again... [{imei_try + 1}/{MAX_RETRIES}]")
time.sleep(1)