📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Android
├ Barkfluff.Client.Android ✅15
├ core ✅1
└ gradlew ✏️1
👤 Liis17
сборка андроид клиента
📂 Android
├ Barkfluff.Client.Android ✅15
├ core ✅1
└ gradlew ✏️1
✅ Сборка успешна
📱 Android Client v0.0.119 beta
📌 Ветка:
🔗 Коммит:
👤 Автор: Liis17
📱 Android Client v0.0.119 beta
📌 Ветка:
dev🔗 Коммит:
8a33ba7274f4874f598acc3db56daa45ab57206f👤 Автор: Liis17
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.Bots ✅1 ✏️1
📂 Tests
└ BarkFluff.Bots.Tests ✅1
👤 Liis17
Bots: fan-out SessionRevokedConsumer для отзыва сессий (масштабирование)
По docs/scaling/_shared-token-revocation.md: per-instance очередь
session-revoked-bots-{InstanceId} + AutoDelete, консистентно с 8 другими
сервисами. Сегодня Bots не обслуживает user-токены — консистентность
паттерна и future-proofing.
📂 Backend
└ BarkFluff.Bots ✅1 ✏️1
📂 Tests
└ BarkFluff.Bots.Tests ✅1
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.Configuration ✅1
👤 Liis17
configuration: ключ Redis для FastAuth (ServiceId=7)
FastAuth теперь читает Configuration["Redis"] (Redis-стор QR-сессий +
pub/sub wake-up стримов, см. docs/scaling/fastauth.md), но ключ
заводился только для Messages (6), Federation (15), Onliner (9) и
Bots (14) — без записи сервис падает при старте с
'Redis configuration is missing'. Значение подставит
ConfigurationDefaultsPopulator (redis:6379).
📂 Backend
└ BarkFluff.Configuration ✅1
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.FastAuth ✅4 ✏️8 ❌3
👤 Liis17
fastauth: масштабирование — сессии в Redis + pub/sub wake-up стримов
In-memory FastAuthSessionsManager + FastAuthExpirationService не давали
поднять N инстансов: QR создан на A, подтверждение на B — TryGet вернул
null (см. docs/scaling/fastauth.md).
- IFastAuthSessionStore + RedisFastAuthSessionStore: ключ
fastauth:session:{id}, TTL = 5 мин + 30 сек slack (Expired отличим от
NotFound), финализированная сессия живёт FinalRetention=30 сек для
реконнекта; переходы Scan/Accept/Reject/Expire — Lua-скрипты
...
📂 Backend
└ BarkFluff.FastAuth ✅4 ✏️8 ❌3
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Tests
└ BarkFluff.FastAuth.Tests ✅3 ✏️6 ❌3
👤 Liis17
fastauth-тесты: fakes стора и шины, адаптация под Redis-архитектуру
- Fakes/InMemoryFastAuthSessionStore — та же машина состояний, что в
Lua-скриптах RedisFastAuthSessionStore (исполняемая спецификация
переходов): Scan/Accept/Reject/Expire атомарны под lock, захват
подписчика — SETNX-семантика с токеном владельца.
- Fakes/InMemoryFastAuthEventBus — локальная доставка событий ожидающему.
- Хендлер-тесты переведены на стор+шину; новые случаи: локальный дедлайн
пишет EXPIRED без sweeper'а, реконнект в окне FinalRetention получает
токены сразу из стора, освобождение захвата подписчика после
...
📂 Tests
└ BarkFluff.FastAuth.Tests ✅3 ✏️6 ❌3
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.Federation ✏️2
📂 Tests
└ BarkFluff.Federation.Tests ✏️1
👤 Liis17
Federation: конкурентный забор outbox через FOR UPDATE SKIP LOCKED
По docs/scaling/federation.md (вариант A): claim-then-send — батч
застолблен статусом Processing с lease (NextAttemptAt+2мин) в короткой
транзакции (raw SQL FOR UPDATE SKIP LOCKED, precedent PrekeyStorage;
LINQ-расширения в EFCore.PG 10 отсутствуют), отправка вне блокировки
строк. Reclaim возвращает застрявшие после крэша строки в Pending,
Processing-голова чата блокирует следующие события (head-of-line).
Миграция не нужна: Status хранится как int.
📂 Backend
└ BarkFluff.Federation ✏️2
📂 Tests
└ BarkFluff.Federation.Tests ✏️1
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Obsidian
└ ClaudeVault ✏️1
📂 docs
└ scaling ✏️2
👤 Liis17
docs: FastAuth масштабируем — обновлены scaling-план, README-сводка и Obsidian
- docs/scaling/fastauth.md: вердикт «МОЖЕТ (реализовано)», что сделано
(Redis-стор, Lua-переходы, pub/sub wake-up, локальный дедлайн,
глобальный захват подписчика), битый путь к образцу
SecretMessageBuffer исправлен.
- docs/scaling/README.md: FastAuth перенесён из «❌ не могут» в «✅ могут».
- Obsidian/ClaudeVault/Backend/FastAuth.md: tech stack, архитектура,
защиты, метрики (sessions_removed упразднён), конфиг с Redis.
📂 Obsidian
└ ClaudeVault ✏️1
📂 docs
└ scaling ✏️2
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.Federation ✅2 ✏️2
📂 Tests
└ BarkFluff.Federation.Tests ✅1 ✏️1
👤 Liis17
Federation: OutboxJanitor как single-runner под Redis-локом
По docs/scaling/federation.md: чистку выполняет один инстанс
(federation:lock:outbox-janitor, TTL 2ч с продлением лидером), остальные
пропускают тик. ISingleRunner как test-seam + FakeSingleRunner в тестах.
Паттерн — RedisSingleRunner из Onliner.
📂 Backend
└ BarkFluff.Federation ✅2 ✏️2
📂 Tests
└ BarkFluff.Federation.Tests ✅1 ✏️1
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.Federation ✅2 ✏️2
📂 Tests
└ BarkFluff.Federation.Tests ✅1 ✏️3
👤 Liis17
Federation: cooldown discovery-триггера в Redis (SET NX EX 300)
По docs/scaling/federation.md: DiscoveryTriggerRateLimiter был in-memory
— при N инстансах discovery одного сервера запускался с каждого. Теперь
ключ fed:discovery:{server} общий, cooldown глобальный. Интерфейс
IDiscoveryTriggerRateLimiter как test-seam, тесты на Moq-паттерне
ChatCreatedQuotaLimiterTests, фейк в тест-хостах.
📂 Backend
└ BarkFluff.Federation ✅2 ✏️2
📂 Tests
└ BarkFluff.Federation.Tests ✅1 ✏️3
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Android
└ Barkfluff.Client.Android ✏️2
👤 Liis17
android: шапка чата — блоки-чипы вместо сплошной подложки (Telegram-style)
Вместо одной полупрозрачной подложки на всю ширину chatHeaderBar теперь
три отдельных скруглённых блока (back, имя/статус, звонок/меню/аватар),
между которыми виден блюр обоев. Без обоев поведение не изменилось.
📂 Android
└ Barkfluff.Client.Android ✏️2
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.Federation ✅1 ✏️2
📂 Shared
└ BarkFluff.Shared.Queue ✅1
📂 Tests
└ BarkFluff.Federation.Tests ✅1 ✏️2
👤 Liis17
Federation: fan-out инвалидация кэшей при ротации ключа подписи
По docs/scaling/federation.md: RotateSigningKey теперь публикует
SigningKeyRotatedEvent; SigningKeyRotatedConsumer на каждом инстансе
(fan-out очередь signing-key-rotated-federation-{InstanceId}) перезагружает
ActiveSigningKeyCache и WellKnown-документ — иначе после ротации остальные
инстансы подписывают исходящие S2S-запросы старым ключом до рестарта.
📂 Backend
└ BarkFluff.Federation ✅1 ✏️2
📂 Shared
└ BarkFluff.Shared.Queue ✅1
📂 Tests
└ BarkFluff.Federation.Tests ✅1 ✏️2
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Android
└ Barkfluff.Client.Android ✏️3
👤 Liis17
android: виджет закреплённых чатов — удержание broadcast и бюджет времени
- onUpdate оборачивается в goAsync(): без него процесс мог быть убит
сразу после возврата, до отрисовки виджета корутиной.
- refreshWidget ограничен бюджетом 8 с (таймауты OkHttp в AvatarLoader
втрое больше окна broadcast); onUpdate имеет общий бюджет 9 с на цикл.
- Аватары грузятся параллельно вместо последовательной цепочки,
каждый под таймаутом 3 с с деградацией на плейсхолдер с инициалами.
- CancellationException пробрасывается отдельно от ошибок, чтобы штатная
отмена дебаунса в scheduleRefreshForChat не глоталась.
📂 Android
└ Barkfluff.Client.Android ✏️3
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.Federation ❌1
👤 Liis17
Federation: удалить старый in-memory DiscoveryTriggerRateLimiter (забытое удаление из d8602b83)
📂 Backend
└ BarkFluff.Federation ❌1
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Obsidian
└ ClaudeVault ✏️3
📂 docs
└ scaling ✏️3
👤 Liis17
docs: масштабирование Bots и Federation реализовано — обновлены scaling-планы, README-сводка и Obsidian
📂 Obsidian
└ ClaudeVault ✏️3
📂 docs
└ scaling ✏️3
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Android
└ Barkfluff.Client.Android ✏️2
👤 Liis17
android: убрать notifyDataSetChanged по messageAdapter в ChatActivity
notifyDataSetChanged помечает всю структуру невалидной: RecyclerView теряет
пул холдеров, отбрасывает анимации MessageItemAnimator и не гарантирует
позицию скролла — заметно в чате со stackFromEnd и пагинацией в обе стороны.
- loadGroupMemberInfo: блок sender info вынесен в ReceivedMessageViewHolder
.bindSenderInfo и обновляется точечно по PAYLOAD_SENDER_INFO, без
перезапуска загрузки вложений при каждом открытии группового чата.
- onResume: notifyItemRangeChanged вместо полного сброса структуры.
📂 Android
└ Barkfluff.Client.Android ✏️2
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Obsidian
└ ClaudeVault ✏️1
👤 Liis17
obsidian: Android — бюджет времени и деградация рендера виджета, отказ от notifyDataSetChanged в списке сообщений
📂 Obsidian
└ ClaudeVault ✏️1
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.FastAuth ✏️2
👤 Liis17
fix(fastauth): expire sessions when result stream reaches deadline
📂 Backend
└ BarkFluff.FastAuth ✏️2
📦 Liis17/BarkFluff [dev]
👤 Liis17
📂 Backend
└ BarkFluff.Web ✏️16
📂 Obsidian
└ ClaudeVault ✏️1
👤 Liis17
feat(web): improve keyboard accessibility for overlays
📂 Backend
└ BarkFluff.Web ✏️16
📂 Obsidian
└ ClaudeVault ✏️1
✅ Сборка успешна
🐳 BarkFluff.FastAuth
📌 Ветка:
🔗 Коммит:
👤 Автор: Liis17
🏷️ Тег:
🐳 BarkFluff.FastAuth
📌 Ветка:
dev🔗 Коммит:
20f2ebb6efa32e44b4d306d5f7ed177176ea9bfc👤 Автор: Liis17
🏷️ Тег:
docker.barkfluff.com/barkfluff-fast-auth-dev:1.0.7✅ Сборка успешна
🐳 BarkFluff.Federation
📌 Ветка:
🔗 Коммит:
👤 Автор: Liis17
🏷️ Тег:
🐳 BarkFluff.Federation
📌 Ветка:
dev🔗 Коммит:
20f2ebb6efa32e44b4d306d5f7ed177176ea9bfc👤 Автор: Liis17
🏷️ Тег:
docker.barkfluff.com/barkfluff-federation-dev:1.0.16