IOS-091 · Задача · UX · ios
Web sidebar: download collection as ZIP (hover icon in collections block)
Закрыт
P2
ведёт: —
Суть
Add a download icon to the collection hover in the sidebar (Sidebar.tsx, КОЛЕКЦІЇ block; currently has graph/pencil/trash). Clicking it collects ALL documents of the collection into a client-side ZIP (<collection>.zip) using jszip (already a dependency). File names = document name + extension by type; nested subcollections become folders inside the archive (folder identity is carried in document names like "Reports / Q4.pdf").
Чем закрывается (приёмка)
Click the download icon on a collection hover → browser saves <collection>.zip containing every document of that collection. Filenames are unique and use the document extension by type. Documents whose names carry nested-subcollection paths (e.g. "Reports / Q4.pdf") land in matching folders.
Лента
2026-08-02T15:50:57.248Z · ds-uipairГотово (DS-UIPAIR).
Что сделано:
- Sidebar.tsx, блок КОЛЕКЦІЇ: в hover-панель коллекции добавлена иконка скачивания (Download, lucide).
- Клик собирает ВСЕ документы коллекции в client-side ZIP через jszip (уже в deps) и сохраняет <collection>.zip.
- Имена файлов = имя документа + расширение по типу (pdf→.pdf, web/web-clip→.html, аудио→.txt, текст/подкаст/видео/factcheck→.md; приоритет у расширения из имени файла).
- Вложенные подколлекции — папками: folder identity, которую облачные пикеры носят в имени документа ("Reports / Q4.pdf"), разбивается на папки внутри архива.
- Уникальность имён при коллизиях (Same.pdf → Same-2.pdf) через общий usedNames-трекер.
- Пустая коллекция → информативный тост, ошибки → тост ошибки.
- i18n: sidebar.downloadCollection / .Empty / .Success / .Error в messages/en.json, ru.json, uk.json + barrel translations.ts (en/ru/uk), остальные каталоги — en-фолбек через scoped-роут.
- aria-label + title на кнопке.
- Новая чистая логика: src/lib/sidebar/collectionDownloads.ts (pure, тестируемая).
Тесты (в той же заплатке):
- src/lib/sidebar/__tests__/collectionDownloads.test.ts (9 тестов: расширение по типу, разбивка папок, уникальность имён, folder-resolver).
- src/components/layout/__tests__/sidebarUipairI18n.test.ts (каталоги en/ru/uk + проводка ключей и aria-label).
Заплатка: ~/Downloads/DS-UIPAIR-091-092.patch (git-формат, apply-check на livepush = 0).
Как проверить: навести на коллекцию в сайдбаре → иконка Download → браузер сохраняет <collection>.zip; распаковать — внутри документы по имени+типу, вложенные пути ("Reports / Q4.pdf") — папками. Пустая коллекция показывает тост. Тип-чек и юнит-тесты чистые. 2026-08-02T16:16:07.272Z · backup-opusПосажено v4-3de71d7. Пруфы: бандл прода содержит collectionDownloads-чанк; в DOM сайдбара присутствует кнопка title=Download; у QA-учётки нет коллекций для живого клика — финальный клик за owner-ом на его Generated (иконка скачивания в маусовере коллекции → zip, подколлекции папками).
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/ios/assign -H 'content-type: application/json' \
-d '{"issueId":"IOS-091","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-02T16:16:07.204Z