# SD File Browser Небольшое переносимое read-only ядро для постраничного просмотра каталогов. Оно не зависит от STM32 HAL, FatFs, Modbus или GUI. Платформа передаёт callback `list_page`; ядро проверяет путь, предел страницы и очищает ответ перед вызовом. Логический путь всегда начинается с `/`. Запрещены `..`, `.`, пустые части, обратная косая черта, двоеточие, управляющие символы, путь от ОС и компоненты длиннее 48 ASCII-байт. Максимум — три элемента на страницу и 95 байт пути. FatFs-порт сканирует позднюю страницу пошагово: один вызов service выполняет не более шестнадцати `readdir`. Поэтому любой `uint16` offset доступен без длинного блокирующего вызова main loop. Между страницами `DIR` закрыт. Если логгер или backup получает работу во время сканирования, приложение отменяет viewer, освобождает `DIR` и возвращает `logger busy`; writer всегда имеет приоритет. Для переноса реализуйте `SdFileBrowserListPageFn`, обеспечьте read-only открытие каталога, конечные тайм-ауты носителя и закройте cursor при извлечении карты. Порт также предоставляет `SdFileBrowserFatFs_ReadLogChunk`: он разрешает только legacy `/TEMPLOG.MD` и `temperature_*.md` внутри `/niceOne/mounth`, читает не более 64 байт и закрывает `FIL` до возврата. Первый ответ публикует размер и FAT date/time; каждый следующий запрос обязан повторить их. Замена, обрезание или изменение файла возвращает `SD_FILE_BROWSER_FILE_CHANGED`. В API нет функций записи, удаления, rename, выполнения Markdown или чтения служебных каталогов. ## Shared source Canonical source: `templates/c/sd-file-browser`. Used by `home/climate`; its old paths are compatibility includes. Board-specific ports remain in the application. Change this library, not the forwarding files.