Commit Graph

23 Commits

Author SHA1 Message Date
b-dev-mobile cfa9fe2ffd security: FLAG_SECURE на экранах входа и PIN (аудит п.3)
Новый эффект F7SecureScreen(): пока экран на виду — окно с FLAG_SECURE
(нет в скриншотах/recents/записи экрана), снимается при уходе. Повешен на
LoginScreen (ввод пароля), AppLockUnlockScreen (разблокировка PIN) и
AppLockSetupDialog (создание PIN). Закрывает хвост Этапа 0 п.3.
2026-07-09 02:50:57 +00:00
b-dev-mobile e25dcbc403 build: версия 0.5.122 (130) — убраны чат-кнопка и обновление в Конференциях 2026-07-08 17:45:54 +00:00
b-dev-mobile 6f82a3fc56 build: версия 0.5.121 (129) — без зелёной подложки в панели 2026-07-08 17:39:50 +00:00
b-dev-mobile 58d56feb76 build: версия 0.5.120 (128) — крупные иконки разделов в панели 2026-07-08 17:33:21 +00:00
b-dev-mobile 8186031676 build: версия 0.5.119 (127) — без чекбокса сертификата на входе 2026-07-08 16:53:03 +00:00
b-dev-mobile 9e5a16a605 login: убран чекбокс «Доверять сертификату» с экрана входа
Раньше он показывался только в debug (в release скрыт), теперь убран
совсем. trustAllCerts остаётся false по умолчанию (безопасно); trust-all
на уровне сети/WebView и так отключён в release (UnsafeSsl).
2026-07-08 16:48:02 +00:00
b-dev-mobile b56c9a5998 build: release на боевом ключе владельца, версия 0.5.118 (126)
Первая release-сборка подписана ключом владельца (не debug) — убирает
предупреждение Play Защиты. + иконки нижней панели 24→34dp.
2026-07-08 16:37:41 +00:00
b-dev-mobile 3824ad86f2 build: версия 0.5.116(124) → 0.5.117(125) под ревью-сборку
Накоплено: нижняя навигац.панель + кнопки создания, меню (пол-экрана/
3 колонки/состав по дизайну), нативная панель профиля, нижний inset,
фикс ширины писем.
2026-07-08 15:39:25 +00:00
b-dev-mobile 89e32d2875 bottombar: навигационная панель по дизайну «Новое меню»
Панель стала единой навигационной: слева назад (в Конференциях — чаты),
далее ярлыки-разделы Почта · Карточки · Конференции (активный подсвечен),
справа выдвижное меню. Профиль/Уведомления/Настройки/Создать убраны из
панели (Профиль/Уведомления/Настройки — в выдвижном меню; бейдж
уведомлений перенесён на кнопку меню).

Создание раньше вызывалось ТОЛЬКО из панели → чтобы не потерять:
- новый общий компонент F7CreateButton (зелёный круг «+»);
- добавлен в шапку Файлов (→ меню создания) и Контактов (→ добавить контакт).
Задачи/Поддержка уже имели свои кнопки; Почта — «+» в шапке.

F7BottomBarConfig упрощён (единый layout), F7MobileBottomBar получил
слоты SectionMail/SectionCards/SectionConferences + activeTabKey.
2026-07-08 15:26:24 +00:00
b-dev-mobile a30af98a8d menu: состав пунктов точно по дизайну (+Уведомления/Настройки)
По дизайну выдвижного меню: Файлы/Календарь/Контакты/Карточки/Заметки +
Bitrix/1C/Личный кабинет + Уведомления/Настройки. Убраны Почта/Конференции/
Задачи/Поддержка (остаются в нижней панели).
- F7AppMenuItem: опц. localIcon (ImageVector); нативные пункты рисуются в
  круглом бейдже с зелёной обводкой (стиль glass) вместо серверной SVG;
- Уведомления → NotificationsSheet, Настройки → настройки активного таба,
  обработка по label в AppScaffold.onItemClick.
2026-07-08 13:18:45 +00:00
b-dev-mobile 3d9f3819d9 profile: нативная панель профиля вместо веб-ЛК forbion
«Личный кабинет» открывал внешнюю веб-ссылку → десктопный дропдаун
forbion, криво на мобильном. Теперь пункт открывает нативную панель
(ProfileSheet, bottom-card F7FloatingPanel):
- шапка: аватар-инициал + отображаемое имя (тянется из OCS cloud/user)
  + «Открыть профиль» (deep-link /u/<id>) + кнопка QR-скана браузера;
