diff --git a/History/2026-08-19-folder-select-recursive.md b/History/2026-08-19-folder-select-recursive.md deleted file mode 100644 index 0f7b020..0000000 --- a/History/2026-08-19-folder-select-recursive.md +++ /dev/null @@ -1,45 +0,0 @@ -# v0.0.47 — Выбор целой папки (рекурсивно, как раскрытие ZIP) — 2026-08-19 - -## Проблема -Нативный `` (`site/templates/index.html:133`) не умеет выбирать -папку целиком: клик по папке просто «входит» внутрь. Нужно выбирать целую папку -и рекурсивно забирать все файлы — как при раскрытии архива. - -## Решение -- Второй `` + кнопка - «📁 Выбрать папку» (вызов `folderInput.click()`). - `webkitdirectory` взаимоисключающ с обычным выбором файлов на одном input — - поэтому отдельный input, а не переключатель. -- Браузер сам отдаёт ВСЕ файлы папки рекурсивно (включая подпапки) с полем - `file.webkitRelativePath`. Имя добавляемого файла = `webkitRelativePath` - (структура папок сохраняется до итогового ZIP, как у архива сохраняется - внутренний `e.name`). -- Обработка — та же логика, что у раскрытия ZIP (`listZipFiles`): - - `.zip` → рекурсивное раскрытие (вложенные zip тоже); - - документы `.pdf .doc .docx .txt .md` → в таблицу; - - прочее (картинки и т.п.) → пропускается. -- Сортировка входящих файлов по `webkitRelativePath` — детерминированный порядок. - -## Файлы -- `site/templates/index.html` - - CSS: `.folder-btn` (полная ширина), `#folderInput { display:none }` - - HTML: скрытый `#folderInput` + кнопка в `.file-input-wrap` - - JS: `const folderInput`, обработчик `change` (рекурсия+фильтр+имена с путями) - - `resetAll()` и `load` — сброс `folderInput.value` -- `site/app.py` — VERSION 0.0.46 → 0.0.47 - -## Бэкенд — не менялся -- `extract_text` (drhider/extractor.py:204) берёт расширение через - `os.path.splitext` — пути в имени не мешают. -- `build_zip` (drhider/builder.py) пишет `ZipInfo` с путями как есть; - `_resolve_name` дедуплицирует по полному имени — одноимённые файлы в разных - подпапках не сталкиваются. -- Аплоад идёт из массива `sf` (`uploadFiles`), а не из `fi.files` — файлы из - папки уходят на бэк обычным путём. - -## Проверка -1. «Выбрать папку» → папка с подпапками, вложенными .zip и картинками → - в таблице только документы, рекурсивно; .zip раскрыт; картинки пропущены; - имена с путями. -2. Обфускация → скачать ZIP → вложенность папок сохранена, всё обфусцировано. -3. Регрессия: обычный «Выбрать файлы» работает как раньше. diff --git a/site/app.py b/site/app.py index 6e72dc4..8523028 100644 --- a/site/app.py +++ b/site/app.py @@ -20,7 +20,7 @@ if _sys_path_root not in sys.path: sys.path.insert(0, _sys_path_root) # Версия приложения (меняется при изменениях) -VERSION = "0.0.47" +VERSION = "0.0.46" def create_app(): diff --git a/site/templates/index.html b/site/templates/index.html index a59d98e..1aa780e 100644 --- a/site/templates/index.html +++ b/site/templates/index.html @@ -44,8 +44,6 @@ .sub { font-size: 12px; color: var(--muted); margin-bottom: 10px; line-height: 1.5; } .file-input-wrap { margin-bottom: 10px; } .file-input-wrap input[type="file"] { width: 100%; font-size: 13px; } - .folder-btn { margin-top: 6px; width: 100%; } - #folderInput { display: none; } .table-wrap { border: 1px solid var(--brand-gray); border-radius: 8px; overflow: hidden; } table { width: 100%; border-collapse: collapse; font-size: 13px; } th { @@ -133,8 +131,6 @@