From 93226c9fbb175bd3d07704ae30f5c2e6c26220f4 Mon Sep 17 00:00:00 2001 From: Eunchurn Park Date: Wed, 31 Dec 2025 07:08:31 +0900 Subject: [PATCH] Fix file browser navigation for non-ASCII folder names (#178) ## Summary * **What is the goal of this PR?** Fix file browser failing to navigate into subdirectories with non-ASCII (Korean/Unicode) folder names. * **What changes are included?** - Enable UTF-8 long file names in SdFat (`USE_UTF8_LONG_NAMES=1`) - Add directory validation before iterating files - Add `rewindDirectory()` call for stability ## Additional Context --- platformio.ini | 2 ++ src/activities/reader/FileSelectionActivity.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/platformio.ini b/platformio.ini index dcec29a5..e946f77c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -26,6 +26,8 @@ build_flags = -DXML_GE=0 -DXML_CONTEXT_BYTES=1024 -std=c++2a +# Enable UTF-8 long file names in SdFat + -DUSE_UTF8_LONG_NAMES=1 ; Board configuration board_build.flash_mode = dio diff --git a/src/activities/reader/FileSelectionActivity.cpp b/src/activities/reader/FileSelectionActivity.cpp index 4f4ed9dc..4510f9bc 100644 --- a/src/activities/reader/FileSelectionActivity.cpp +++ b/src/activities/reader/FileSelectionActivity.cpp @@ -30,7 +30,15 @@ void FileSelectionActivity::taskTrampoline(void* param) { void FileSelectionActivity::loadFiles() { files.clear(); selectorIndex = 0; + auto root = SdMan.open(basepath.c_str()); + if (!root || !root.isDirectory()) { + if (root) root.close(); + return; + } + + root.rewindDirectory(); + char name[128]; for (auto file = root.openNextFile(); file; file = root.openNextFile()) { file.getName(name, sizeof(name));