## What's Changed
* CI: bump flash-device reboot wait to 45s, drop SWD fallback by @ssecsd in https://github.com/busy-app/busybar-firmware/pull/976
* [QA-330] DRAW APIs refactoring by @ssecsd in https://github.com/busy-app/busybar-firmware/pull/977
* [FW-1136] Improve performance of JS apps by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/978
* [FW-1054] Hide mkfs in non debug by @RebornedBrain in https://github.com/busy-app/busybar-firmware/pull/982
* [FW-878] Add Fetch mTLS integration tests by @iMalkav in https://github.com/busy-app/busybar-firmware/pull/980
* [FW-1143] JsExample: fix request url by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/984
* Adjust brightness curve power values by @gornekich in https://github.com/busy-app/busybar-firmware/pull/995
* [FW-1079] Power scene adjustments by @RebornedBrain in https://github.com/busy-app/busybar-firmware/pull/981
* [FW-1082] [FW-1057] Openapi adjustments by @RebornedBrain in https://github.com/busy-app/busybar-firmware/pull/990
* [FW-1145] Allow Recovery At Any Battery % & 917 DFU USART Fix by @vanyww in https://github.com/busy-app/busybar-firmware/pull/994
* [FW-1119] DeviceName & Discovery refactoring (fewer deadlocks) by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/979
* Update power value in back_display_curve to 1.0 by @gornekich in https://github.com/busy-app/busybar-firmware/pull/997
* [FW-1139] FuriMessageQueue peek() method, refactor Wifi by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/986
* [FW-1146] Fix multi-device discovery by @portasynthinca3 in https://github.com/busy-app/busybar-firmware/pull/999
* Fix update package link by @gornekich in https://github.com/busy-app/busybar-firmware/pull/1000
* [FW-1163] Fix state streaming on localweb over Wi-Fi by @portasynthinca3 in https://github.com/busy-app/busybar-firmware/pull/1003
* [FRONT-403] geopicker by @viirtualp1 in https://github.com/busy-app/busybar-firmware/pull/1006
* ci: authenticate submodule clones + credential hygiene for self-hosted runners by @hedger in https://github.com/busy-app/busybar-firmware/pull/1009
* Fix Underflow In Battery Critical Processing by @vanyww in https://github.com/busy-app/busybar-firmware/pull/1012
* [FW-1144] Move JS applications to their own directory by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/996
* [BLE] More docs and minor cleanups by @RebornedBrain in https://github.com/busy-app/busybar-firmware/pull/934
* [BLE] GAP service rework for new device name logic by @RebornedBrain in https://github.com/busy-app/busybar-firmware/pull/1011
* [FW-1149] Document HTTP 400 errors for token endpoints by @portasynthinca3 in https://github.com/busy-app/busybar-firmware/pull/1010
* gh: copilot trigger automation by @hedger in https://github.com/busy-app/busybar-firmware/pull/1017
* [FW-1141] JS: Separate context allocation and script execution by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1001
* [FW-1151] Implement dispatcher.connect.useDeviceKey JS API by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1015
* JS: increase heap size by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1023
* [FW-1126] Concrete HTTP draw errors by @portasynthinca3 in https://github.com/busy-app/busybar-firmware/pull/1013
* [FW-1115] JS Application Settings: Parsing, Storage, UI by @vanyww in https://github.com/busy-app/busybar-firmware/pull/1019
* [FW-1148] Additional JS classes for apps by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1022
* Create and store runlogs for all test workflows by @ssecsd in https://github.com/busy-app/busybar-firmware/pull/1024
* Windows 11 USB Network Compatibility Fix by @vanyww in https://github.com/busy-app/busybar-firmware/pull/1025
* [FW-1033] Animation interframe compression by @portasynthinca3 in https://github.com/busy-app/busybar-firmware/pull/992
* [FW-1162] JS inputs by @RebornedBrain in https://github.com/busy-app/busybar-firmware/pull/1036
* [FW-1164] JS apps install/delete/list API by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1035
* all: change codeowners by @gornekich in https://github.com/busy-app/busybar-firmware/pull/1040
* [FW-1182] HTTP API for JS Application Settings by @vanyww in https://github.com/busy-app/busybar-firmware/pull/1037
* [FW-1174] Indicate JS fatal errors via Supervisor by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1039
* [FW-1178] JS apps loading feedback by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1038
* [FW-1185] Blocklist apps API methods by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1041
* features && fixes: editor, device controls and connection by @viirtualp1 in https://github.com/busy-app/busybar-firmware/pull/1049
* [FW-1188, FW-1189] JS Apps launch/quit HTTP API, ability to skip menu by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1047
* [FW-1181] Audio: amplifier auto disable, refactoring by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1050
* [FW-1192] Change JS Application Settings Requirements/Validation by @vanyww in https://github.com/busy-app/busybar-firmware/pull/1052
* feat: apps && geolocation by @viirtualp1 in https://github.com/busy-app/busybar-firmware/pull/1054
* [FW-1197] Fix race conditions in FuriRecord by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1055
* [FW-1203, FW-1206] JS Application improvements by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1059
* feat: app screen layout changes by @viirtualp1 in https://github.com/busy-app/busybar-firmware/pull/1061
* [FW-1202] Stop the running JS app before removing if it is running by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1058
* [FW-1198/1199] Rework Var Item List To Closer Match Design by @vanyww in https://github.com/busy-app/busybar-firmware/pull/1057
* ci: add nightly integration tests by @ssecsd in https://github.com/busy-app/busybar-firmware/pull/1044
* [FW-1193] Stock JS apps by @RebornedBrain in https://github.com/busy-app/busybar-firmware/pull/1056
* Ssecsd/storage tests fix by @ssecsd in https://github.com/busy-app/busybar-firmware/pull/1070
* [FW-1196] Increase storage API max path length to 256 by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1064
* [FW-1213] Fix ArrayBuffer memory leak/crash by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1069
* [FW-840] Do not block on state publisher record when allocating streaming websocket by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1060
* [FW-1205] Respect app priority when launching JS apps by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1066
* tests: exclude stateful app lifecycle from Schemathesis by @iMalkav in https://github.com/busy-app/busybar-firmware/pull/1073
* [FW-1217] Fix miscellaneous JS leaks and crashes by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1072
* [FW-1220] Move JS applications out of debug flags by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1075
* feat: cloud api impl && remove photonapi by @viirtualp1 in https://github.com/busy-app/busybar-firmware/pull/1067
* gh: codeowners update by @hedger in https://github.com/busy-app/busybar-firmware/pull/1078
* [FW-1222] JsApp: fix memory leak when repeatedly parsing manifest by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1079
* [FW-1207] Display mirror: Add a refresh timer to never miss a frame by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1076
* [FW-1223] Listen to input events through GUI, propagate all events by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1082
* fix: storage limit && apps api url name by @viirtualp1 in https://github.com/busy-app/busybar-firmware/pull/1084
* tests: stabilize display priority and schema conformance by @iMalkav in https://github.com/busy-app/busybar-firmware/pull/1088
* [FW-1225] Add HTTP API version to manifest by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1087
* [FW-1231] Tar: create parent path for each file when extracting by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1091
* [FW-1210] Update Firmware Update Stage Weights by @vanyww in https://github.com/busy-app/busybar-firmware/pull/1090
* [FW-1232] Show an error message if there are no apps installed by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1092
* [FW-1236] Fix JS heap overflow error (submodule only) by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1093
* [FW-1226] Faster response to js_runner_abort by @imihajlow in https://github.com/busy-app/busybar-firmware/pull/1095
* [FW-1237] Forget current application if it failed to load by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1094
* [FW-1211] JS apps extra fetch header by @RebornedBrain in https://github.com/busy-app/busybar-firmware/pull/1068
* fixes: changelog && apps by @viirtualp1 in https://github.com/busy-app/busybar-firmware/pull/1085
* [FW-1241] Fix enum label in JS App launcher settings by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1096
* fix: video editor minor changes by @viirtualp1 in https://github.com/busy-app/busybar-firmware/pull/1071
* [FW-1242] Fix Busy deadlock under heavy load by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1098
* Apps: freeze versions for release by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1101
* ci: add steps to upload artifacts to dev indexer by @an5t in https://github.com/busy-app/busybar-firmware/pull/1102
* [FW-1255] Scroll Long Text Must Be Horizontal On Bar UI by @vanyww in https://github.com/busy-app/busybar-firmware/pull/1107
* [FW-1254] Fix crash during Wi-fi connection by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1108
* Update CA certs to exclude the compromised ones by @portasynthinca3 in https://github.com/busy-app/busybar-firmware/pull/1109
* Host docs in storage by @gornekich in https://github.com/busy-app/busybar-firmware/pull/1110
* Update documentation by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1111
* [FW-1256, FW-1257] Fix Wi-Fi reconnection issues by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1112
* [FW-1258] Left-align the JS app loading spinner by @gsurkov in https://github.com/busy-app/busybar-firmware/pull/1113
* Fix product name in documentation by @gornekich in https://github.com/busy-app/busybar-firmware/pull/1114
## New Contributors
* @viirtualp1 made their first contribution in https://github.com/busy-app/busybar-firmware/pull/1006
* @an5t made their first contribution in https://github.com/busy-app/busybar-firmware/pull/1102
**Full Changelog**: https://github.com/busy-app/busybar-firmware/compare/1.2.4...1.3.1-rc