Журнал хранится как словарь path→entry, служебные пути исключены из sync.
Apply пишет файлы без записи в журнал; bootstrap не триггерит sync во время работы.
Добавил TRASH вместо DELETE для moveToTrash, компакцию журналов и отчёт об ошибках apply.
Исправил проброс ошибок upload Yandex при close, CAS lock и загрузку OAuth-токена.
Упростил совместимость sync-групп (только encInfo), поправил растягивание StorageTree при недоступных meta.
Rescan в заголовке vault, sync-кнопка только при скане релевантных vault,
блокировка UI при недоступных meta, remember/open после encrypt,
убрал … из task_progress (точки остаются в foreground-сервисе).
Remember key после encrypt, мягкий auto-open в UnlockManager,
StorageMetaLoadState без затирания meta на сетевых ошибках,
фильтр storages в YandexVault и создание .enc-meta при FileNotFound.
Яндекс: параметр fields, getOrNull, инкрементальная статистика с манифестом yandex-vault-stats.json, PATCH custom_properties без предварительного GET, touchDir с проверкой существования, дебаунс записи статистики.
UI: CircularProgressIndicator на экране хранилищ — Modifier.size вместо width, чтобы вращение было по центру кольца.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add wallenc:// URI patterns, manifest VIEW intent-filters, and NavDeepLink
with handleDeepLink from MainActivity. Move FGS notification PendingIntent
constants to WallencExternalLaunch. Theme splash/window background via
splash_screen_background in values and values-night.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Yandex Disk API (Retrofit + OkHttp), per-vault repository with DB-backed
OAuth token, YandexStorage/YandexStorageAccessor under app:/<uuid>, and a
real YandexVault bootstrap (disk quota, list storages, create/remove).
Expose vault and storage availability: vault is reachable after diskInfo;
each storage combines vault reachability with local init readiness. Map
401 to YandexDiskAuthException and mark the vault unavailable.
Add YandexAccountDao.getByVaultUuid for fresh tokens on each request.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consolidate duplicated meta-info and clear logic into BaseStorage. Promote
system file accessors and DataPage-based flows into IStorageAccessor. Use Long
for vault disk space to support cloud byte counts. Combine local and remote
storages in VaultsManager so UnlockManager sees all backends.
Yandex Disk REST integration (phase B) is deferred to a follow-up change.
Co-authored-by: Cursor <cursoragent@cursor.com>