diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8d4cd00145..4665f45a60 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,43 +1,45 @@
## Main changes
- SubGHz:
- Frequency analyzer fixes and improvements:
- - Enforce int module (like in OFW) usage due to lack of required hardware on external boards (PathIsolate (+rf switch for multiple paths)) and incorrect usage and/or understanding the purpose of frequency analyzer app by users, it should be used only to get frequency of the remote placed around 1-10cm around flipper's left corner
- - Fix possible GSM mobile towers signal interference by limiting upper frequency to 920mhz max
+ - **Enforce int module** (like in OFW) usage due to lack of required hardware on external boards (PathIsolate (+rf switch for multiple paths)) and incorrect usage and/or understanding the purpose of frequency analyzer app by users, it should be used only to get frequency of the remote placed around 1-10cm around flipper's left corner
+ - **Fix possible GSM mobile towers signal interference** by limiting upper frequency to 920mhz max
- Fix duplicated frequency lists and use user config for nearest frequency selector too
- - Fix buttons logic, fix crash
+ - Fix buttons logic, **fix crash**
- Protocol improvements:
- - Keeloq: Monarch full support, with add manually option (thanks to anonymous contributor (TBA))
- - Princeton support for second button encoding type (8bit)
+ - **Keeloq: Monarch full support, with add manually option** (thanks to anonymous contributor (TBA))
+ - **Princeton support for second button encoding type** (8bit)
- GangQi fix serial check and remove broken check from UI
- Hollarm add more button codes (thanks to @mishamyte for captures)
- Misc:
- Add extra settings to disable GPIO pins control used for external modules amplifiers and/or LEDs (in radio settings menu with debug ON)
- NFC:
- - Read Ultralight block by block (by @mishamyte | PR #825 #826)
- - Update NDEF parser (by @jaylikesbunda and @Willy-JL)
- - OFW PR 3822: MIFARE Classic Key Recovery Improvements (by @noproto)
+ - Read Ultralight block by block (**fix password protected MFUL reading issue**) (by @mishamyte | PR #825 #826)
+ - **Update NDEF parser** (SLIX and MFC support) (by @luu176 and @jaylikesbunda and @Willy-JL)
+ - OFW PR 3822: **MIFARE Classic Key Recovery Improvements** (by @noproto)
- OFW PR 3930: NFC Emulation freeze (by @RebornedBrain)
- OFW PR 3885: Add API to enforce ISO15693 mode (by @aaronjamt)
- OFW: iso14443_4a improvements (by @RebornedBrain)
- - OFW: Plantain parser improvements (by @assasinfil)
+ - OFW: Plantain parser improvements (by @assasinfil) & fixes (by @mxcdoam)
- OFW: Moscow social card parser (by @assasinfil)
- OFW: NFC: H World Hotel Chain Room Key Parser
- OFW: NFC Parser for Tianjin Railway Transit
- OFW: NFC TRT Parser: Additional checks to prevent false positives
- New keys in system dict
- Infrared:
- - Add LEDs universal remote (DB by @amec0e)
+ - **Add LEDs universal remote** (DB by @amec0e)
- Update universal remote assets (by @amec0e | PR #813 #816)
- JS:
- OFW: JS modules -> **Breaking API change**
- - Backporting custom features - WIP (by @xMasterX and @Willy-JL)
+ - **Backporting custom features** (read about most of the changes after other changes section) (by @xMasterX and @Willy-JL)
- Add i2c module (by @jamisonderek)
+ - Add SPI module (by @jamisonderek)
* OFW: FuriHal, drivers: rework gauge initialization routine -> **Downgrade to older releases will break battery UI percent indicator, upgrade to this or newer version to restore**
* OFW: heap: increased size -> **More free RAM!!**
* OFW: New layout for BadUSB (es-LA)
* OFW: Require PIN on boot
* Apps: **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev)
## Other changes
+* OFW PR 3971: Fix JS memory corruption (in gpio module) (by @portasynthinca3)
* OFW: lib: digital_signal: digital_sequence: add furi_hal.h wrapped in ifdefs
* OFW: Add warning about stealth mode in vibro CLI
* OFW: Small fixes in the wifi devboard docs
@@ -59,6 +61,49 @@
* OFW: Folder rename fails
* OFW: Put errno into TCB
* OFW: Fix USB-UART bridge exit screen stopping the bridge prematurely
+**More details on JS changes** (js changelog written by @Willy-JL , thanks!):
+- Non-exhaustive list of changes to help you fix your scripts:
+ - `badusb`:
+ - `setup()`: `mfr_name`, `prod_name`, `layout_path` parameters renamed to `mfrName`, `prodName`, `layoutPath`
+ - effort required to update old scripts using badusb: very minimal
+ - `dialog`:
+ - removed, now replaced by `gui/dialog` and `gui/file_picker` (see below)
+ - `event_loop`:
+ - new module, allows timer functionality, callbacks and event-driven programming, used heavily alongside gpio and gui modules
+ - `gpio`:
+ - fully overhauled, now you `get()` pin instances and perform actions on them like `.init()`
+ - now supports interrupts, callbacks and more cool things
+ - effort required to update old scripts using gpio: moderate
+ - `gui`:
+ - new module, fully overhauled, replaces dialog, keyboard, submenu, textbox modules
+ - higher barrier to entry than older modules (requires usage of `event_loop` and `gui.viewDispatcher`), but much more flexible, powerful and easier to extend
+ - includes all previously available js gui functionality (except `widget`), and also adds `gui/loading` and `gui/empty_screen` views
+ - currently `gui/file_picker` works different than other new view objects, it is a simple `.pickFile()` synchronous function, but this [may change later](https://github.com/flipperdevices/flipperzero-firmware/pull/3961#discussion_r1805579153)
+ - effort required to update old scripts using gui: extensive
+ - `keyboard`:
+ - removed, now replaced by `gui/text_input` and `gui/byte_input` (see above)
+ - `math`:
+ - `is_equal()` renamed to `isEqual()`
+ - `storage`:
+ - fully overhauled, now you `openFile()`s and perform actions on them like `.read()`
+ - now supports many more operations including different open modes, directories and much more
+ - effort required to update old scripts using storage: moderate
+ - `submenu`:
+ - removed, now replaced by `gui/submenu` (see above)
+ - `textbox`:
+ - removed, now replace by `gui/text_box` (see above)
+ - `widget`:
+ - only gui functionality not ported to new gui module, remains unchanged for now but likely to be ported later on
+ - globals:
+ - `__filepath` and `__dirpath` renamed to `__filename` and `__dirname` like in nodejs
+ - `to_string()` renamed and moved to number class as `n.toString()`, now supports optional base parameter
+ - `to_hex_string()` removed, now use `n.toString(16)`
+ - `parse_int()` renamed to `parseInt()`, now supports optional base parameter
+ - `to_upper_case()` and `to_lower_case()` renamed and moved to string class as `s.toUpperCase()` and `s.toLowerCase()`
+ - effort required to update old scripts using these: minimal
+ - Added type definitions (typescript files for type checking in IDE, Flipper does not run typescript)
+ - Documentation is incomplete and deprecated, from now on you should refer to type definitions (`applications/system/js_app/types`), those will always be correct
+ - Type definitions for extra modules we have that OFW doesn't will come later
#### Known NFC post-refactor regressions list:
- Mifare Mini clones reading is broken (original mini working fine) (OFW)