b-dev-mobile bfa870c021 designsystem: detekt зелёный + Fd-фикс кнопок уведомления (mail/114)
- detekt --auto-correct: NoMultipleSpaces/ImportOrdering/NoUnusedImports/spacing
  по F7Colors/F7Components/F7MobileBottomBar/F7AppMenuSheet/F7Typography (был красный на main, 18)
- F7NotificationActionUi вынесен в свой файл (fix MatchingDeclarationName)
- NotificationActionButton: подпись 1.5× вместо 2× (на w360dp удвоенный кегль рвал слово
  «Присоединитьс/я»; forbion не переносит), maxLines=2, паддинги 16/9
- зазор subject↔message 6→10dp (сливались на 360dp)

Модуль detekt+compile green.
2026-07-13 10:37:57 +00:00

F7cloud Mobile (native)

Нативное Android-приложение F7cloud на Kotlin + Jetpack Compose.

Лицензия

Приложение распространяется под GPL-3.0-or-later (см. LICENSE). Причина: в сборку линкуется код, производный от Nextcloud Talk for Android (GPL-3.0-or-later, каталог vendor/talk-android/), поэтому объединённая работа — тоже под GPL. Исходный код каждой распространяемой сборки предоставляется по тегу релиза в Gitea (обязательство corresponding source, GPLv3 §6). Сторонние компоненты и их лицензии — NOTICE.md.

Параметр Значение
applicationId ru.forbion.f7cloud.mobile
minSdk 26
compileSdk / targetSdk 36
Gradle 9.3.0
AGP 8.13.2
Kotlin 2.3.0
Модули app, core (auth, network, designsystem, push), feature (widgets, files, talk, mail, …)

Сборка APK

С v0.5.27 используется собственный Gradle wrapper в этом каталоге (Gradle 9.3, AGP 8.13, Kotlin 2.3):

cd /var/www/f7cloud/f7cloud-mobile
./gradlew assembleDebug
chown www-data:www-data app/build/outputs/apk/debug/*.apk

Старый способ через android-webview (Gradle 8.7) больше не поддерживается — там AGP 8.2, несовместим с Kotlin 2.3.

Release:

./gradlew assembleRelease

APK с версией в имени:

app/build/outputs/apk/debug/f7cloud-mobile-v{versionName}-{versionCode}-debug.apk

Структура навигации

Мобильный UI повторяет мобильную версию сайта (тема forbion):

  • нижняя панель: Talk, Профиль, Уведомления, Создать, Меню;
  • меню приложений — bottom sheet со списком модулей;
  • стартовый экран после входа — Главная (виджеты / Dashboard).

Модуль «Файлы»

  • Список папок и файлов через WebDAV PROPFIND (oc:fileid для идентификации).
  • Навигация по папкам, кнопка «Назад».

Word / Excel / PowerPoint (Richdocuments)

Office-документы открываются в Collabora Online через Richdocuments:

  1. По fileId (WebDAV или ссылка /f/{id} с виджетов) → Direct Editing API: POST /ocs/v2.php/apps/richdocuments/api/v1/document.
  2. Полноэкранный WebView (OfficeEditorActivity) с:
    • RichDocumentsMobileInterface (см. apps/richdocuments/docs/mobile_flow.md на сервере) — скрывает оболочку F7cloud;
    • desktop User-Agent — полная панель инструментов Collabora;
    • поддержка iframe Collabora (coll.f7cloud.ru).

Где работает: модуль Файлы и виджет Рекомендации на Главной (клик по .docx / .xlsx).

Поддерживаемые расширения: см. OfficeFiles.kt.

Требования на сервере: richdocuments + Collabora (у вас: https://coll.f7cloud.ru).

Модуль «Главная» (Widgets)

Данные с Dashboard API F7cloud:

Endpoint Назначение
/ocs/v2.php/apps/dashboard/api/v1/widgets метаданные виджетов
/ocs/v2.php/apps/dashboard/api/v3/layout порядок виджетов пользователя
/ocs/v2.php/apps/dashboard/api/v2/widget-items элементы (Talk, Mail, Calendar)
/ocs/v2.php/apps/dashboard/api/v1/widget-items?widgets[]=recommendations блок «Рекомендации»

Запросы выполняются параллельно (WidgetsRepository, с v0.5.4).

Производительность

Клиент (приложение)

Версия Изменение
≤ 0.5.3 4 последовательных запроса → до ~30 с
≥ 0.5.4 параллельные запросы, layout с таймаутом 2 с, v1 только для recommendations → ~24 с

Сервер

Перед релизом или при жалобах на медленную «Главную» проверьте сервер:

docs/SERVER-PERFORMANCE.md

Кратко для forbion.f7cloud.ru (2026-05-30):

  • OPcache включён (FPM: 256 MB, 100k файлов)
  • Redis + APCu для кеша F7cloud
  • PHP-FPM: min 18 spare workers, старт 30

Первый API-запрос после простоя сервера может занимать 15–20 с — это холодный bootstrap PHP/F7cloud, не ошибка приложения.

Авторизация

  • Используется тот же пароль, что и для веб-входа (или пароль приложения при 2FA).
  • OCS /ocs/v2.php/cloud/user — проверка и получение davUserId для WebDAV.

Связанные проекты

S
Description
No description provided
Readme GPL-3.0 10 MiB
Languages
Kotlin 99.4%
JavaScript 0.5%