- пункты: Установить статус / Личные настройки / Учётные записи
  (deep-link в веб-настройки), О программе и что нового (нативный
  About-диалог с версией), Выйти (нативный logout, красный).
Material-иконки (extended уже в app). Точки входа: пункт меню
«Личный кабинет» + кнопка профиля в нижней панели. Компилируется.
2026-07-08 12:45:35 +00:00
b-dev-mobile 530663754a menu: лончер приложений → bottom-sheet на пол-экрана (v0.5.116/124)
F7AppMenuSheet был fillMaxSize с непрозрачным фоном (закрывал весь экран).
Теперь выезжает снизу и занимает ~пол-экрана: якорь BottomCenter,
fillMaxHeight(0.6f), скруглённый верх 20dp + тень, ручка-хендл, лёгкий
скрим над листом (тап закрывает), зазор под нижнюю панель, сетка иконок
скроллится. Экран под меню виден сверху. Бамп версии 0.5.115→0.5.116.
2026-07-08 12:14:36 +00:00
b-dev-mobile 8cee4d61bf build: бамп версии 0.5.114(122) → 0.5.115(123) под дизайн-веху
Стиль проекта: патч в третьем числе +1, versionCode +1. Дизайн-ревью-
сборки теперь несут отдельную версию, а не WIP-линию 0.5.114.
2026-07-08 10:51:50 +00:00
b-dev-mobile fd96ca89e6 Этап 1: version catalog (libs.versions.toml) — устранён дрейф версий
CI / verify (push) Has been cancelled
CI / release (push) Has been cancelled
- gradle/libs.versions.toml: единый источник версий (Gradle 9.3 авто-подхват).
- 15 module build.gradle мигрированы на libs.* (скриптом, регекс по group:name).
- Устранён дрейф: coroutines 1.8.1/1.10.1→1.10.1, coil 2.6.0/2.7.0→2.7.0,
  lifecycle 2.8.1/2.8.7→2.8.7, activity-compose 1.9.0/1.10.1→1.10.1,
  core-ktx 1.13.1/1.15.0→1.15.0. Firebase в core/push → bom (был explicit 24.0.1).
- Compose BOM в каталоге вместо дубля в каждом модуле.

Проверено: assembleRelease BUILD SUCCESSFUL, APK 53 МБ.
2026-07-07 23:53:30 +00:00
b-dev-mobile ac438269c5 Этап 1: detekt (статанализ + ktlint-форматирование) с baseline
CI / verify (push) Has been cancelled
CI / release (push) Has been cancelled
- detekt 1.23.8 применён ко всем НАШИМ модулям (vendor-форк исключён),
  +formatting-ruleset (обёртка ktlint). Совместим с Kotlin 2.3 (проверено).
- config/detekt/detekt.yml — настройки под наш код (LongMethod 120, MaxLine 140,
  MagicNumber off — dp/цвета отдельно, FunctionNaming off — @Composable Заглавные).
- detekt-baseline.xml по модулям: ~403 текущих замечаний зафиксированы →
  detekt зелёный, дальше ловит только НОВЫЕ. detekt в CI (ci.yml verify).

Проверено: detektBaseline + detekt BUILD SUCCESSFUL.
2026-07-07 23:36:40 +00:00
b-dev-mobile ab8fa70e51 Этап 1: единый OkHttpClient ч.2 — 401 централизован через interceptor
CI / verify (push) Has been cancelled
CI / release (push) Has been cancelled
- UnauthorizedInterceptor (401→UnauthorizedException) в NetworkFactory,
  флаг throwOnUnauthorized (по умолчанию true).
- Удалены 75 ручных проверок if(code==401) throw в 16 репозиториях.
- AuthVerifier (login-верификация) исключён: throwOnUnauthorized=false —
  401 = 'неверный пароль' со своим сообщением, не session-expired.
- Побочно: 401 теперь ловится единообразно ВЕЗДЕ (включая пути, что раньше
  забывали проверку).
- +3 MockWebServer-теста (401 бросает; 200/403 проходят) — всего 18 тестов.

Проверено: 18 тестов зелёные + assembleRelease BUILD SUCCESSFUL, APK 53 МБ.
2026-07-07 23:29:49 +00:00
b-dev-mobile c45ebd8d49 Этап 1: единый OkHttpClient (переиспользование пула/кэша) — ч.1
CI / verify (push) Has been cancelled
CI / release (push) Has been cancelled
Раньше NetworkFactory создавал новый OkHttpClient на КАЖДЫЙ запрос (~32 места):
TLS-handshake + новый пул/диспатчер на запрос + утечка ExecutorService.
Теперь: один базовый клиент (общий ConnectionPool/Dispatcher + диск-кэш 20МБ),
авторизованные варианты через base.newBuilder() (шарят пул/кэш), кэшируются по
кредам+таймаутам. Публичный API НЕ менялся — 32 вызова не тронуты.
Init диск-кэша в F7MobileApp.onCreate.

