Release Notes — 26 квітня 2026
19 днів тому ми випустили великий реліз із діагностичним модулем і аналізом просодії. Відтоді команда внесла ще 295 змін — і вони не дрібні. У цьому релізі ви можете записати разову (ad-hoc) сесію ще до приходу пацієнта, ваші нотатки зливаються з роботою AI та транскрипцією поруч у трьох колонках, публічний профіль терапевта повертається на повну силу, а мобільний застосунок отримав темну тему. Під капотом ми пройшли етап посилення безпеки за SOC 2 / HIPAA, DDD-аудит і повну псевдонімізацію даних пацієнтів на боці AI.
💚 Дякуємо команді, яка провела цей реліз — звітами, тестами, кодом і терпінням:
- Bohdan — разові (ad-hoc) сесії, ліміти пакетів і пільговий період, DDD-аудит, інвойси KSeF, десятки виправлень (SCRUM-756, 815, 1267, 1268, 1276, 1280-1290, 1293, 1309-1316, 1353-1357, 1366, 1388, 1391, 1392)
- Bartek — тристороннє злиття, 9 окремих CBT-аналізів, когнітивні викривлення, лічильник сесій пакета (SCRUM-1266, 1320, 1338, 1368-1375, 1385, 1386)
- Ewa Cylwik / Ewa — Beck PDF, друга сесія AITS для того самого пацієнта, темна тема та порожній стан на мобільному, багатомовна розсилка, кольори інтерфейсу, унікальність email пацієнта (SCRUM-883, 898, 902, 1089, 1094, 1297, 1304, 1307, 1319)
- Joanna — повторюваний календар, приховування Zoom, своєчасне скасування, самоспостереження замість оцінки якості сесії (SCRUM-789, 874, 918, 919, 1005)
- А також Bartlomiej за когнітивні викривлення та лічильник сесій, який став основою нової моделі підписки
1. ⚡ Разові (ad-hoc) сесії — запис ще до приходу пацієнта
Якщо вам колись доводилося швидко вмикати диктофон — тому що пацієнт прийшов без попередження, тому що це разова консультація, тому що це зустріч з людиною, якої ще немає у ваших записах — новий модуль ad-hoc сесій повністю знімає цю проблему.
- Кнопка швидкого запису (Quick Record Button) у веб-панелі, у PWA на телефоні та в застосунку MAUI — один клік запускає запис ще до того, як ви заповните дані пацієнта
- AdHoc Inbox — окремий лоток для непризначених записів, поки ви не вирішите, куди їх віднести
- AssignPatientModal — призначте запис наявному пацієнту або створіть нового прямо з цього лотка
- Resume / Re-enter room — завершіть запис сесії, розпочатої раніше
- Зберігання “сиріт” + автозавершення — сесії, не призначені протягом X днів, автоматично закриваються, щоб лоток залишався охайним
- Відео “Почати без пацієнта” — у кімнаті LiveKit можна почати сесію, не конфліктуючи з наявним пацієнтом; ad-hoc-запис потім потрапляє до лотка
Розділ прихований за кодом PromptyAI в налаштуваннях — за замовчуванням вимкнений, для користувачів, які спершу хочуть побачити решту. Спроєктовано та реалізовано Bohdan.
2. 📊 Ліміти пакетів і пільговий період — прозора підписка
Підписки пройшли повний перегляд. Старі плани Starter/Standard деактивовані, їх замінили Start / Practice / Pro — розраховані під реальний обсяг сесій на місяць.
- Лічильник сесій на дашборді — видно, скільки сесій ви використали цього місяця і скільки залишилось у пакеті
- Листи про ліміт — автоматичні сповіщення при 80% і 100% використання
- Пропозиція апгрейду — при досягненні ліміту ви отримуєте м’яку пропозицію змінити план замість жорсткого блокування
- Ціни зі Stripe + знижки — ціна, яку ви бачите в застосунку, надходить безпосередньо зі Stripe із застосованими активними знижками (код бета-тестера не спливає)
- Скасування підписки в застосунку — скасування прямо в застосунку, без листа до підтримки
- 14-денний пільговий період — якщо платіж не пройшов, ви отримуєте 14 днів доступу лише до власного акаунта (без перегляду даних пацієнтів), з листами на T+0 і T+13. Реальна втрата даних настає лише за два тижні
- Банер підписки — зрозуміле повідомлення вгорі застосунку, без порожньої смуги між меню та алертом
- Симулятор ліміту сесій — у панелі PromptyAI є тестовий режим, де видно, як застосунок поводиться за повністю використаного пакета
Спільна робота Bartlomiej (лічильник і ліміти, SCRUM-1266) і Bohdan (підписка, пільговий період, пропозиція апгрейду — SCRUM-756, SCRUM-1366, SCRUM-1391, SCRUM-1392).
3. 📝 Тристороннє злиття нотаток — терапевт, AI і транскрипція в одному вигляді
Це одна з найбільших архітектурних змін під капотом, але ефект на щоденну роботу дуже помітний: кожне поле нотаток (Notes, SessionSummary, розділи концептуалізації) тепер окремо запам’ятовує, що написав терапевт, що згенерував AI і що надійшло з диктофона / транскрипції.
- Notes 3-way — вигляд нотаток показує три джерела поруч: ваш текст, пропозиції AI та автоматичну транскрипцію, а ви обираєте, що залишити
- SessionSummary 2-way + злиття JSON — у підсумку сесії ви об’єднуєте свою роботу з аналізом AI в єдиний зв’язний документ
- Розділювач за часом (timestamp) — коли ви вручну редагуєте поле AI, система залишає видимий слід того, коли і чий це фрагмент
- Мітка [AI] з першої генерації — ваші поля не змішуються зі згенерованими
- SourceBadge — кольорова плашка з іконкою, що показує джерело фрагмента, замість тексту ВЕЛИКИМИ літерами
- Заміна розділу AI замість додавання — коли ви запитуєте повторну генерацію підсумку, AI замінює розділ замість того, щоб складати під ним ще одну копію
Спроєктовано та реалізовано Bartek (SCRUM-1320, SCRUM-1368-1375). Під капотом: повна локалізація 8 мовами та нові DDD-контексти.
4. 🔍 CBT-аналізи — 9 окремих звітів за запитом
Стара монолітна функція “згенерувати CBT-аналіз” була поділена на 9 окремих пунктів, які терапевт запускає тоді, коли вони справді потрібні. Менше очікування, більше контролю.
- 9 незалежних аналізів — кожен генерується окремо, за запитом
- Шестірня редагування промпту — натисніть на шестірню поруч із кожним аналізом, щоб побачити/змінити промпт, який використовує AI
- Розділ CBT-АНАЛІЗИ за кодом PromptyAI — розділ доступний після введення коду в налаштуваннях, для користувачів, які тестують нові функції
Когнітивні викривлення отримали власний вигляд (повідомлено Bartlomiej, SCRUM-1385):
- Подання даних замість звіту AI — ви бачите конкретні цитати з транскрипції, позначені AI, а не згенероване на їх основі оповідання
- Усі цитати після розгортання — без фільтра за діапазоном дат, розгортання показує все
- Доступно в головному меню — у розділі Концептуалізація v2
Старий промпт COGNITIVE_DISTORTIONS_INVENTORY видалено (SCRUM-1386).
5. 🌐 Публічний профіль терапевта — повне оновлення з панелями редагування
Публічний профіль під брендом aitherapy.support було повністю перебудовано.
- 3 нові панелі редагування — біографія, спеціалізації, контактні дані редагуються в елегантних бічних панелях
- Режим редагування власником — під час перегляду власного профілю в авторизованому стані кнопки редагування завжди під рукою
- Роки досвіду — нове поле
YearsOfExperience, видиме в публічному профілі - Ребрендинг кольору — палітра шавлія/лаванда під брендом aitherapy.support
- Розділ “Ваша конфіденційність” прибрано — він дублював інформацію; GDPR зазначено у футері
- Іконки Lucide — сучасна, чиста типографіка іконок
Під капотом додано публічний ендпоінт GET /api/public/therapists — що повертає терапевтів з активними публічними профілями. Основа для майбутнього каталогу терапевтів.
6. 🎥 Відеосесії — PiP, зміна камер, виправлене розмиття фону
Відео отримало набір виправлень, які помітить будь-який терапевт, що проводить сесії через застосунок.
- PiP / згортання — згорніть кімнату відео в плаваючий міні-плеєр і перевірте нотатки в іншій вкладці без розриву з’єднання. Мікрофон і камера продовжують працювати
- Зміна камер — перемкніть, хто відображається в головному вікні, а хто в міні-вікні, одним кліком
- Відновлення з PiP — при поверненні зі згорнутого стану ви пропускаєте лобі (PreJoinLobby) і одразу потрапляєте в розмову
- Аудіо для кожного учасника окремо для діаризації — транскрипція розділяє тих, хто говорить, навіть у режимі PiP
- Виправлено розмиття фону — CSP блокував MediaPipe WASM; розмиття тепер працює в один клік
- Чистіший інтерфейс сесії AITS — AI-асистент зник з панелі інструментів, менше візуального шуму
- Оверлей PiP клікабельний — прибрано
pointerEvents:noneіoverflow:hidden, кнопки PiP реагують на кліки - Кнопка “Приєднатися до сесії” — була прихована перевизначенням CSS, тепер видима
- Застаріле замикання (stale closure) в handleMaximize — виправлено; розгортання з PiP більше не видає помилку
7. 📐 Концептуалізація Beck v2 та ABC — PDF, перемикач версій, редагування промпту
- Beck та ABC v2 PDF — виправлено форматування та автоматичне включення в матеріали сесії (повідомлено Ewa, SCRUM-1297)
- Beck PDF — розділи лише з рамкою, кольорові спеціалізації, охайні ініціали, SVG-стрілка між розділами
- Перемикач ABC v1/v2 у Концептуалізації v2 — виберіть, яку версію ABC відображати
- Шестірня редагування промпту в ABC v2 — змініть промпт AI на вкладці ABC v2
- Експорт у PDF для AI-аналізів і ABC за сесією — окремі аналізи експортуються окремо
- Плюралізація міток ABC 8 мовами — таблиця концептуалізації тепер має правильні форми множини
- Виправлено порожні стовпці ABC — бекенд повертає правильні назви властивостей у множині
8. 🧾 Інвойси та KSeF — вибір платежів + скінченний автомат станів
Систему виставлення рахунків перероблено для відповідності KSeF (польській національній системі електронного інвойсингу).
- Інвойс з вибраних платежів — виберіть платежі, і система створить із них єдиний рахунок (знімок + зовнішній ключ Payment)
- Точка входу “Виставити рахунок” у фінансовому розділі терапевта — швидкий доступ із дашборда
- Видалення позиції в модальному вікні виставлення рахунку — виправляйте помилки на льоту
- Розділення KSeF dev/prod — пісочниця та продакшн працюють на окремих облікових даних
- Скінченний автомат станів інвойсу (SCRUM-1357, Bohdan) — Чернетка → Виставлений → Надісланий → Скасований, з обмеженням у БД на неприпустимі переходи
- AE KsefToken — токен KSeF зашифровано через Always Encrypted
Спільна робота Bohdan (SCRUM-1357, SCRUM-1388).
9. 📅 Календар, повторювані сесії та локації
Тижневий і повторюваний календар отримав десятки невеликих, але помітних покращень — більшість із них повідомили Joanna та Ewa.
- Сесії з 22:00 — були невидимі в тижневій сітці, тепер показуються до кінця дня
- Усі години в сітці повторюваних слотів (SCRUM-874, Joanna)
- Своєчасно скасована сесія — не відображається як “Не оплачено” (SCRUM-918, Joanna)
- Мітка повторення поруч із повторюваним слотом (SCRUM-919, Joanna) — ви бачите “щотижня”, “раз на два тижні” поруч із кожною сесією, що повторюється
- Приховування інтеграції з Zoom з інтерфейсу (SCRUM-789, Joanna) — Zoom більше не підтримується як відеоканал
- Спливаюче вікно сесії в календарі — більше не ховається за межами екрана
- TherapistAvailability — автозбереження при кожній зміні (затримка 800 мс), кнопка збереження не потрібна
- AddSessionModal — опція “створити сесію поза годинами доступності” — винятки можуть примусово задати слот
- Статус “Не з’явився” (No-show) (NoShow=5) — новий статус, який можна встановити навіть із завершеної або скасованої сесії
- RecurringSessionsCalendar — підсумкові плитки над легендою та сіткою
Локації терапевта отримали канали онлайн-зустрічей для кожної локації:
- Режим на місці (onsite) — поля адреси та міста для очних локацій
- Перемикач onsite/online замість чекбокса — зрозуміліший вибір режиму
- Онлайн-канал для кожної локації — різні локації можуть мати різні канали (AITS, Google Meet, зовнішнє посилання), автоматично поширювані на сесії
- Постійні кімнати зустрічей для кожного пацієнта — у кожного пацієнта є постійне посилання на кімнату AITS та окреме зовнішнє посилання, видиме в налаштуваннях пацієнта
- Видалення локації — виправлено (зникала з БД, але залишалась у списку інтерфейсу)
І нарешті тип зустрічі в повторюваних сесіях — виправлено поширення MeetingType і MeetingLink з конфігурації повторюваної серії на кожну згенеровану сесію та на листи-нагадування (SCRUM-902, Ewa).
10. 📱 Мобільний застосунок — темна тема, AdHoc Inbox, шліфування
Мобільний застосунок перейшов на версію 1.5.0 (збірка 18) з великою кількістю змін, видимих користувачу, та кількома правками щодо підпису для App Store / Play Store.
- Темна тема — повний темний режим із читабельними заголовками груп (SCRUM-1089, Ewa + SCRUM-815)
- Налаштовувані нагадування — виберіть, коли ви хочете отримувати сповіщення про сесію
- Мобільне нагадування за 15 хвилин — нагадування за 15 хвилин до сесії + попередження, якщо системні сповіщення вимкнено (SCRUM-815, Bohdan)
- Порожній стан для списку сесій — замість порожнього екрана насиченіший онбординг (SCRUM-1094, Ewa)
- Банер автооновлення — коли застосунок виявляє оновлення, показується запрошувальний банер оновлення
- AdHoc Inbox + AssignPatient + швидкий старт у MAUI (SCRUM-1289, Bohdan)
- Швидкий старт у PWA на телефоні для разових (ad-hoc) сесій (SCRUM-1286, Bohdan)
- Адаптивний веб-вигляд для телефону — на десктопі без змін, на телефоні макет адаптується під вузький екран
- Обробник deep-link в iOS — використовує BindingContext, реєстрацію URL-схеми
- Рядки призначення NSLocation в iOS — виправлення ITMS-90683 (App Store відхиляв збірку без них)
- Android AAB — явний крок jarsigner
- Матеріали App Store Connect і Google Play — повний пакет плюс аудит WCAG 2.2
11. 🔐 Безпека: SOC 2 / HIPAA, MFA, повна псевдонімізація для AI
Під продуктовим шаром ми провели повне посилення безпеки за SOC 2 та HIPAA плюс DDD-аудит із п’ятьма конкретними результатами.
- Повторна перевірка MFA для критичних операцій — для чутливих дій (зміна пароля, експорт даних) потрібне повторне підтвердження через MFA
- Резервні коди для MFA — коди на випадок екстреної ситуації, якщо ви загубили телефон
- IAnonymizedLlmGateway (SCRUM-1353, Bohdan) — усі виклики AI-моделей тепер проходять через псевдонімізувальний шлюз. Імена, дати, місця замінюються псевдонімами до того, як покидають застосунок; AI отримує лише анонімізовану версію
- Псевдонімізація email/SMS-сповіщень (SCRUM-1354) — шаблони повідомлень також не розкривають дані пацієнта при надсиланні
- OAuth-токени Google/Zoom зашифровано через Always Encrypted (SCRUM-1355) — токени доступу інтеграцій зашифровано на рівні стовпців
- Прапорець Patient.PendingConsent (SCRUM-1356) — пацієнти без активної згоди потрапляють у потік примусового оформлення + значок на фронтенді
- Скінченний автомат станів інвойсу (SCRUM-1357) — статуси інвойсу незмінні в неприпустимих напрямках, це забезпечується на рівні БД
- Незмінність аудиту + знімок користувача у 3 таблицях аудиту — журнал дій не можна змінити постфактум
- DeanonymizationAuditLog — кожне використання даних пацієнта після деанонімізації логується разом зі знімком email і displayName користувача, який виконав цю дію
- Видалено захардкоджені секрети — усі ключі та паролі з appsettings.json перенесено до Azure Key Vault
- Always Encrypted для всіх текстових даних користувача (ADR-0018) — архітектурний напрям затверджено; решта таблиць мігрує в наступному релізі
- Аналіз прогалин відповідності ISO/IEC — зіставлено 95 прогалин за 9 стандартами з планом усунення
Підкріплено повним DDD-аудитом (сесії 1-8, фази 1-6) — реструктуризація доменних контекстів, документація архітектури, ADR, mermaid-діаграми + тести, посібники, інтеграція з Confluence.
12. 👤 Портал пацієнта — аналізи в розділі “Цілі”, матеріали, кращий попередній перегляд
- Концептуалізація Beck у вкладці “Цілі” пацієнта — коли ви публікуєте концептуалізацію, пацієнт бачить її у своєму порталі
- Публікація аналізів у портал пацієнта + налаштування сповіщень (SCRUM-1338, Bartlomiej) — контроль того, що і коли отримує пацієнт
- Попередній перегляд PDF у порталі —
iframeзамістьembed, CSP дозволяєblob:(PDF завантажуються) - Попередній перегляд порталу пацієнта з вигляду терапевта — побачити те, що бачить пацієнт (обрамлення в обгортці, дашборд 1:1)
- Матеріали сесії в Azure Blob Storage — SessionMaterial зберігається як blob, більше немає локальної файлової системи
- Розділ згод / документів + джерело реєстрації в налаштуваннях пацієнта
- Глобальна унікальність email пацієнта (SCRUM-898) — другий пацієнт із тим самим email отримує 409 і закриття модального вікна (SCRUM-898, Ewa)
- Сідер шаблонів сповіщень для SK, CA, RU, UK, LT (SCRUM-883, Joanna) — повна багатомовна розсилка
- Резолвер із відкатом до значення платформи за замовчуванням — якщо терапевт не перевизначив шаблон, надсилається багатомовний шаблон за замовчуванням (SCRUM-883)
13. 🎙️ Транскрипція — надійний запис, дозапис, реальний час із діаризацією
- Дозапис до наявної транскрипції — продовжуйте запис у тій самій сесії; сегменти дозаписуються (намір зберігається під час перезавантаження сторінки)
- Аудіо для кожного учасника окремо для діаризації — відеотранскрипція розділяє тих, хто говорить, на незалежних доріжках
- Транскрипція переживає PiP — згортання кімнати не переривває запис
- Мова транскрипції з налаштувань сесії — STT використовує мову, встановлену вами для пацієнта
- Автооновлення транскрипції при фокусі / зміні видимості / поверненні з відео
- Підтвердження при зупинці запису < 2с — захист від порожнього WAV через випадковий клік
- Значок “Надсилається” у списку сесій — видно, коли запис завантажується
- Реальний час із діаризацією у відеосесії — раніше не запускався; тепер працює
- Резервне копіювання в OPFS + Opus 48 kbps — запис також зберігається локально в OPFS як резерв, параметри аудіо уніфіковано
- Пряме завантаження аудіо через SAS (SCRUM-1276, Bohdan) — аудіо йде безпосередньо в Azure через SAS-URL, минаючи бекенд
- m4a нативно в Azure Speech — m4a обробляється нативно, без конвертації
- Визначення формату за магічними байтами (SCRUM-1311, Bohdan) — коли Content-Type=
application/octet-stream, формат визначається за вмістом файлу - Хаб без тексту в БД — realtime-хаб SignalR більше не зберігає текст у БД; finishPending використовує multipart POST, як у MAUI
- Виправлення SignalR 1006 — прибрано skipNegotiation, щоб Azure SignalR працював + налаштування keep-alive
- Мітка [AI] з першої генерації + надійний пошук мітки
14. 💬 Сповіщення, налаштування пацієнта, дрібні покращення UX
- NotificationTemplatesAdmin — перемикач HTML/Text у редакторі листів
- NotificationSettings — попередній перегляд листа відображає HTML із запасним варіантом
- PromptEditModal — перебудовано: вкладки, вибір моделі, обов’язкові назви версій
- Скидання прапорця Hide_dev_ui при виході — прапорці розробника не зберігаються між сесіями
- Тестовий пацієнт Ann Fauler — англомовний аналог польської Anna Pełnialska для демонстрацій лише англійською
- Перемикач режиму презентації в Dev UI — швидкий перехід у режим презентації
- Звіт про помилку — вкладення Jira + мітка автора звіту + центрована кнопка “Надіслати”
- Виправлено цикл оновлення авторизації (auth-refresh loop) — переривання запитів і повернення на сторінку входу при 401
- Банер “Сервер запускається” — під час холодного старту (scale-to-zero) показується повідомлення замість порожньої сторінки
- Шкала оцінки сесії — самоспостереження замість оцінки якості + застереження (SCRUM-1005, Joanna)
- Колір кнопки “Згорнути” змінено на кобальтово-фіолетовий (SCRUM-1307, Ewa)
- Колір мітки “Транскрипція” змінено з червоного на зелений (SCRUM-1304, Ewa)
- “Записати зараз” → “Записати разову (AdHoc) сесію” — точніша назва кнопки
- Пісочниця із зеленою стрічкою у верхньому лівому куті + префікс
[SANDBOX]у заголовку — щоб уникнути плутанини середовищ, плюс повторюване клонування PROD → Sandbox (Azure IaC + скрипти)
✅ Чек-лист QA — що перевірити після деплою
| Функція | Перевірка |
|---|---|
| Разова (ad-hoc) сесія — Quick Record | Натисніть Quick Record на дашборді або в PWA — запис починається одразу, сесія потрапляє в AdHoc Inbox |
| AssignPatient в AdHoc Inbox | Відкрийте разовий запис — можна призначити наявному пацієнту або створити нового |
| Ліміт пакета | Дашборд показує лічильник сесій за поточний місяць і скільки залишилось у пакеті |
| Пільговий період після невдалого платежу | Симулятор підписки в PromptyAI — викличте невдалий платіж, ви отримуєте доступ лише до акаунта на 14 днів |
| Тристороннє злиття нотаток | У деталях сесії поле Notes показує три джерела поруч (терапевт / AI / транскрипція); можна вибрати, що залишити |
| 9 CBT-аналізів | Вкладка CBT-аналізів показує 9 окремих пунктів; кожен генерується за запитом; у кожного є шестірня редагування промпту |
| Публічний профіль — панелі | Відкрийте свій публічний профіль в авторизованому стані — видно панелі редагування біографії, спеціалізації, контактів |
| Відео PiP | Під час відеосесії натисніть згорнути — вікно згортається в міні-плеєр, мікрофон продовжує працювати, ви повертаєтесь без лобі |
| Розмиття фону | У лобі відео увімкніть розмиття фону — працює одразу, без помилок CSP |
| PDF концептуалізації Beck | Згенеруйте PDF концептуалізації — він також з’являється в матеріалах сесії |
| Перемикач ABC v1/v2 | У концептуалізації v2 можна перемкнути джерело ABC між версією 1 і 2 |
| Інвойс з вибраних платежів | Виберіть кілька платежів і натисніть “Виставити рахунок” — зі знімка створюється єдиний рахунок |
| Повторювана сесія з Google Meet | Друга та третя сесії серії правильно налаштовані на Google Meet, а лист містить правильне посилання |
| Сесії з 22:00 | Тижневий календар показує сесії, заплановані на 22:00 і пізніше |
| Статус “Не з’явився” | У завершеній / скасованій сесії можна змінити статус на “Не з’явився” |
| Темна тема на мобільному | У мобільному застосунку перемкніться на темну тему — заголовки груп читабельні |
| AdHoc Inbox на мобільному | Мобільний застосунок показує лоток разових сесій і дозволяє призначити пацієнта |
| Повторна перевірка MFA | Під час зміни пароля застосунок знову запитує MFA |
| Псевдонімізація для AI | У логах видно, що дані пацієнта передаються в AI у вигляді псевдонімів |
| Матеріали сесії як blob | Завантажте файл у матеріали сесії — він потрапляє в Azure Blob Storage, а не на локальний диск |
| Глобальна унікальність email пацієнта | Додайте другого пацієнта з тим самим email — ви отримаєте 409, і модальне вікно закриється |
| Банер “Сервер запускається” | Після тривалого простою вхід у застосунок показує банер замість порожньої сторінки |
🛠️ Що ми виправили — дрібний шрифт
Окрім великих функцій, було усунуто ~80 звітів від тестувальників і користувачів. Основні моменти:
- Оверлей PiP не був клікабельним — виправлено
- Застаріле замикання в handleMaximize — розгортання з PiP більше не видає помилку
- PiP зберігає з’єднання — раніше
room.disconnect()спрацьовував під час переходу між повноекранним режимом і PiP - Кнопка “Приєднатися до сесії” була прихована перевизначенням CSS — розкрито
- Друга сесія AITS для одного пацієнта (SCRUM-1319, Ewa) — прибрано UNIQUE INDEX на
Session.VideoInviteToken - Нумерація сесій у концептуалізації пропускає скасовані (SCRUM-1267, Bohdan)
- Null-safe доступ до Payment у GetSessionDetailsAsync (SCRUM-1268, Bohdan)
- Колізія тестової сесії Anna Pełnialska з Jan о 14:00 — виправлено в сідері
- Уповільнення дашборда — null-safe маппінг у GetTodaySessionsAsync та GetSessionDetailsAsync
- Автооновлення після завершення запису з мікрофона — працює
- Резервний batch-режим не перезаписує текст із попередніх записів і не блокує інтерфейс статусом Processing
- Мова транскрипції з налаштувань сесії — STT враховує уподобання пацієнта
- CSP — дозволено
*.clarity.ms,blob:у connect-src, аналітику в script-src - Цикл оновлення авторизації — переривання запитів після 401 і повернення на сторінку входу
- CSP MediaPipe WASM — розмиття фону працює
- Стрічка DEV/SANDBOX також на Azure FQDN, не лише на кастомному домені
- Хибний тост “Помилка транскрипції” під час входу в сесію — прибрано
- Тост замість червоного банера при невдалій транскрипції + прибрано кнопку “Resample”
- Реальний час із діаризацією у відеосесії — запускається коректно
- AI-стрімінг — окремий AbortController на кожен обробник замість спільного (
BodyStreamBuffer was aborted) - Nginx non-root + Azure Container Apps — кілька ітерацій, щоб це запрацювало
- Розподілене блокування (sp_getapplock) — міграції під час запуску більше не конфліктують при паралельних деплоях
- DbUpdateConcurrencyException у пулері batch-транскрипції (SCRUM-1313, Bohdan)
- BlobNotFound як очікуваний стан (SCRUM-1314, Bohdan)
- Не-JSON payload у вебхуку Stripe (сканери / боти) — обробляються без помилок (SCRUM-1315, Bohdan)
- Визначення формату аудіо за магічними байтами (SCRUM-1311, Bohdan)
- Стійке завантаження аудіо + захисний Content-Type (SCRUM-1293, Bohdan)
- Міграція зовнішнього ключа ActiveEmbeddingModelId → ON DELETE NO ACTION
- Деплой dev-клієнта — CACHE_BUST=
github.shaпримусово перезбирає фронтенд
Це найбільший і найнасиченіший реліз цієї весни. Якщо якась функція здається знайомою — це тому, що це був ваш запит або ваш тікет. Дякуємо за кожен звіт і кожен скриншот.
Статтю підготувала команда Therapy Support