Commit Graph

200 Commits

Author SHA1 Message Date
b-dev-mobile 9efb3595c0 docs(app-map): конвенция эталонных веб-скринов forbion для Fd (360dp, iframe-техника, приватность) 2026-07-13 09:32:13 +00:00
b-mob-notify fa48569dc1 docs(app-map): notifications diff/STATUS — P2-push retry DONE, unregister блокирован f7push-эндпоинтом (mail/110) 2026-07-13 09:29:17 +00:00
b-mob-notify a6bda894b0 push(core): P2 retry/бэкофф регистрации устройства (транзиентные сбои/5xx/408/429) + фикс detekt ArgumentListWrapping в F7IncomingCallQueue 2026-07-13 09:28:30 +00:00
b-dev-mobile 1acc604bd5 test(designsystem): Roborazzi render 360dp (Figma-фрейм), не 390 — эталон пересnят 2026-07-13 09:22:06 +00:00
b-dev-mobile 333026143b test(designsystem): Roborazzi screenshot-каркас — рендер Compose в PNG на JVM (Fd-сверка без эмулятора)
Пилот: F7PrimaryButton/F7SecondaryButton рендерятся в PNG (390dp xxhdpi) через
Robolectric+Roborazzi, recordRoborazziDebug зелёный. Основа автономного Fd-прохода:
экран → PNG → сравнение с веб-мобильной forbion. Роли добавляют тесты на свои экраны.
2026-07-13 09:19:32 +00:00
b-mob-contacts cc602abc0d docs(app-map): P2 шаг1 типы TEL/EMAIL отражён в diff/STATUS (a8741e9) 2026-07-13 08:58:52 +00:00
b-mob-contacts a8741e982c feat(contacts): P2 шаг1 — типы TEL/EMAIL (парсинг из raw, подписи в карточке, сохранение при правке) +4 теста 2026-07-13 08:57:34 +00:00
b-mob-deck 559a35aeb3 app-map: deck.diff — бейдж чек-пунктов [done] (Ff_app 25.3%), STATUS 2026-07-13 08:48:46 +00:00
b-mob-deck eff3f1c843 feat(deck): бейдж чек-пунктов «☑ x/total» на карточке (P1 diff — CardBadges)
deckChecklistCounts парсит чекбоксы описания (regex как веб). Green compile+detekt.
2026-07-13 08:47:25 +00:00
b-mob-notify c31adb5692 app-map: notifications.diff.md (Ff 45.5%, iter1) + строка STATUS — снимаю гейт сборки 2026-07-13 08:46:57 +00:00
b-mob-deck a4a3ff1717 app-map: deck.diff — быстрые опции срока [done] (Ff_app 24.8%), STATUS 2026-07-13 08:11:48 +00:00
b-mob-deck d0bf3590d1 feat(deck): быстрые опции срока (Сегодня/Завтра/Выходные/Неделя) в карточке (P1 diff)
DeckDueChip + deckQuickDueIso (полночь UTC, как пикер). Green compile+detekt (без новых замечаний).
2026-07-13 08:10:19 +00:00
b-dev-mobile e6570c008e chore(core:network): refresh detekt-baseline — амнистия смеллов из пакета v0.5.144 (CalDavClient free-busy/shares, NextcloudWebSession); мой легаси-долг, не calendar/contacts 2026-07-13 08:06:41 +00:00
b-dev-mobile ddd9fd2a33 feat(app): нативный экран Заметок в оболочке (регистрация по пингу b-mob-notes mail/104)
AppTab.Notes + пункт шторки «Заметки» → NotesScreen (было веб-ссылка /apps/notes/).
Проверено компиляцией :app в чистом worktree origin/main.
2026-07-13 08:02:35 +00:00
b-mob-contacts 09b091af01 docs(app-map): P1 edit/delete закрыт в коде — Ff 31.2→37.4% (Э3 Править/Удалить, Э4 форма done) 2026-07-13 08:01:58 +00:00
b-mob-deck 2567273843 app-map: deck.diff — меню колонки Переименовать/Удалить [done] (Ff_app 24.1%), STATUS 2026-07-13 08:00:47 +00:00
b-mob-deck 4fdadef16b deck: вынос DeckStackDialogs (под LongMethod) + refresh detekt-baseline модуля (v0.5.144-долг, как calendar e7d0a5a) — detekt GREEN 2026-07-13 07:59:20 +00:00
b-mob-contacts 6b98c5a0ba feat(contacts): P1 шаг 2/2 — правка/удаление в UI (Room v4→5 href/etag/raw, форма, delete-подтверждение) 2026-07-13 07:59:00 +00:00
b-mob-deck 73762d80c5 feat(deck): меню колонки — Переименовать / Удалить список (P1 diff)
DeckRepository.renameStack/deleteStack (PUT/DELETE /stacks/{id}); VM renameStack/deleteStack;
overflow-меню (⋯) в шапке колонки → DropdownMenu; диалог переименования (префилл) +
DeckConfirmDialog для удаления. Веб-паритет меню Stack.
2026-07-13 07:53:54 +00:00
b-mob-notes e3725b7339 docs(app-map): notes.diff итер.1b — P1-UI done (Ff 42.8%), STATUS обновлён
read-only ядро собрано: список/поиск/пусто/редактор-автосейв/конфликт-диалог.
16/42 Ф в коде+UI. Fd 0% (ждёт девайс). Дальше — регистрация экрана у лида.
2026-07-13 07:48:28 +00:00
b-mob-notes fb120d5795 feat(notes): P1-UI — ViewModel + экран списка + редактор с автосейвом и диалогом конфликта
- NotesViewModel: список (избранное↑, поиск), открытие/создание/сохранение, toggle favorite,
  удаление; конфликт 412 поднимается в состояние и разрешается ЯВНЫМ выбором (Оставить мою/
  Версия сервера), не молчаливо (mail/071)