+3 unit-теста (переиспользование клиента, общий пул). 401→interceptor НЕ делал
(меняет семантику исключений — отдельный шаг).

Проверено: 15 тестов зелёные + assembleRelease BUILD SUCCESSFUL, APK 53 МБ.
2026-07-07 23:14:20 +00:00
b-dev-mobile d9cacb8c9c build: debug — все ABI (x86 для BlueStacks/эмуляторов), release — ARM-only
CI / verify (push) Has been cancelled
CI / release (push) Has been cancelled
ABI задаются побилдтипово: debug включает x86/x86_64 → нативно на эмуляторах
(BlueStacks) и на ARM-девайсах для тестирования; release остаётся arm64+armeabi-v7a
(компактный прод). Проверено: debug-APK содержит все 4 ABI.
2026-07-07 22:50:49 +00:00
b-dev-mobile 51fd1bf936 Этап 0 п.3: безопасность-минимум (trust-all off в release, шифрование пароля, allowBackup, ревокация)
1. trust-all TLS отключён в release: гейт if(!BuildConfig.DEBUG) в UnsafeSsl +
   OfficeWebViewClient + TalkCallActivity; чекбокс скрыт в release. buildConfig
   включён в core:network и feature:talk.
2. allowBackup=false (tools:replace поверх vendor true).
3. app password шифруется в покое AndroidKeystore AES-256-GCM (KeystoreCrypto),
   AuthStore мигрирует legacy-plaintext при первом load. Биометрия — отдельная
   задача (ломает фоновые push/звонки, нужен кэш в памяти).
4. Ревокация app password при logout (AppPasswordRevoker, DELETE core/apppassword,
   best-effort).

Проверено: assembleRelease 53 МБ, подпись v2+v3, allowBackup=false в манифесте OK.
2026-07-07 19:51:23 +00:00
b-dev-mobile c259936e82 Этап 0 п.2: универсальный APK 99→53 МБ (abiFilters ARM + resConfigs ru,en)
- defaultConfig.ndk.abiFilters 'arm64-v8a','armeabi-v7a' — без эмуляторных x86/x86_64
- resourceConfigurations += ['ru','en'] — срез ~48 локалей vendor до нужных
- проверено сборкой: assembleRelease 53 МБ, ABI только ARM, подпись v2+v3 OK
- renderscriptSupportModeEnabled в vendor НЕ трогал (риск blur, отдельный пункт)
2026-07-07 17:55:14 +00:00
b-dev-mobile 67cc851b15 Этап 0 п.1: release собираем и подписан (signingConfig из env + R8-правила)
- signingConfig.release читает F7_KEYSTORE_FILE/PASSWORD, F7_KEY_ALIAS/PASSWORD
  из env или -P; фолбэк на debug-подпись если не заданы. Схемы v2+v3.
- R8: app/proguard-rules.pro (kotlinx.serialization, Firebase, JS-мосты, Coil);
  vendor consumer-rules.pro через consumerProguardFiles (WebRTC/LoganSquare/Dagger/
  RxJava/Parceler/EventBus + dontwarn geogson/joda из missing_rules.txt).
- Проверено на инфре B (JDK 21 + Android SDK 36): assembleRelease BUILD SUCCESSFUL,
  подписанный APK 99 МБ (было ~130 debug), apksigner verify v2+v3 OK.
- Доки: docs/RELEASE-SIGNING.md, docs/AUDIT-2026-07-07.md.
2026-07-07 13:17:20 +00:00
b-dev-mobile 6a07f1f40a v0.5.114: убраны зашитые касания боевых хостов ячейки A (mail/035)
- дефолт-URL экрана входа -> BuildConfig.DEFAULT_SERVER_URL (-Pf7DefaultServerUrl, по умолчанию пусто)
- TalkHelper: preconnect только к origin сессии, хардкод hpb-prod.f7cloud.ru удалён
- AuthErrors: нейтральный пример адреса сервера
2026-07-07 10:04:11 +00:00
F7cloud Mobile fd17df80a8 Initial import of f7cloud-mobile native Android app.
Kotlin/Compose client for F7cloud (mail, files, talk, calendar, contacts, tasks, support).
Current version: 0.5.113 (build 121).
2026-07-07 12:05:18 +03:00