From 934ccec91b4afa8bd353a82786867bc729d1f427 Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sat, 23 Aug 2025 22:59:23 +0200 Subject: [PATCH 01/10] Archive: Back out right away for main menu dirs --- applications/main/archive/archive.c | 5 +++-- .../main/archive/helpers/archive_browser.c | 15 ++++++++++++--- .../main/archive/helpers/archive_browser.h | 3 ++- .../main/archive/views/archive_browser_view.h | 1 + 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/applications/main/archive/archive.c b/applications/main/archive/archive.c index 5d50ff27a..62ed63156 100644 --- a/applications/main/archive/archive.c +++ b/applications/main/archive/archive.c @@ -147,13 +147,14 @@ int32_t archive_app(void* p) { if(path && !furi_string_empty(path)) { archive_set_tab(archive->browser, ArchiveTabBrowser); furi_string_set(archive->browser->path, path); - archive->browser->is_root = false; + archive->browser->is_root = true; archive_file_browser_set_path( archive->browser, archive->browser->path, archive_get_tab_ext(ArchiveTabBrowser), false, - !momentum_settings.show_hidden_files); + !momentum_settings.show_hidden_files, + furi_string_get_cstr(path)); } scene_manager_next_scene(archive->scene_manager, ArchiveAppSceneBrowser); diff --git a/applications/main/archive/helpers/archive_browser.c b/applications/main/archive/helpers/archive_browser.c index d55180415..ef39ca802 100644 --- a/applications/main/archive/helpers/archive_browser.c +++ b/applications/main/archive/helpers/archive_browser.c @@ -121,7 +121,8 @@ void archive_file_browser_set_path( FuriString* path, const char* filter_ext, bool skip_assets, - bool hide_dot_files) { + bool hide_dot_files, + const char* override_home_path) { furi_assert(browser); if(!browser->worker_running) { browser->worker = @@ -137,6 +138,7 @@ void archive_file_browser_set_path( file_browser_worker_set_config( browser->worker, path, filter_ext, skip_assets, hide_dot_files); } + browser->override_home_path = override_home_path; } bool archive_is_item_in_array(ArchiveBrowserViewModel* model, uint32_t idx) { @@ -385,7 +387,9 @@ bool archive_is_home(ArchiveBrowserView* browser) { return true; } - const char* default_path = archive_get_default_path(archive_get_tab(browser)); + const char* default_path = browser->override_home_path ? + browser->override_home_path : + archive_get_default_path(archive_get_tab(browser)); return furi_string_cmp_str(browser->path, default_path) == 0; } @@ -589,7 +593,12 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key) { tab == ArchiveTabInternal ? false : !momentum_settings.show_hidden_files; archive_file_browser_set_path( - browser, browser->path, archive_get_tab_ext(tab), skip_assets, hide_dot_files); + browser, + browser->path, + archive_get_tab_ext(tab), + skip_assets, + hide_dot_files, + NULL); tab_empty = false; // Empty check will be performed later } } diff --git a/applications/main/archive/helpers/archive_browser.h b/applications/main/archive/helpers/archive_browser.h index 2b020ed1c..2378c53b2 100644 --- a/applications/main/archive/helpers/archive_browser.h +++ b/applications/main/archive/helpers/archive_browser.h @@ -88,7 +88,8 @@ void archive_file_browser_set_path( FuriString* path, const char* filter_ext, bool skip_assets, - bool hide_dot_files); + bool hide_dot_files, + const char* override_home_path); bool archive_is_item_in_array(ArchiveBrowserViewModel* model, uint32_t idx); bool archive_is_file_list_load_required(ArchiveBrowserViewModel* model); void archive_update_offset(ArchiveBrowserView* browser); diff --git a/applications/main/archive/views/archive_browser_view.h b/applications/main/archive/views/archive_browser_view.h index c94d60631..098e2d22c 100644 --- a/applications/main/archive/views/archive_browser_view.h +++ b/applications/main/archive/views/archive_browser_view.h @@ -95,6 +95,7 @@ struct ArchiveBrowserView { bool is_root; FuriTimer* scroll_timer; File* disk_image; + const char* override_home_path; }; typedef struct { From d6c6d7d850ed7c99e5d1cc250e2e7e0ef3449384 Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sat, 23 Aug 2025 23:35:29 +0200 Subject: [PATCH 02/10] MNTM: Consistent display of main menu apps when adding new ones --- applications/main/momentum_app/momentum_app.c | 67 ++++++++++--------- applications/main/momentum_app/momentum_app.h | 1 + ...omentum_app_scene_interface_mainmenu_add.c | 21 +----- ...um_app_scene_interface_mainmenu_add_main.c | 5 +- 4 files changed, 42 insertions(+), 52 deletions(-) diff --git a/applications/main/momentum_app/momentum_app.c b/applications/main/momentum_app/momentum_app.c index 015014ef1..030fb9ada 100644 --- a/applications/main/momentum_app/momentum_app.c +++ b/applications/main/momentum_app/momentum_app.c @@ -158,7 +158,8 @@ static bool momentum_app_back_event_callback(void* context) { return scene_manager_handle_back_event(app->scene_manager); } -static void momentum_app_push_mainmenu_app(MomentumApp* app, FuriString* label, FuriString* exe) { +static void + momentum_app_push_mainmenu_app_raw(MomentumApp* app, FuriString* label, FuriString* exe) { CharList_push_back(app->mainmenu_app_exes, strdup(furi_string_get_cstr(exe))); // Display logic mimics applications/services/gui/modules/menu.c if(furi_string_equal(label, "Momentum")) { @@ -176,6 +177,38 @@ static void momentum_app_push_mainmenu_app(MomentumApp* app, FuriString* label, CharList_push_back(app->mainmenu_app_labels, strdup(furi_string_get_cstr(label))); } +void momentum_app_push_mainmenu_app(MomentumApp* app, FuriString* exe) { + FuriString* label = furi_string_alloc(); + if(furi_string_start_with(exe, "/")) { + uint8_t unused_icon[FAP_MANIFEST_MAX_ICON_SIZE]; + uint8_t* unused_icon_ptr = unused_icon; + if(!flipper_application_load_name_and_icon(exe, app->storage, &unused_icon_ptr, label)) { + const char* end = strrchr(furi_string_get_cstr(exe), '/'); + furi_string_set(label, end ? end + 1 : furi_string_get_cstr(exe)); + } + momentum_app_push_mainmenu_app_raw(app, label, exe); + } else { + bool found = false; + for(size_t i = 0; !found && i < FLIPPER_APPS_COUNT; i++) { + if(!strcmp(furi_string_get_cstr(exe), FLIPPER_APPS[i].name)) { + furi_string_set(label, FLIPPER_APPS[i].name); + found = true; + } + } + for(size_t i = 0; !found && i < FLIPPER_EXTERNAL_APPS_COUNT; i++) { + if(!strcmp(furi_string_get_cstr(exe), FLIPPER_EXTERNAL_APPS[i].name)) { + furi_string_set(label, FLIPPER_EXTERNAL_APPS[i].name); + found = true; + } + } + // Ignore unknown apps just like in main menu, prevents "ghost" apps when saving + if(!furi_string_empty(label)) { + momentum_app_push_mainmenu_app_raw(app, label, exe); + } + } + furi_string_free(label); +} + void momentum_app_load_mainmenu_apps(MomentumApp* app) { // Loading logic mimics applications/services/loader/loader_menu.c Stream* stream = file_stream_alloc(app->storage); @@ -198,45 +231,19 @@ void momentum_app_load_mainmenu_apps(MomentumApp* app) { furi_string_set(line, "Momentum"); } } - if(furi_string_start_with(line, "/")) { - if(!flipper_application_load_name_and_icon( - line, app->storage, &unused_icon, label)) { - const char* end = strrchr(furi_string_get_cstr(line), '/'); - furi_string_set(label, end ? end + 1 : furi_string_get_cstr(line)); - } - momentum_app_push_mainmenu_app(app, label, line); - continue; - } - bool found = false; - for(size_t i = 0; !found && i < FLIPPER_APPS_COUNT; i++) { - if(!strcmp(furi_string_get_cstr(line), FLIPPER_APPS[i].name)) { - furi_string_set(label, FLIPPER_APPS[i].name); - found = true; - } - } - for(size_t i = 0; !found && i < FLIPPER_EXTERNAL_APPS_COUNT; i++) { - if(!strcmp(furi_string_get_cstr(line), FLIPPER_EXTERNAL_APPS[i].name)) { - furi_string_set(label, FLIPPER_EXTERNAL_APPS[i].name); - found = true; - } - } - if(furi_string_empty(label)) { - // Ignore unknown apps just like in main menu, prevents "ghost" apps when saving - continue; - } - momentum_app_push_mainmenu_app(app, label, line); + momentum_app_push_mainmenu_app(app, line); } } else { for(size_t i = 0; i < FLIPPER_APPS_COUNT; i++) { furi_string_set(label, FLIPPER_APPS[i].name); furi_string_set(line, FLIPPER_APPS[i].name); - momentum_app_push_mainmenu_app(app, label, line); + momentum_app_push_mainmenu_app_raw(app, label, line); } // Until count - 1 because last app is hardcoded below for(size_t i = 0; i < FLIPPER_EXTERNAL_APPS_COUNT - 1; i++) { furi_string_set(label, FLIPPER_EXTERNAL_APPS[i].name); furi_string_set(line, FLIPPER_EXTERNAL_APPS[i].name); - momentum_app_push_mainmenu_app(app, label, line); + momentum_app_push_mainmenu_app_raw(app, label, line); } } free(unused_icon); diff --git a/applications/main/momentum_app/momentum_app.h b/applications/main/momentum_app/momentum_app.h index 776f21b67..70e51d592 100644 --- a/applications/main/momentum_app/momentum_app.h +++ b/applications/main/momentum_app/momentum_app.h @@ -111,5 +111,6 @@ typedef enum { bool momentum_app_apply(MomentumApp* app); +void momentum_app_push_mainmenu_app(MomentumApp* app, FuriString* exe); void momentum_app_load_mainmenu_apps(MomentumApp* app); void momentum_app_empty_mainmenu_apps(MomentumApp* app); diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add.c index 49f765f31..621cf5858 100644 --- a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add.c +++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add.c @@ -43,26 +43,7 @@ static void FuriString* temp_path = furi_string_alloc_set_str(browser_options.base_path); if(dialog_file_browser_show(app->dialogs, temp_path, temp_path, &browser_options)) { - CharList_push_back(app->mainmenu_app_exes, strdup(furi_string_get_cstr(temp_path))); - if(is_file_dir) { - const char* path = furi_string_get_cstr(temp_path); - const char* end = strrchr(path, '/'); - furi_string_set_str(temp_path, end ? end + 1 : path); - } else { - Storage* storage = furi_record_open(RECORD_STORAGE); - uint8_t* unused_icon = malloc(FAP_MANIFEST_MAX_ICON_SIZE); - flipper_application_load_name_and_icon( - temp_path, storage, &unused_icon, temp_path); - free(unused_icon); - furi_record_close(RECORD_STORAGE); - if(furi_string_start_with_str(temp_path, "[")) { - size_t trim = furi_string_search_str(temp_path, "] ", 1); - if(trim != FURI_STRING_FAILURE) { - furi_string_right(temp_path, trim + 2); - } - } - } - CharList_push_back(app->mainmenu_app_labels, strdup(furi_string_get_cstr(temp_path))); + momentum_app_push_mainmenu_app(app, temp_path); app->mainmenu_app_index = CharList_size(app->mainmenu_app_labels) - 1; app->save_mainmenu_apps = true; scene_manager_search_and_switch_to_previous_scene( diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add_main.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add_main.c index 40089c96d..bddf25bab 100644 --- a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add_main.c +++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add_main.c @@ -5,8 +5,9 @@ static void MomentumApp* app = context; const char* name = (const char*)index; - CharList_push_back(app->mainmenu_app_exes, strdup(name)); - CharList_push_back(app->mainmenu_app_labels, strdup(name)); + FuriString* exe = furi_string_alloc_set(name); + momentum_app_push_mainmenu_app(app, exe); + furi_string_free(exe); app->mainmenu_app_index = CharList_size(app->mainmenu_app_labels) - 1; app->save_mainmenu_apps = true; scene_manager_search_and_switch_to_previous_scene( From 12f78f1b83f3073be429ddd340a9a225ec757aad Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sun, 24 Aug 2025 02:18:13 +0200 Subject: [PATCH 03/10] NFC: Fix slashes in prefilled filename --- CHANGELOG.md | 1 + applications/external | 2 +- .../main/nfc/helpers/protocol_support/nfc_protocol_support.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f0496e3..0914d46f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,7 @@ - NFC: - Fix incorrect Saflok year formula (#433 by @Eltrick) - Fix read crash with unexpectedly large MFC AUTH(0) response, eg with Chameleon Ultra NTAG emualtion (by @WillyJL) + - Fix slashes in prefilled filename (by @WillyJL) - FBT: Fix redundant decl for apps using an icon disabled in API (by @WillyJL) ### Removed: diff --git a/applications/external b/applications/external index 006b4e297..d951039d3 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 006b4e297861de36e794396fa5ffe4a39067bce8 +Subproject commit d951039d3033e4abb5b58181625cacf28efed7b6 diff --git a/applications/main/nfc/helpers/protocol_support/nfc_protocol_support.c b/applications/main/nfc/helpers/protocol_support/nfc_protocol_support.c index 008f9c317..2ee29668c 100644 --- a/applications/main/nfc/helpers/protocol_support/nfc_protocol_support.c +++ b/applications/main/nfc/helpers/protocol_support/nfc_protocol_support.c @@ -680,6 +680,7 @@ static void nfc_protocol_support_scene_save_name_on_enter(NfcApp* instance) { furi_string_replace(prefix, " Plus", "+"); // NTAG I2C+ furi_string_replace(prefix, " (Unknown)", ""); furi_string_replace_all(prefix, " ", "_"); + furi_string_replace_all(prefix, "/", "_"); name_generator_make_auto( instance->text_store, NFC_TEXT_STORE_SIZE, furi_string_get_cstr(prefix)); furi_string_free(prefix); From 67159fa54f79c941db4c049c0fc7e9570d45cf71 Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sun, 24 Aug 2025 02:39:31 +0200 Subject: [PATCH 04/10] Apps: Add Chief Cooker (by denr01) --- CHANGELOG.md | 4 +++- applications/external | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0914d46f1..df7d6e20c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,9 @@ - GPIO/GPS: [NMEA] Nearby Files (by @Stichoza) - NFC: NFC-Eink (by @RebornedBrain) - RFID: Simultaneous UHF RFID Reader (by @haffnerriley) - - Sub-GHz: Sub Analyzer (by @RocketGod-git) + - Sub-GHz: + - Chief Cooker (by @denr01) + - Sub Analyzer (by @RocketGod-git) - SubGHz: - UL: Roger (static 28 bit) with add manually support (by @xMasterX & @mishamyte) - UL: V2 Phoenix full support (button switch, add manually, counter decrypt/encrypt) (by @xMasterX & @RocketGod-git, original code by @Skorpionm) diff --git a/applications/external b/applications/external index d951039d3..d3296e143 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit d951039d3033e4abb5b58181625cacf28efed7b6 +Subproject commit d3296e143c3d8824e61767b267cc6b3308f6d138 From 73f2fd31987bafe41598bfea67089e534d20c85c Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sun, 24 Aug 2025 03:17:42 +0200 Subject: [PATCH 05/10] Apps: Add Free Roam (by jblanked) --- CHANGELOG.md | 1 + applications/external | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df7d6e20c..3b28bfa35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ### Added: - Apps: - GPIO/ESP: [ESP32] Ghost ESP (by @jaylikesbunda) + - GPIO/FlipperHTTP: Free Roam (by @jblanked) - GPIO/GPS: [NMEA] Nearby Files (by @Stichoza) - NFC: NFC-Eink (by @RebornedBrain) - RFID: Simultaneous UHF RFID Reader (by @haffnerriley) diff --git a/applications/external b/applications/external index d3296e143..0bf9f9cdc 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit d3296e143c3d8824e61767b267cc6b3308f6d138 +Subproject commit 0bf9f9cdced9e5b5fd8723dcd5f86f257acb8861 From 1d8612fbacf5a5bc4214d6f79fb2d8e057ae09cd Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sun, 24 Aug 2025 03:21:55 +0200 Subject: [PATCH 06/10] Apps: Add Geometry Flip (by goosedev72-projects) --- CHANGELOG.md | 1 + applications/external | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b28bfa35..cc14caabf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ### Added: - Apps: + - Games: Geometry Flip (by @goosedev72-projects) - GPIO/ESP: [ESP32] Ghost ESP (by @jaylikesbunda) - GPIO/FlipperHTTP: Free Roam (by @jblanked) - GPIO/GPS: [NMEA] Nearby Files (by @Stichoza) diff --git a/applications/external b/applications/external index 0bf9f9cdc..ecf26e6cd 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 0bf9f9cdced9e5b5fd8723dcd5f86f257acb8861 +Subproject commit ecf26e6cd4beffe3a80aad3595b119530dc9deaf From 47dd4b55315037ee321c9b3e2f9b63028e482a7d Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sun, 24 Aug 2025 03:28:08 +0200 Subject: [PATCH 07/10] Apps: Add FM Transmitter (by goosedev72-projects) --- CHANGELOG.md | 1 + applications/external | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc14caabf..236291673 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ### Added: - Apps: - Games: Geometry Flip (by @goosedev72-projects) + - GPIO: [KT0803] FM Transmitter (by @goosedev72-projects) - GPIO/ESP: [ESP32] Ghost ESP (by @jaylikesbunda) - GPIO/FlipperHTTP: Free Roam (by @jblanked) - GPIO/GPS: [NMEA] Nearby Files (by @Stichoza) diff --git a/applications/external b/applications/external index ecf26e6cd..c911218e3 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit ecf26e6cd4beffe3a80aad3595b119530dc9deaf +Subproject commit c911218e38aea95d4e813a760447002b46cfbd7f From 6b4d1ac555e33d3b09d7e25ebdf82e356df68d95 Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sun, 24 Aug 2025 03:44:29 +0200 Subject: [PATCH 08/10] Apps: Add FlipBoard apps (by jamisonderek) --- CHANGELOG.md | 5 +++++ applications/external | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 236291673..efc8a29cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ - Games: Geometry Flip (by @goosedev72-projects) - GPIO: [KT0803] FM Transmitter (by @goosedev72-projects) - GPIO/ESP: [ESP32] Ghost ESP (by @jaylikesbunda) + - GPIO/FlipBoard: + - FlipBoard Blinky (by @jamisonderek) + - FlipBoard Keyboard (by @jamisonderek) + - FlipBoard Signal (by @jamisonderek) + - FlipBoard Simon (by @jamisonderek) - GPIO/FlipperHTTP: Free Roam (by @jblanked) - GPIO/GPS: [NMEA] Nearby Files (by @Stichoza) - NFC: NFC-Eink (by @RebornedBrain) diff --git a/applications/external b/applications/external index c911218e3..d2f2df8a6 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit c911218e38aea95d4e813a760447002b46cfbd7f +Subproject commit d2f2df8a676538dc861e6cf8df34a6d2b13a7651 From 08a177f0dd880ddd4c903fb1fa870fdd6fb395ee Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sun, 24 Aug 2025 03:48:03 +0200 Subject: [PATCH 09/10] Apps: Add Video Player (by LTVA1) --- CHANGELOG.md | 1 + applications/external | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index efc8a29cf..b27de2275 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - FlipBoard Simon (by @jamisonderek) - GPIO/FlipperHTTP: Free Roam (by @jblanked) - GPIO/GPS: [NMEA] Nearby Files (by @Stichoza) + - Media: Video Player (by @LTVA1) - NFC: NFC-Eink (by @RebornedBrain) - RFID: Simultaneous UHF RFID Reader (by @haffnerriley) - Sub-GHz: diff --git a/applications/external b/applications/external index d2f2df8a6..2cd308b80 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit d2f2df8a676538dc861e6cf8df34a6d2b13a7651 +Subproject commit 2cd308b80b055faf043ec485400a445496b93f82 From 259cd18ef41067636f35176d06b969370164fb24 Mon Sep 17 00:00:00 2001 From: WillyJL Date: Sun, 24 Aug 2025 03:56:08 +0200 Subject: [PATCH 10/10] Update apps - Passy: Misc UI improvements (by @qistoph) --- CHANGELOG.md | 2 +- applications/external | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b27de2275..22f403ca5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,7 +47,7 @@ - Metroflip: Fix unsupported card crash, RENFE Suma 10 support, GEG Connect AID added, Top Up log parsing and animations, 16 new rail lines, support for parsing area codes, saving function for Suica/Japan Rail IC, bugfixes (by @luu176) - NFC Maker: Support making empty/blank NDEF payloads (by @WillyJL) - NFC Playlist: Refactor playlist worker, new settings layout, loop setting, controls to move between items (by @acegoal07) - - Passy: Misc memory management bugfixes (by @qistoph) + - Passy: Misc memory management bugfixes, misc UI improvements (by @qistoph) - Seader: Fix ATS handling (by @NVX), reset SAM on error (by @bettse) - Sentry Safe: New interface, settings & help page (by @H4ckd4ddy) - Seos Compatible: Add keys v2 support with per-device encryption (by @bettse) diff --git a/applications/external b/applications/external index 2cd308b80..e54fb74c1 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 2cd308b80b055faf043ec485400a445496b93f82 +Subproject commit e54fb74c14317899cdfbe1d432800f22ec72f750