- NotesScreen: F7ModuleScreen + поиск + пусто-состояние Welcome + список F7ListCard + диалог
  конфликта (F7AlertDialog)
- NoteEditorScreen: markdown-поле (plain, rich/preview — P2), debounce-автосейв → PUT If-Match,
  read-only состояние, действия избранное/удалить/готово

Верифицировано изолированно (worktree origin/main): compileDebugKotlin + 7/7 tests + detekt OK.
Закрывает UI-часть P1 read-only ядра. Дальше — регистрация экрана у лида (app/).
2026-07-13 07:44:52 +00:00
b-mob-calendar 7be35490e4 docs(app-map): calendar.diff — P1+BYDAY done, Appointments=n-a (Ff 64.0/Fd 80.4 по 5 экранам) + STATUS 2026-07-13 07:44:34 +00:00
b-mob-calendar 492af6157e fix(calendar): BYDAY=1MO — RecurrenceRule хранит/сериализует ординал (был потерян в toRrule) + разворот n-го дня месяца в CalendarRecurrence +4 теста (P1 добивка, mail/101) 2026-07-13 07:43:19 +00:00
b-mob-conf 2819359b2b docs(app-map): talk.diff/STATUS — Переслать-в-комнату done (Ff 41.3%), меню сообщения ~закрыто 2026-07-13 07:41:08 +00:00
b-mob-deck b818032f68 app-map: deck.diff — бейдж комментариев [done] (Ff_app 23.1%), STATUS 2026-07-13 07:40:44 +00:00
b-mob-contacts af25ee8e6d docs(app-map): contacts.diff уточнён по mail/102 (Команды=n-a, Ff 31.2%) + P1 ядро landed (bc1a497) 2026-07-13 07:40:01 +00:00
b-mob-deck 9d726f4549 feat(deck): бейдж числа комментариев на карточке (P1 diff — CardBadges веба)
parseCard читает commentsCount (модель Card отдаёт), DeckCardRow показывает «💬 N».
Green compile; detekt модуля 103=103 к HEAD (без новых замечаний).
2026-07-13 07:39:50 +00:00
b-mob-conf 01198a4d14 feat(talk): меню сообщения — Переслать… в любую комнату (пикер) [P1] 2026-07-13 07:39:48 +00:00
b-mob-calendar e7d0a5a9ee feat(calendar): P1 разворот повторений — CalendarRecurrence (RRULE-оккуренции на лету) + eventOccursOnDay RRULE-осознан +11 тестов; refresh detekt-baseline (v0.5.144-долг) 2026-07-13 07:36:19 +00:00
b-mob-conf 1c1e9c89e2 docs(app-map): talk.diff/STATUS — Ответить лично done (Ff 40.7%) 2026-07-13 07:34:11 +00:00
b-mob-contacts bc1a4970ef feat(contacts): ядро P1 — updateContact/deleteContact (If-Match) + VCardEditor round-trip + 10 юнит-тестов 2026-07-13 07:34:11 +00:00
b-mob-notes f7c0c721a2 docs(app-map): notes.diff итер.1a — слой данных done (Ff 21.7%), STATUS обновлён
Скелет заведён лидом (133d80d), P1 слой данных реализован+юнит-тест (8a8f1cf):
8/42 Ф закрыты в коде (create/get/list/favorite/category/rename/delete/save-If-Match/конфликт).
Fd=0% (UI не собран). Дальше — P1-UI.
2026-07-13 07:34:06 +00:00
b-mob-deck 48ee65dd9a app-map: deck.diff — «Назначить мне/снять» [done] (Ff_app 22.6%), STATUS: P1 начат 2026-07-13 07:33:21 +00:00
b-mob-conf a60fd78a28 feat(talk): меню сообщения — Ответить лично; рефактор оверлеев (ChatContent проще) [P1] 2026-07-13 07:33:13 +00:00
b-mob-notes 8a8f1cfffb feat(notes): P1 слой данных — Notes API v1 клиент + репозиторий + ETag-кэш + модель
- NotesApiClient: публичный /api/v1 (list exclude=content + If-None-Match, get, create,
  saveContent с If-Match→412 NoteConflictException, setFavorite/Category/rename, delete)
