Загрузка
Клиенты CloudDrive для установки на рабочие станции и мобильные устройства. Доступ в систему — только по приглашению администратора.
-
Windows
Версия 0.5.0-alpha.16 · обновлено 29.08.2026 10:21 UTC · 70.2 MB
Скачать CP-CloudDrive-windows.exe
MD5:
c2c8a165601a92dbf80f520901aea019Что нового
### `web-dist: исправить залипание DnD папки` **Зачем:** при перетаскивании папки в File Manager UI зависал (preparing-индикатор не пропадал, файлы не начинали загружаться). Одиночные файлы при этом загружались нормально. Проблема в `collectDroppedFiles`: `FileSystemDirectoryReader.readEntries()` вызывался в цепочке `Promise.all(...).then(() => readBatch())`, то есть между вызовами проходила микрозадача. В Chrome это приводит к повторной выдаче того же batch, что даёт бесконечный цикл. **Что:** - `web/src/utils/dropFiles.js` полностью переписан: сначала рекурсивно собираются **все** entries директории в один массив (`readAllDirectoryEntries`), и только потом обрабатываются дети (`traverseEntry`). Это исключает асинхронный разрыв между `readEntries`. - Добавлен `getFileFromEntry` с простановкой `webkitRelativePath`. - `FileController::tree` и `FileController::createFolder` — добавлено логирование старта/окончания/ошибок, чтобы диагностировать случаи, если залипание всё-таки на стороне API. - `DedupS3EngineClient` — в лог `BucketStats` добавлен `getObjectCount`, чтобы видеть счётчик объектов в `dedups3`. **Версии:** продукт → `0.5.0-alpha.16`, итерация → `266`; `app-php` → `0.5.0-alpha.15`; `web-dist` → `0.5.0-alpha.10` (внутри `web/VERSION` и `package.json`). **Как:** - `npm run build` в `web/` — OK. - `php -l` для изменённых PHP-файлов — OK.
-
Android
Версия 0.5.0-alpha.19 · обновлено 29.08.2026 10:21 UTC · 34.8 MB
Скачать CP-CloudDrive-android.apk
MD5:
47f5daf2f2e2a4fcce381e554ad77ac0Что нового
### `исправление: взаимная блокировка pumpUploads при загрузке папок` **Зачем:** при переносе папки с 1396 файлами процесс застрял: в UI «Выгрузка: 0, В обработке: 8, В очереди: 1388», новые файлы не стартовали. **Причина:** `files.js` сначала добавляет до `MAX_VISIBLE` (8) файлов в `uploads` со стадией `waiting`, а затем пытается стартовать очередной batch. `activeNotDoneFiles()` считал `waiting` активными, поэтому `maxUpload + SERVER_PROCESSING_LIMIT` (например, 1+5=6 при медленном соединении) оказывался заполнен уже добавленными waiting-файлами, и `canStart` уходил в 0 или отрицательное. `pumpUploads` никогда не вызывал `runOneUpload`, хотя все слоты были заняты ожиданием. **Что:** - `web/src/stores/files.js`: - `activeNotDoneFiles()` теперь не считает `stage === 'waiting'` активным файлом. - Это позволяет `pumpUploads` запускать `runOneUpload` для ожидающих файлов, а не мёртвую забивку слотов. **Версии:** продукт → `0.5.0-alpha.19`, итерация → `269`; `web-dist` → `0.5.0-alpha.13`. **Как:** `npm run build` в `web/` — OK.