- Шторка: КАЖДАЯ иконка теперь в белом круге с рамкой и мягкой тенью,
все одного размера (глиф внутри 56% рамки) — как на мобильном сайте
(было: плоские глифы без рамки, разного размера).
- Задачи грузятся быстрее: TasksCache (в памяти на время процесса) —
списки и задачи по спискам показываются мгновенно из кэша при
повторном открытии раздела/списка, сеть обновляет в фоне. Гонки
учтены: результат применяется, только если пользователь ещё на этом
списке.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
По разметке сайта (layout.user.php):
- Добавлены пункты «Поддержка» (AppTab.Support, icon-header-f7support)
после Заметок и «Личный кабинет» (открывает нативную ProfileSheet,
lk-header-icon) перед Уведомлениями — их не хватало.
- Иконки внешних сайтов (Bitrix/1C) строились из имени файла как есть →
битая ссылка → глобус. Теперь путь /index.php/apps/external/img/{icon},
как на сайте.
- Coil: добавлен Basic-auth интерсептор для хоста сервера — серверные
картинки (иконки external и пр.) требуют логина, без него был 401.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Нижняя панель (по layout.user.php сайта): средняя кнопка = ЗАДАЧИ
(была Карточки) — по решению владельца «как на сайте»; иконки из
набора mobile-*-icon (плоский конверт mobile-mail-icon вместо
конверта-с-@, mobile-tasks-icon, mobile-spreed-icon вебкамера,
mobile-burger-icon), локально/офлайн; размеры 25dp (app-link) как
на сайте, стрелка «назад» 18dp. Карточки остаются в шторке-меню.
Deck: loadBoardDetail больше не рушится, если GET /boards/{id}
(метки/права) не отвечает — стеки грузятся всё равно (вероятная
причина «доска не открывается» на устройстве). Заголовок/метки/права
подставляются best-effort.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Косяк: оба меню расходились с боевым forbion (_header.css).
Шторка (.app-menu--mobile): убраны скругление верха и ручка-хендл
(в живом их нет), высота — по контенту почти на весь экран (была
½ экрана), нижний отступ 90 под панель, сетка 3 кол. с gap 8 (было 20),
фон #FBFBFB. Иконки-glass теперь ЛОКАЛЬНЫЕ (assets/menu/, офлайн);
Уведомления/Настройки — фирменные mobile-*-glass вместо Material-иконок
в круге.
Нижняя панель (.header__mobile-bottom): фикс. пилюля 328×61, паддинг 3,
кнопки 55 с фоном #FBFBFB и рамкой #E6E6E6 (была градиентная), раскладка
space-between; ВОЗВРАЩЕНА подсветка активного — текущий раздел и открытый
бургер красятся полупрозрачным зелёным градиентом 104° (как в forbion).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Живой мобильный CSS сервера (themes/forbion, _base.css) — теперь источник
истины (решение владельца «копировать один в один»): Error #D74642,
ErrorText #D42722, ErrorBg #FFE2E2. Базовый Red #FF7A66 брендбука
сохранён для тегов.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Новый F7ErrorState: центрированная иконка + сообщение + «Повторить»
вместо россыпи красного текста. F7ModuleScreen при ошибке без данных
показывает его (+ новый onErrorRetry — retry без хедер-кнопки ↻).
Подключено: Контакты/Конференции/Карточки/Поддержка (через F7ModuleScreen),
Файлы (onErrorRetry=refreshCurrent), Почта (пустой список + ошибка →
F7ErrorState, убран верхний баннер-текст). Retry везде дергает load/refresh.
Новый эффект F7SecureScreen(): пока экран на виду — окно с FLAG_SECURE
(нет в скриншотах/recents/записи экрана), снимается при уходе. Повешен на
LoginScreen (ввод пароля), AppLockUnlockScreen (разблокировка PIN) и
AppLockSetupDialog (создание PIN). Закрывает хвост Этапа 0 п.3.
- Нижняя панель: слева всегда «назад» (кнопки чатов больше нет; в
Конференциях раньше был чат-слот) — единый layout во всех разделах.
- Экран Конференций: убран onRefresh у F7ModuleScreen → нет кнопки ↻
сверху справа (список грузится при открытии и по push).
Фон кнопок всегда нейтральный (0x99FFFFFF); убраны highlight-подложка,
BottomBarHighlightBrush и параметр highlighted слота. Зелёные варианты
иконок чатов/бургера (при открытии) — это иконка, остаются.
У серверных SVG (mail-/deck-/spreed-header-icon) внутренний «воздух»,
поэтому глиф оставался мелким. Отдельный размер BottomBarSectionIconSize=46dp
для Почты/Карточек/Конференций (стрелка/бургер — прежние 34dp).
Панель стала единой навигационной: слева назад (в Конференциях — чаты),
далее ярлыки-разделы Почта · Карточки · Конференции (активный подсвечен),
справа выдвижное меню. Профиль/Уведомления/Настройки/Создать убраны из
панели (Профиль/Уведомления/Настройки — в выдвижном меню; бейдж
уведомлений перенесён на кнопку меню).
Создание раньше вызывалось ТОЛЬКО из панели → чтобы не потерять:
- новый общий компонент F7CreateButton (зелёный круг «+»);
- добавлен в шапку Файлов (→ меню создания) и Контактов (→ добавить контакт).
Задачи/Поддержка уже имели свои кнопки; Почта — «+» в шапке.
F7BottomBarConfig упрощён (единый layout), F7MobileBottomBar получил
слоты SectionMail/SectionCards/SectionConferences + activeTabKey.
Дизайн выдвижного меню — 3 колонки (было 4), иконки-бейджи *-glass.svg
уже совпадают со стилем. Ячейка стала кликабельной целиком (clip+ripple),
подпись использует ширину ячейки (Личный кабинет/Уведомления не дробятся).
Edge-to-edge (targetSdk 36): контент был full-bleed без нижнего inset →
уезжал под системные 3 кнопки/жест-панель (плавающая нижняя панель свой
navigationBarsPadding имела, а контент — нет). Добавил f7SafeBottomInsets
к контенту в F7AppScaffold (верх уже был через f7SafeTopInsets).
F7AppMenuSheet был fillMaxSize с непрозрачным фоном (закрывал весь экран).
Теперь выезжает снизу и занимает ~пол-экрана: якорь BottomCenter,
fillMaxHeight(0.6f), скруглённый верх 20dp + тень, ручка-хендл, лёгкий
скрим над листом (тап закрывает), зазор под нижнюю панель, сетка иконок
скроллится. Экран под меню виден сверху. Бамп версии 0.5.115→0.5.116.
- 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.