- NotesRepository: сессия→клиент→кэш, offline-first список (304/сеть → кэш)
- NotesCache: дисковый ETag-кэш списка (образец CalendarEventsCache)
- Note модель + разбор JSON; NoteConflictException (явный выбор, не молчаливая перезапись)
- NotesApiClientTest: 7 юнит-тестов через MockWebServer (пишущее — юнитами, не forbion; mail/073)

Верифицировано изолированно (worktree на чистом HEAD): compileDebugKotlin + 7/7 tests + detekt OK.
Закрывает часть P1 notes.diff.md (слой данных). mail/096/093, план mail/071.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 07:31:00 +00:00
b-mob-deck 6eeba1bba2 feat(deck): назначить/снять себя на карточке (P1 diff — исполнители были read-only)
DeckRepository.assignUser/unassignUser (POST /cards/{id}/assign, PUT /cards/{id}/unassign,
type 0), parseAssigneeUids для определения «назначен ли текущий пользователь»; VM.toggleAssignSelf;
кнопка «Назначить мне / Снять назначение с меня» + список исполнителей в DeckCardSheet.
Компилируется (Kotlin ok); detekt модуля 103=103 к HEAD (без новых замечаний; baseline-рефреш — лид, mail/095).
2026-07-13 07:28:46 +00:00
b-mob-calendar 22bd16c455 docs(app-map): calendar.diff.md итер.1 (Ff 51.6/Fd 67.0 из кода) + карта синхронизирована (v0.5.144 закрыл виды/корзину/незапл.задачи/приглашения) + STATUS 2026-07-13 07:19:38 +00:00
b-dev-mobile 133d80d98a feat(notes): скелет модуля feature/notes — регистрация по пингу b-mob-notes (mail/096)
include в settings.gradle + зависимость в app + build.gradle/manifest по образцу tasks +
placeholder NotesModule.kt. Реализация (Notes API v1) — зона b-mob-notes. Пункт меню
«Заметки» пока веб-ссылка; переключу на нативный экран по готовности read-only.
2026-07-13 07:18:11 +00:00
b-mob-contacts e8324254e5 docs(app-map): contacts.diff.md итер.1 (Ff 26.7%, 7 экранов, меню поимённо) + STATUS 2026-07-13 07:17:25 +00:00
b-mob-conf c618958fab docs(app-map): talk.diff/STATUS — Напоминание done (Ff 40.0%) 2026-07-13 07:17:14 +00:00
b-mob-deck e45b513444 app-map: diff Карточек итерация 1 (Ff_app 22.1%) + строка STATUS
Веб(deck.md/deck v1.16.4/live-сверка) ↔ натив(feature/deck). Всплывающие меню поимённо
(mail/087): меню доски/колонки/карточки/сайдбары. Метки [Ф|Д]·[open|done|n-a], Ff на экран.
Медиа-инвентарь: своих вьюеров нет, вложения — через files (P2).
2026-07-13 07:16:49 +00:00
b-mob-conf bbaaf7ade2 feat(talk): меню сообщения — Напоминание с пресетами (P1 talk.diff) 2026-07-13 07:15:40 +00:00
b-mob-notes 958e14aead docs(app-map): notes.diff.md — diff расхождений Заметок (натив пуст, Ff=Fd=0%), STATUS итер.1
Особый случай: feature/notes ещё не создан → все 42 Ф / 21 Д = open. Полный бэклог
на реализацию (план 1→2→3, mail/071). Гейт: mail/084/093.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 07:14:59 +00:00
b-mob-tasks a665342f49 docs(changelog): починил слипшуюся при merge запись DTSTART + добавил строку P1 (умные коллекции UI) 2026-07-13 06:45:03 +00:00
b-mob-conf 33f74398c6 docs(app-map): talk.diff/STATUS — P1 прогресс меню сообщения (Ff 39.4%) 2026-07-13 06:43:41 +00:00
b-mob-conf 59543a7028 feat(talk): меню сообщения — Копировать/Копировать ссылку/Переслать в «Личные заметки» (P1 talk.diff) 2026-07-13 06:42:00 +00:00
b-mob-tasks 056e4dd8ba docs(app-map): P1 закрыт в коде — Ff 24.6/Fd 52.7 (умные коллекции + 3-state видимость) 2026-07-13 06:13:41 +00:00
b-mob-tasks bd56c4bc7b feat(tasks): P1 завершён — 3-state видимость коллекций в настройках + персист
TasksPrefsStore (SharedPreferences) хранит режим Скрыта/Видима/Авто по коллекции.
TasksViewModel через Factory(context), setSmartMode персистит; шит настроек 3-state
от VM (убраны фиктивные локальные remember). Панель реагирует через visibleKeys.
Гейт compile+detekt+test зелёный.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 06:12:17 +00:00
b-mob-tasks cfeb9b3b79 docs(app-map): diff/STATUS Задач — P1 частично (умные коллекции), Ff 18.4/Fd 46.5 2026-07-13 06:02:17 +00:00
b-mob-tasks 23f7565a1a feat(tasks): P1 — умные коллекции в панели навигации (агрегат + счётчики + открытие)
TasksListNavView рисует видимые коллекции (visibleKeys по режиму+счётчику),
тап → openSmartList (агрегат всех списков, фильтр по коллекции). VM: loadAllTasks
агрегирует все списки, reloadCurrent обновляет вид после мутаций, create в коллекции
идёт в список по умолчанию. Гейт compile+detekt+test зелёный (25 юнитов).
Осталось по P1: 3-state настройки видимости + персист (SharedPreferences).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 06:00:59 +00:00