О проекте
Команда: Saint Tibo
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Доведённый продукт
Задача кейса: «Хаттама»: протокол и поручения по аудиозаписи совещания (каз./рус./смешанная речь)
Суть
Продукт «Хаттама»: загрузка или браузерная запись совещания, self-hosted распознавание RU/KK/смешанной речи, диаризация, черновик протокола и поручений со ссылками на реплики, проверка человеком, экспорт PDF/DOCX, напоминания и брифинг.
Как устроено
Фоновый worker обрабатывает запись конвейером Whisper large-v3-turbo (faster-whisper/CTranslate2) → диаризация sherpa-onnx на CPU → Qwen3-8B Q4_K_M через llama.cpp для структурированного черновика тем, решений, поручений, ответственных и сроков. STT и извлечение выполняются на выделенной NVIDIA L4 через ограниченные SSH-команды. Бэкенд на FastAPI с PostgreSQL хранит встречи, сегменты, результаты и ревизии. Сырой результат отделён от ручных правок, экспорт строится из подтверждённой ревизии. Фронтенд на React 19/TanStack Start с Better Auth, интерфейс на RU/KK/EN.
Ключевые решения
- Whisper large-v3-turbo
- faster-whisper
- CTranslate2
- sherpa-onnx diarization
- llama.cpp
- Qwen3-8B Q4_K_M
- revision-based review
- PDF/DOCX export
Особенности
Полностью self-hosted конвейер без внешнего LLM API: веса закреплены по SHA-256, в GPU-пути нет скрытого внешнего fallback. Метка голоса отделена от ответственного по поручению. Любая правка снимает подтверждение протокола. 441 коммит, production и личные dev-окружения на своём домене.
Стек
Python · FastAPI · SQLAlchemy · Alembic · PostgreSQL · React 19 · TanStack Start · TypeScript · Tailwind CSS · shadcn · Better Auth · Drizzle · Bun · Docker Compose · NVIDIA L4 GPU
Модели
Whisper large-v3-turbo · Qwen3-8B Q4_K_M
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-a58598e0-saint-tibo.
README
README.mdSaint Tibo · Хаттама
От записи совещания — к проверяемому протоколу и поручениям. Прототип команды Saint Tibo для BAITC Hacks: распознаёт речь, разделяет голоса, готовит черновик саммари и поручений, связывает результат с записью и экспортирует подтверждённую человеком редакцию в PDF/DOCX.
Секретарь получает основу протокола с источниками, а руководитель — список обязательств и напоминания по срокам. Каждое спорное место можно проверить прослушиванием; говорящий и ответственный по поручению учитываются отдельно. Интерфейс доступен на русском, казахском и английском.
Открыть продукт · Демо-доступ · Требования кейса · Статус выпуска
Проверить демо
| Окружение | Адрес | Назначение |
|---|---|---|
| Production | saint-tibo.win | Основной продукт для демонстрации |
| Dev Данила | dev-danil.saint-tibo.win | Проверка интеграции и сохранённый пример |
| Личные dev | Иван · Артём | Разработка коллег; версия может отличаться от production |
Откройте /login и войдите обычным демо-пользователем из DEMO.md.
Данные окружений независимы. Общий демо-аккаунт предназначен для разрешённых
образцов и синтетических данных; его содержимое доступно всем читателям репозитория.
На production нет автоматического dev-входа или переключателя в администратора.
Для короткого знакомства откройте сохранённую встречу на dev. В ней есть настоящая запись, транскрипт и явно обозначенный ручной протокол. Она демонстрирует прослушивание, правку и экспорт; автоматическое извлечение проверяется отдельным проходом ниже.
Сценарий с исходной записи
- Создайте совещание: название, действительная дата, часовой пояс и известные участники. Перед записью уведомите участников об обработке. Для воспроизведения кейса скачайте «Совещание №1» или «Совещание №2» и загрузите файл в карточку.
- В карточке
/meetingsвыберите «Транскрипт, говорящие и черновик протокола» и запустите обработку. Есть также отдельные режимы транскрипта и транскрипта с говорящими. Дождитесь завершения фонового задания; страница показывает его состояние. - Прослушайте реплики по таймкодам. В блоке говорящих сопоставьте анонимные метки с участниками только после проверки. Назначение имени голосу не меняет исполнителей поручений автоматически.
- Проверьте темы, решения, открытые вопросы, суть поручений, ответственных, исходную формулировку срока и ссылки на реплики. Неизвестные имя и дата остаются неизвестными. Особенно проверьте поздние уточнения и сроки «после события»: у модели здесь есть известные ошибки.
- Сохраните правки, явно подтвердите протокол и скачайте PDF и DOCX. Экспорт использует сохранённую подтверждённую ревизию. Новая правка снимает подтверждение; конфликт двух редакторов требует явной загрузки серверной версии.
- В плеере доступны транскрипт, фильтр и
последовательное прослушивание одного говорящего, сохранённый протокол и
переход к полной проверке. Блок подробной работы объединяет загрузку,
версии, ручную правку и экспорт; прежний
/workspaceперенаправляет сюда. Его кнопка «Получить транскрипт» запускает только транскрибацию — полный конвейер выбирается в карточке/meetings. - Откройте напоминания и брифинг: они используют сохранённые поручения, статусы и даты. Брифинг собирается по выбранным участникам из последних 20 доступных встреч и содержит переходы к источникам. Задачи, календарь, аналитика, главная и предстоящее показывают сохранённые поручения и сроки; при отсутствии подходящих данных списки могут быть пустыми. Страница людей использует явно добавленных участников: имя в транскрипте само по себе не создаёт карточку человека.
Подготовленные примеры Ивана для организаторов
В опубликованной инструкции Ивана также зафиксированы две обработанные встречи на отдельном dev-ivan:
| Исходный файл | Готовая встреча на dev-ivan | Снимок результатов 23.09 |
|---|---|---|
| Совещание №1 | Открыть встречу | 76 реплик, 8 поручений |
| Совещание №2 | Открыть встречу | 86 реплик, 5 поручений |
Они принадлежат общей учётке [email protected]. Если открыта другая
сессия, выйдите и откройте корень dev-ivan для обычного автоматического dev-входа;
режимы описаны в руководстве. В плеере выберите запись,
прослушайте источники и раскройте «Обработка и протокол встречи».
Эти данные не переносятся в production или новую локальную базу вместе с Git.
Настройки моделей и внешних адаптеров на dev-ivan могут отличаться от нашего
self-hosted production-профиля; эти примеры не доказывают его изоляцию.
Общие готовые встречи лучше просматривать без изменения. Для редактирования и экспорта создайте свою встречу из того же MP3. Черновик может быть неподтверждённым, поэтому PDF/DOCX до проверки заблокированы. В репозитории есть исходные записи, а базу и результаты новое окружение формирует заново. Текстовые образцы протоколов не являются дословной разметкой аудио.
Покрытие кейса
Состояние реализации на 23 сентября 2026 года. Точная версия на серверах и подтверждения деплоя фиксируются в задаче выпуска #94.
| Требование | Реализовано | Граница готовности |
|---|---|---|
| Запись и загрузка | Приватные файлы, встреча/участники, браузерный захват с разрешением пользователя | Автоматический вход бота в Teams, Zoom и Meet не завершён |
| RU / KK / смешанная речь | Self-hosted Whisper, выбор языка, реплики с таймкодами | На длинной казахской и смешанной речи остаются существенные ошибки |
| Диаризация | Анонимные интервалы голосов, прослушивание и ручное подтверждение участника | Метка голоса не доказывает личность; сложные записи требуют проверки |
| Поручения и саммари | Локальная LLM, структурированный черновик, исполнители, формулировки сроков, источники | Возможны пропуски поручений и поздних исправлений сроков |
| Проверка и протокол | Сохранённые ревизии, конфликт правок, подтверждение, PDF и DOCX с кириллицей | Автоматический черновик не считается утверждённым |
| Напоминания | Встроенный список по подтверждённым поручениям и их срокам | Внешние рассылки и интеграция с СЭД — дальнейшая работа |
| Обработка своими моделями | STT и извлечение на выделенной NVIDIA GPU, CPU-диаризация | GPU — отдельная управляемая нами облачная VM, не on-premise инфраструктура заказчика |
Основной демонстрационный конвейер не требует внешнего LLM API.
Необязательные API-извлечение и Honcho /ask выключены в нашем production-выпуске.
Внешний адрес в их конфигурации может передавать текст или контекст встречи
провайдеру и не соответствует закрытому профилю кейса. Их нельзя считать
готовой частью основного демо. Подробности: API-адаптер,
Honcho.
Дополнительная поставка Артёма включает лендинг и canvas встречи: цель, исходные данные, ожидаемые результаты, план и артефакты. Canvas хранится версиями с привязкой к записи и результату обработки (описание API). Это описание вошедшего кода; оно не заменяет отдельную приёмку полного сценария canvas. Режим демонстрационных fixtures отделён от реальных данных сессии; для проверки модели используйте фактическую обработку исходной записи.
Архитектура
flowchart LR
U[Браузер: RU / KK / EN] --> W[TanStack Start · Better Auth]
U --> A[FastAPI · проверка доступа]
W --> P[(PostgreSQL: auth / app)]
A --> P
A --> S[Приватное хранилище записей]
P --> J[Фоновый worker]
S --> J
J --> M[Whisper → Sherpa ONNX → Qwen3]
M --> J
J --> P
A --> R[Проверка человеком → сохранённая ревизия → PDF / DOCX]
- Frontend: React 19, TanStack Start/Router/Query, TypeScript 7, Tailwind CSS, shadcn/Base UI; TypeScript SDK генерируется из OpenAPI.
- Backend: FastAPI, Pydantic, SQLAlchemy/Alembic; PostgreSQL хранит встречи, задания, сегменты, результаты и ревизии. Better Auth/Drizzle обслуживают отдельную схему авторизации.
- Обработка: закреплённый Whisper large-v3-turbo через faster-whisper и CTranslate2; sherpa-onnx для голосов; Qwen3-8B Q4_K_M через llama.cpp b11120 для черновика. Локальный CPU-профиль также поддерживается.
- GPU-путь: выделенная NVIDIA L4 24 ГБ, отдельные ограниченные SSH-команды для распознавания и извлечения, закреплённые ключи хоста и модели. Только необходимые данные задания передаются по SSH; GPU-процесс не получает доступ к базе приложения. GPU-ошибка не включает скрытый внешний fallback.
- Хранение и доступ: запись доступна через авторизованный медиапрокси; права проверяются по владельцу встречи. Исходный результат обработки отделён от ручных редакций. Экспорт формируется из конкретной ревизии.
Веса и runtime проверяются по закреплённым версиям и SHA-256. Подготовка моделей выполняется отдельно; при обработке они не скачиваются. Конфигурация и реальные ключи остаются вне Git. Общие демо-доступы публикуются намеренно, а исходные MP3 кейса включены по разрешению владельца.
Запуск из репозитория
Нужны Git, Bun 1.4.2, uv 0.12.13+ и Docker с Compose.
Python 3.13 задаётся в backend/.python-version и устанавливается uv.
Для полного CPU-извлечения подготовленный runtime рассчитан на Linux x86_64;
worker ограничен 4 CPU и 8 ГиБ RAM, память для остальных сервисов нужна отдельно.
Состав пакетов фиксируют lock-файлы и stack-pin.
git clone https://github.com/BAITC-Hacks/hack-a58598e0-saint-tibo.git
cd hack-a58598e0-saint-tibo
git switch main
bun run setup
setup устанавливает зависимости, создаёт .env со случайным секретом,
запускает PostgreSQL и применяет миграции. Повторный запуск сохраняет данные
и существующий секрет. Настройки перечислены в .env.example.
Локальная обработка и Docker
Подготовьте модели до запуска. Следующие команды скачивают только закреплённые публичные артефакты моделей, без передачи ваших записей:
uv run --python 3.13 python tools/transcribe/prepare_model.py ./models/small
uv run --python 3.13 python tools/diarize/prepare_models.py ./models/diarization-v1
bun run demo
Откройте приложение, зарегистрируйтесь и войдите. Swagger и readiness доступны локально. Compose запускает frontend, API, миграции и processing-worker. Этот минимальный вариант поддерживает транскрибацию и разделение голосов.
Для полного автоматического протокола дополнительно подготовьте
models/llama-b11120 с закреплённым llama-server и библиотеками, а также
models/qwen3-8b/Qwen3-8B-Q4_K_M.gguf. Ревизии и контрольные суммы — в
описании CPU bundle
и проверках runtime.
Пути задают EXTRACT_RUNTIME_PATH и EXTRACT_MODELS_PATH в .env.
Без этих файлов режим полного извлечения завершится явной ошибкой;
распознавание продолжит работать отдельно. setup веса LLM не устанавливает.
Для turbo подготовьте bundle командой
uv run --python 3.13 python tools/transcribe/prepare_model.py ./models/turbo --model turbo
и установите BACKEND_STT_MODEL_PATH=/models/turbo в .env.
После изменения моделей или окружения пересоздайте сервисы через bun run demo.
GPU требует отдельной настройки драйвера, runtime, ключей и Compose override:
GPU STT · GPU-извлечение.
Готовый GPU-образ привязан к подготовленному серверу; одного флага в .env
на новой машине недостаточно.
Разработка и остановка
bun run dev запускает API и frontend с перезагрузкой, базу и миграции;
отдельный processing-worker и модели эта команда не запускает.
Для обработки используйте Docker-сценарий выше. Backend вне Docker требует
ffmpeg и ffprobe в PATH. Не запускайте оба варианта на одинаковых портах.
| Команда из корня | Назначение |
|---|---|
bun run setup | Зависимости, .env, PostgreSQL и миграции |
bun run dev | API и frontend для разработки |
bun run demo / bun run demo:stop | Собрать и запустить / остановить Docker-стек |
bun run build | Сборка frontend и Python-пакета |
bun run migrate | Миграции схем auth и app |
bun run api:generate | OpenAPI и TypeScript-клиент |
bun run infra:stop | Остановить локальную базу без удаления данных |
bun run seed | Создать только локальные демонстрационные аккаунты |
Локальный seed: [email protected] и [email protected], пароль
saint-tibo-dev или значение SEED_PASSWORD. Он не является production-входом.
demo:stop сохраняет именованные volumes. Для параллельных копий задайте
свои COMPOSE_PROJECT_NAME, порты и имя базы.
Деплой выполняется явно по инструкции сервера; Git push сам по себе его не запускает. Сборка и фактический проход продукта служат доказательством выпуска; наличие команд проверки в репозитории не означает, что все тестовые наборы выполнены.
Подтверждённые результаты и ограничения
На исходном «Совещании №2» длительностью 206 секунд полный конвейер с GPU завершился за 152 секунды: STT — 16,8 с, диаризация — 60,9 с, извлечение — 75,5 с. Предыдущий проход с GPU-STT и CPU-извлечением занял 664 с. Это наблюдение одного файла: prompt и число поручений различались, поэтому сравнение не доказывает равное качество или гарантированное ускорение. Подробности и итог качества.
Реальный production-проход подтвердил загрузку, обработку, сохранение, права доступа и экспорт; отдельный браузерный проход — конфликт редакций, подтверждение, источники, говорящих и плеер: production API, браузер и скачанные документы, интегрированный интерфейс. Проверка работоспособности не равна оценке точности моделей.
Известные незакрытые ограничения:
- Извлечение: пропущены позднее исправление срока до десяти дней и событийный срок. Автоматический черновик нужно сверять с записью (#69).
- Казахская и смешанная речь: длинные примеры выявили ошибки имён, отрицаний, сроков и пропуски поручений; в смешанном примере не извлечены пять ожидаемых задач (#70). Русские материалы кейса не служат эталоном точности для других языков.
- Интеграции и промышленный контур: автоматическое участие ботов, корпоративное развёртывание, расширенные роли, политики хранения и внешние уведомления требуют дальнейшей работы. Прототип не заявляет завершённую сертификацию или готовность корпоративной эксплуатации.
Приоритет развития: точность поручений и языков → надёжность захвата и подключения к встречам → развёртывание в контуре заказчика и интеграция с СЭД.
Навигация по проекту
| Путь | Содержание |
|---|---|
frontend/ | Приложение, авторизация, локализация, UI и generated SDK |
backend/src/saint_tibo/ | API, домены, обработка, доступ и экспорт |
backend/migrations/ · frontend/drizzle/auth/ | Миграции прикладных данных и авторизации |
tools/transcribe/ · tools/diarize/ · tools/extract/ | Изолированные инструменты моделей |
contracts/openapi.json | Снимок контракта API |
input-audio/ | Два разрешённых исходных MP3 кейса |
Кейс и оценивание · Демо и вход · Текущий статус · Контракты · Хранение записей · Обработка · Транскрипт · Говорящие · Ревизии и экспорт · Напоминания · Разработка и ветки.
Команда: Saint Tibo — Данил, Иван, Артём.
Авторы коммитов
История коммитов
- 2026-09-23 18:01Merge pull request #129 from BAITC-Hacks/codex/94-final-team-releaseDanil Silantyev
- 2026-09-23 18:00merge: deliver the final team integration and submission guideDanil Silantyev
- 2026-09-23 18:00merge: synchronize the final shared release handoffDanil Silantyev
- 2026-09-23 18:00fix: preserve authenticated frontend media routingDanil Silantyev
- 2026-09-23 17:59docs(serena): hand off combined UI wave with pending runtime proofDanil Silantyev
- 2026-09-23 17:59merge: prepare the submission README with all final teammate workDanil Silantyev
- 2026-09-23 17:59merge: include latest colleague work and organizer README guidanceDanil Silantyev
- 2026-09-23 17:59docs: record the final canvas and teammate delivery boundariesDanil Silantyev
Все коммиты (436)
- 2026-09-23 17:58merge: include the final shared teammate deliveryDanil Silantyev
- 2026-09-23 17:57docs: prepare verified hackathon submission READMEDanil Silantyev
- 2026-09-23 17:56merge: organizer reproduction guideR3flector
- 2026-09-23 17:56docs: make organizer demo reproducible from real recordingsR3flector
- 2026-09-23 17:54docs: align delivery handoff with the unified player workflowDanil Silantyev
- 2026-09-23 17:54merge: synchronize Danil with the shared player workflowDanil Silantyev
- 2026-09-23 17:49merge: player as primary meeting workflowR3flector
- 2026-09-23 17:48feat(player): consolidate meeting review workflowR3flector
- 2026-09-23 17:45merge: synchronize Danil with the final shared releaseDanil Silantyev
- 2026-09-23 17:43Merge pull request #127 from BAITC-Hacks/codex/94-workspace-releaseDanil Silantyev
- 2026-09-23 17:43merge: document the authorized workspace and language limitationsDanil Silantyev
- 2026-09-23 17:43merge: point Serena to the final integrated releaseDanil Silantyev
- 2026-09-23 17:42docs: align workspace follow-up and measured multilingual limitsDanil Silantyev
- 2026-09-23 17:42docs(serena): point handoff to workspace release and resolved guardDanil Silantyev
- 2026-09-23 17:42docs(demo): include workspace and final speech quality limitsDanil Silantyev
- 2026-09-23 17:41merge: preserve workspace drafts and prevent stale exportDanil Silantyev
- 2026-09-23 17:40fix(workspace): preserve review drafts and gate dirty exportsDanil Silantyev
- 2026-09-23 17:39merge: synchronize release state and remaining scopeDanil Silantyev
- 2026-09-23 17:39merge: preserve final demo and browser handoffDanil Silantyev
- 2026-09-23 17:39merge: synchronize Serena with verified GPU releaseDanil Silantyev
- 2026-09-23 17:39docs(serena): finalize follow-up source and language quality outcomesDanil Silantyev
- 2026-09-23 17:38docs(serena): add production extraction receipt and requested follow-upDanil Silantyev
- 2026-09-23 17:37merge: keep briefing people confirmedR3flector
- 2026-09-23 17:37fix(briefing): select confirmed participants onlyR3flector
- 2026-09-23 17:37docs(serena): record combined GPU release and bounded acceptanceDanil Silantyev
- 2026-09-23 17:36merge: retain deployed recording workspaceR3flector
- 2026-09-23 17:36docs: record the deployed GPU release and remaining semantic limitsDanil Silantyev
- 2026-09-23 17:35docs(demo): qualify observed GPU performance comparisonDanil Silantyev
- 2026-09-23 17:35docs(demo): document released GPU product and known quality limitsDanil Silantyev
- 2026-09-23 17:34merge: expose player and capture navigationR3flector
- 2026-09-23 17:34merge: document local model replacementsR3flector
- 2026-09-23 17:34docs: explain local model alternatives for API flowsR3flector
- 2026-09-23 17:33feat(web): expose capture and player in navigationR3flector
- 2026-09-23 17:33merge: copy meeting overview and filter briefing tasksR3flector
- 2026-09-23 17:33feat: copy meeting overview and show active briefing tasksR3flector
- 2026-09-23 17:30Merge pull request #119 from BAITC-Hacks/codex/94-local-ai-releaseDanil Silantyev
- 2026-09-23 17:29docs(demo): record live speaker and GPU workflow proofDanil Silantyev
- 2026-09-23 17:29Merge remote-tracking branch 'origin/dev' into ivan/integrate-colleaguesR3flector
- 2026-09-23 17:29fix(workspace): add navigation entry and satisfy lint rulesR3flector
- 2026-09-23 17:29merge: integrate Danil's recording-to-protocol workspace (#107)R3flector
- 2026-09-23 17:28merge: synchronize Danil lane with the integrated release candidateDanil Silantyev
- 2026-09-23 17:27merge: clarify final corrected and event-based deadlinesDanil Silantyev
- 2026-09-23 17:26fix(extract): illustrate final corrections and event deadlinesDanil Silantyev
- 2026-09-23 17:24docs: clarify extraction order and modeR3flector
- 2026-09-23 17:24merge: sync latest colleague workR3flector
- 2026-09-23 17:24merge: document live features and reproduction stepsR3flector
- 2026-09-23 17:24docs: document current features and real-audio walkthroughR3flector
- 2026-09-23 17:23merge: supervise private GPU extraction from the existing workerDanil Silantyev
- 2026-09-23 17:22merge: sync colleague dev workR3flector
- 2026-09-23 17:22feat(extract): supervise opt-in private SSH extractionDanil Silantyev
- 2026-09-23 17:22merge: show readable real meeting overviewR3flector
- 2026-09-23 17:22feat(meetings): show saved meeting overviewR3flector
- 2026-09-23 17:21merge: keep unconfigured transcript provider action opt-inDanil Silantyev
- 2026-09-23 17:21merge: pin explicit CUDA runtime for local extractionDanil Silantyev
- 2026-09-23 17:20fix: gate transcript extraction behind provider opt-inDanil Silantyev
- 2026-09-23 17:20merge: add bounded private GPU extraction runtimeDanil Silantyev
- 2026-09-23 17:20feat(extract): add explicit pinned CUDA runtimeDanil Silantyev
- 2026-09-23 17:19feat(extract): add private GPU extraction supervisor and imageDanil Silantyev
- 2026-09-23 17:19merge: reset speaker filter when changing recordingsDanil Silantyev
- 2026-09-23 17:19fix(player): clear speaker filter when changing recordingDanil Silantyev
- 2026-09-23 17:18merge: retain transcripts after diarization and extractionDanil Silantyev
- 2026-09-23 17:16merge: accept Honcho batch response and persist bridgeR3flector
- 2026-09-23 17:16fix(player): load transcripts from all completed stagesDanil Silantyev
- 2026-09-23 17:16fix(deploy): reattach optional Honcho network on Ivan devR3flector
- 2026-09-23 17:15fix(honcho): accept batch message response arrayR3flector
- 2026-09-23 17:14merge: clarify speaker-to-participant mappingR3flector
- 2026-09-23 17:14fix(review): clarify speaker identity assignment and affected turnsR3flector
- 2026-09-23 17:10merge: show diarized speakers and solo playbackR3flector
- 2026-09-23 17:10merge: build real-data meeting briefingR3flector
- 2026-09-23 17:10feat(player): carry speaker focus into persistent recording viewR3flector
- 2026-09-23 17:10feat(briefing): build person briefs from persisted meetingsR3flector
- 2026-09-23 17:09feat(player): show real speaker timeline and solo playbackR3flector
- 2026-09-23 17:07merge: expose real transcript draft extractionR3flector
- 2026-09-23 17:06fix(processing): leave memory headroom for measured local extractionDanil Silantyev
- 2026-09-23 17:06feat(meetings): generate review draft from saved transcriptR3flector
- 2026-09-23 17:06merge: retain latest optional integration workDanil Silantyev
- 2026-09-23 17:06merge: complete local processing and reminder interface integrationDanil Silantyev
- 2026-09-23 17:05merge: preserve unknown deadlines as null in local draftsDanil Silantyev
- 2026-09-23 17:05fix(extract): include observed unknown deadline wordingDanil Silantyev
- 2026-09-23 17:04merge: expose real curator reminders and full local processingDanil Silantyev
- 2026-09-23 17:04docs: distinguish disabled provider adapter from local extractionDanil Silantyev
- 2026-09-23 17:04fix(extract): keep explicit unknown deadlines nullDanil Silantyev
- 2026-09-23 17:04Merge branch 'ivan/103-honcho-ask' into ivan/103-dev-integrationR3flector
- 2026-09-23 17:03merge: preserve newly published development workDanil Silantyev
- 2026-09-23 17:03merge: preserve latest extraction API in reminders integrationDanil Silantyev
- 2026-09-23 17:02feat(honcho): add protected organizational questions sliceR3flector
- 2026-09-23 17:02feat: offer explicit full local minutes processingDanil Silantyev
- 2026-09-23 17:01merge: add browser recording guide for online meetingsR3flector
- 2026-09-23 17:01merge: preserve GPU choice across deploymentsDanil Silantyev
- 2026-09-23 17:01merge: publish verified release scopeDanil Silantyev
- 2026-09-23 17:01merge: publish actual demo and production receiptsDanil Silantyev
- 2026-09-23 17:01merge: synchronize Serena with the verified production releaseDanil Silantyev
- 2026-09-23 17:01Merge commit 'c043431' into ivan/115-dev-integrationR3flector
- 2026-09-23 17:00merge: synchronize reminders UI with integrated processing and playerDanil Silantyev
- 2026-09-23 17:00feat: show curator reminders in the application inboxDanil Silantyev
- 2026-09-23 17:00docs: reconcile live release and remaining delivery scopeDanil Silantyev
- 2026-09-23 17:00fix(deploy): retain explicit GPU transport configurationDanil Silantyev
- 2026-09-23 16:58merge: synchronize shared history before next development releaseDanil Silantyev
- 2026-09-23 16:58merge: integrate reminders and persistent player with current AI pipelineDanil Silantyev
- 2026-09-23 16:58docs(serena): record verified production core and next release boundaryDanil Silantyev
- 2026-09-23 16:58merge: retain current shared development historyDanil Silantyev
- 2026-09-23 16:58merge: synchronize released core back into developmentDanil Silantyev
- 2026-09-23 16:58merge: preserve playback across application navigationDanil Silantyev
- 2026-09-23 16:58merge: base reminders UI on derived inbox contractDanil Silantyev
- 2026-09-23 16:57feat(capture): guide Meet Teams and Zoom browser recordingR3flector
- 2026-09-23 16:57merge: add timezone-aware internal curator remindersDanil Silantyev
- 2026-09-23 16:57docs: confirm released production demo access and processingDanil Silantyev
- 2026-09-23 16:57fix: keep persistent playback across shell navigationDanil Silantyev
- 2026-09-23 16:57merge: integrate Ivan's persistent player implementationDanil Silantyev
- 2026-09-23 16:56feat(reminders): derive owner inbox from confirmed action itemsDanil Silantyev
- 2026-09-23 16:55merge: integrate speakers, local draft extraction and CUDA transportDanil Silantyev
- 2026-09-23 16:55feat(extraction): draft review from existing transcript via APIR3flector
- 2026-09-23 16:55merge: add private CUDA transcription transportDanil Silantyev
- 2026-09-23 16:55merge: integrate local draft extraction after diarizationDanil Silantyev
- 2026-09-23 16:54merge: connect real speaker review to diarization resultsDanil Silantyev
- 2026-09-23 16:54Merge remote-tracking branch 'origin/feat/12-diarization-ui' into HEADR3flector
- 2026-09-23 16:54merge: integrate extraction after diarization on current devDanil Silantyev
- 2026-09-23 16:53feat: add private SSH CUDA transcription runtimeDanil Silantyev
- 2026-09-23 16:50feat: connect reviewed speaker identities to meeting workspaceDanil Silantyev
- 2026-09-23 16:49Merge pull request #114 from BAITC-Hacks/codex/94-reviewed-core-releaseDanil Silantyev
- 2026-09-23 16:48docs: record the live meeting and reviewed export walkthroughDanil Silantyev
- 2026-09-23 16:47merge: preserve current diarization backend in speaker UIDanil Silantyev
- 2026-09-23 16:46fix(diarization): satisfy pinned backend checksR3flector
- 2026-09-23 16:45feat(player): resume real recordings across navigationR3flector
- 2026-09-23 16:44Merge remote-tracking branch 'origin/feat/12-local-diarization' into HEADR3flector
- 2026-09-23 16:44merge: base speaker UI on local diarization contractDanil Silantyev
- 2026-09-23 16:43docs(extract): record complete local draft and private review proofDanil Silantyev
- 2026-09-23 16:42merge: sync diarization with current reviewed-results releaseDanil Silantyev
- 2026-09-23 16:41feat: persist diarization and reviewed speaker identitiesDanil Silantyev
- 2026-09-23 16:36merge: align review confirmation and exact duration validationDanil Silantyev
- 2026-09-23 16:35merge: preserve exact duration across concurrent integrationDanil Silantyev
- 2026-09-23 16:35merge: require fresh confirmation of edited minutesDanil Silantyev
- 2026-09-23 16:35fix(processing): retain exact canonical duration invariantDanil Silantyev
- 2026-09-23 16:34fix(review): reset approval on edits and recover revision conflictsDanil Silantyev
- 2026-09-23 16:34merge: integrate media cancellation handlingR3flector
- 2026-09-23 16:33merge: integrate capture start metadataR3flector
- 2026-09-23 16:33merge: sync Ivan capture lane after transcription fixR3flector
- 2026-09-23 16:33merge: accept 1 ms STT duration roundingR3flector
- 2026-09-23 16:33merge: sync Ivan lane with current devR3flector
- 2026-09-23 16:33merge: preserve capture start metadata on Ivan laneR3flector
- 2026-09-23 16:32merge: preserve published transcription and workspace integrationDanil Silantyev
- 2026-09-23 16:32merge: integrate real recording player and remove synthetic demoR3flector
- 2026-09-23 16:31feat(player): focus on protected real recordingsR3flector
- 2026-09-23 16:31merge: connect published workspace and pinned multilingual transcriptionDanil Silantyev
- 2026-09-23 16:30merge: use verified pinned local speech models with provenanceDanil Silantyev
- 2026-09-23 16:30fix(stt): allow one millisecond media roundingR3flector
- 2026-09-23 16:29merge: keep demo guide on the canonical meeting interfaceDanil Silantyev
- 2026-09-23 16:28docs(serena): record media cancellation handoffR3flector
- 2026-09-23 16:27fix(media): classify exact disconnected requests at h3 boundaryR3flector
- 2026-09-23 16:27docs(media): record cancellation runtime boundaryR3flector
- 2026-09-23 16:26docs: keep meeting interface as the sole demo entryDanil Silantyev
- 2026-09-23 16:26merge: align demo guide with published meeting interfaceDanil Silantyev
- 2026-09-23 16:26fix(stt): keep reused prepared weights readable by workerDanil Silantyev
- 2026-09-23 16:26feat: add local anonymous speaker diarization CLIDanil Silantyev
- 2026-09-23 16:26merge: sync current UI and backend fixes before STT validationDanil Silantyev
- 2026-09-23 16:26feat(stt): support pinned turbo with actual result provenanceDanil Silantyev
- 2026-09-23 16:26docs(stt): document pinned model selection and measured limitsDanil Silantyev
- 2026-09-23 16:25docs: point demo walkthrough to published meeting interfaceDanil Silantyev
- 2026-09-23 16:25merge: restore protected player transcript on current devR3flector
- 2026-09-23 16:23fix(capture): preserve recording start metadataR3flector
- 2026-09-23 16:23feat(workspace): connect recording to reviewed protocol journeyDanil Silantyev
- 2026-09-23 16:23merge: sync workspace with latest devDanil Silantyev
- 2026-09-23 16:22fix(extract): retain safe failure metrics and allow complete draftsDanil Silantyev
- 2026-09-23 16:19docs(extract): record failed bounded CPU run and release blockerDanil Silantyev
- 2026-09-23 16:17merge: publish dedicated demo accessDanil Silantyev
- 2026-09-23 16:17merge: document dedicated demo access and workflowDanil Silantyev
- 2026-09-23 16:16docs: publish dedicated demo access and walkthroughDanil Silantyev
- 2026-09-23 16:16docs(serena): record player transcript live proof limitR3flector
- 2026-09-23 16:14merge: protect server logs before releaseDanil Silantyev
- 2026-09-23 16:14merge: protect private payloads in server error logsDanil Silantyev
- 2026-09-23 16:13fix: keep private exception payloads out of API logsDanil Silantyev
- 2026-09-23 16:12merge: integrate canonical duration and release coordinationDanil Silantyev
- 2026-09-23 16:12merge: include current dev before transcript live proofR3flector
- 2026-09-23 16:12merge: update final release coordinationDanil Silantyev
- 2026-09-23 16:11docs: align isolated integrations and release fixesDanil Silantyev
- 2026-09-23 16:11fix(media): cancel upstream when downstream playback closesR3flector
- 2026-09-23 16:11merge: use canonical audio duration for transcriptionDanil Silantyev
- 2026-09-23 16:11merge: align reviewed export receipts and project knowledgeDanil Silantyev
- 2026-09-23 16:10fix(processing): use one exact recording duration clock (#104)Danil Silantyev
- 2026-09-23 16:10merge: synchronize verified export knowledgeDanil Silantyev
- 2026-09-23 16:10merge: publish measured integration statusDanil Silantyev
- 2026-09-23 16:09merge: sync latest dev before player refinementR3flector
- 2026-09-23 16:09merge: integrate synthetic player mobile and locale refinementR3flector
- 2026-09-23 16:09merge: sync Ivan lane before synthetic player updateR3flector
- 2026-09-23 16:09merge: refine synthetic player mobile and locale behaviorR3flector
- 2026-09-23 16:08fix(player): keep sample markers and locale readableR3flector
- 2026-09-23 16:08docs(serena): record verified review exports and remaining release gatesDanil Silantyev
- 2026-09-23 16:07merge: sync latest dev before transcript verificationR3flector
- 2026-09-23 16:07feat(player): load protected transcript resultsR3flector
- 2026-09-23 16:07merge: integrate isolated Honcho stack from Ivan laneIvan
- 2026-09-23 16:07merge: add isolated Honcho stack to Ivan laneIvan
- 2026-09-23 16:06docs: record verified exports and measured language gapsDanil Silantyev
- 2026-09-23 16:06fix(honcho): use pinned image for tokenizer cacheIvan
- 2026-09-23 16:06merge: sync Honcho stack with latest devIvan
- 2026-09-23 16:06merge: preserve current player integration before final knowledge syncDanil Silantyev
- 2026-09-23 16:06feat(extract): publish local model drafts through processing jobsDanil Silantyev
- 2026-09-23 16:06docs(serena): checkpoint integrated review and player knowledgeDanil Silantyev
- 2026-09-23 16:06docs(extract): record CPU limits and draft verification boundaryDanil Silantyev
- 2026-09-23 16:05merge: integrate player marker overflow fixR3flector
- 2026-09-23 16:05merge: fix synthetic marker overflow on Ivan laneR3flector
- 2026-09-23 16:05fix(player): constrain marker strip to viewportR3flector
- 2026-09-23 16:04fix: harden local Honcho stackIvan
- 2026-09-23 16:00merge: consume reviewed result persistence contractDanil Silantyev
- 2026-09-23 16:00merge: integrate synthetic player from Ivan laneR3flector
- 2026-09-23 16:00merge: deliver synthetic player to Ivan laneR3flector
- 2026-09-23 16:00merge: sync synthetic player with latest devR3flector
- 2026-09-23 16:00docs(player): explain synthetic walkthrough boundariesR3flector
- 2026-09-23 16:00feat(player): add browser-generated synthetic meeting sampleR3flector
- 2026-09-23 15:58merge: integrate reviewed exports and synchronized handoffDanil Silantyev
- 2026-09-23 15:58merge: persist reviewed protocols and protected exportsDanil Silantyev
- 2026-09-23 15:58merge: synchronize domain knowledge and handoffDanil Silantyev
- 2026-09-23 15:58merge: publish current state and integration planDanil Silantyev
- 2026-09-23 15:58chore(extract): preserve Devin local extraction sourcesDanil Silantyev
- 2026-09-23 15:57docs: record verified state and bounded integration planDanil Silantyev
- 2026-09-23 15:57docs(results): distinguish manual review from pending extractionDanil Silantyev
- 2026-09-23 15:56merge: sync reviewed export with latest devDanil Silantyev
- 2026-09-23 15:56feat(results): persist reviewed revisions and export protected protocolsDanil Silantyev
- 2026-09-23 15:56docs(results): publish review and export contract for consumersDanil Silantyev
- 2026-09-23 15:56docs(serena): sync integrated player and bounded acceptance statusDanil Silantyev
- 2026-09-23 15:54merge: sync integrated player before knowledge refreshDanil Silantyev
- 2026-09-23 15:54docs(serena): audit domain knowledge and restore current handoffDanil Silantyev
- 2026-09-23 17:54Merge branch 'artem' into devArtem Letyushev
- 2026-09-23 17:53Merge branch 'feat/full-mock-fixtures' into artemArtem Letyushev
- 2026-09-23 17:53merge: sync latest dev player and workspaceArtem Letyushev
- 2026-09-23 17:51fix(web): keep page slices and API imports within public boundariesArtem Letyushev
- 2026-09-23 15:51merge: integrate rich meeting player #95/#19R3flector
- 2026-09-23 17:49fix(web): restore integrated frontend checksArtem Letyushev
- 2026-09-23 15:47feat: add isolated self-hosted Honcho stackIvan
- 2026-09-23 17:46merge: integrate reviewed workspace fixesArtem Letyushev
- 2026-09-23 15:44merge: add rich player and protected recording selector to Ivan laneR3flector
- 2026-09-23 15:44merge: sync dev before player experienceR3flector
- 2026-09-23 15:44merge: keep handoff notes focused on project workflowDanil Silantyev
- 2026-09-23 15:44docs: keep handoff notes focused on project workflowDanil Silantyev
- 2026-09-23 15:44merge: sync latest dev into rich player branchR3flector
- 2026-09-23 15:43docs(player): describe truthful timeline and media sourcesR3flector
- 2026-09-23 15:43feat(player): add waveform and timestamp navigationR3flector
- 2026-09-23 17:42Merge branch 'feat/60-meeting-canvas' into feat/full-mock-fixturesArtem Letyushev
- 2026-09-23 17:42Merge branch 'feat/41-landing-page' into feat/full-mock-fixturesArtem Letyushev
- 2026-09-23 17:42Merge branch 'feat/40-landing-story' into feat/full-mock-fixturesArtem Letyushev
- 2026-09-23 17:42Merge branch 'feat/21-recording-acceptance' into feat/full-mock-fixturesArtem Letyushev
- 2026-09-23 17:41Merge remote-tracking branch 'origin/dev' into feat/full-mock-fixturesArtem Letyushev
- 2026-09-23 17:40docs(serena): record meeting canvas contract and proofArtem Letyushev
- 2026-09-23 17:40fix(capture): explain saved recording status and retry failuresArtem Letyushev
- 2026-09-23 17:39feat(mock): expand synthetic fixtures and session-scoped dev modeArtem Letyushev
- 2026-09-23 15:39merge: include protected recording selector for rich playerR3flector
- 2026-09-23 15:37merge: memory audit — capture transport fixDanil Silantyev
- 2026-09-23 15:37docs(serena): fix stale capture-transport claim, add doc pointersDanil Silantyev
- 2026-09-23 15:37feat(player): connect protected meeting recordingsR3flector
- 2026-09-23 17:35feat(meetings): version facilitator canvas with result provenanceArtem Letyushev
- 2026-09-23 15:34merge: memory audit sync from danilDanil Silantyev
- 2026-09-23 15:34merge: serena memory audit — STT/results/adapters syncDanil Silantyev
- 2026-09-23 17:34feat(landing): add public trilingual pageArtem Letyushev
- 2026-09-23 15:34docs(serena): sync memories with wired STT, results API, and adaptersDanil Silantyev
- 2026-09-23 15:32merge: integrate consolidated backend handoffDanil Silantyev
- 2026-09-23 15:32merge: consolidate Danil backend handoffDanil Silantyev
- 2026-09-23 15:31merge: align consolidation handoff with integrated transcriptionDanil Silantyev
- 2026-09-23 15:31docs: hand off integrated backend work and team boundariesDanil Silantyev
- 2026-09-23 15:30merge: integrate offline recording transcriptionDanil Silantyev
- 2026-09-23 15:30merge: add local recording transcription to Danil laneDanil Silantyev
- 2026-09-23 15:30merge: sync team dev before STT integrationDanil Silantyev
- 2026-09-23 15:30docs: clarify integration checks and completed dev access rolloutDanil Silantyev
- 2026-09-23 17:30fix(deploy): preserve remote path arguments on WindowsArtem Letyushev
- 2026-09-23 15:25merge: integrate Zoom participant prototype from Ivan laneR3flector
- 2026-09-23 15:24merge: integrate Zoom participant prototype into Ivan laneR3flector
- 2026-09-23 15:24merge: sync latest dev into Ivan laneR3flector
- 2026-09-23 15:22merge: memory accuracy fixes and processing/capture notesDanil Silantyev
- 2026-09-23 15:22docs(serena): remove resurrected handoff and branch SHAs from worker notesDanil Silantyev
- 2026-09-23 17:22fix: show readable Kazakh dates in meeting surfacesArtem Letyushev
- 2026-09-23 15:21merge: memory accuracy fixes from reviewDanil Silantyev
- 2026-09-23 15:21docs(serena): fix broken recording endpoint and dedupe auth factsDanil Silantyev
- 2026-09-23 17:21feat: integrate real meeting review and finish workspace UXArtem Letyushev
- 2026-09-23 15:20feat: transcribe recordings locally and persist timecoded result versionsDanil Silantyev
- 2026-09-23 15:20docs: describe local STT deployment and transcript APIDanil Silantyev
- 2026-09-23 15:19merge: integrate Ivan player, capture, connectors, and local STTR3flector
- 2026-09-23 15:19feat(zoom): prototype isolated browser meeting captureR3flector
- 2026-09-23 15:18merge: integrate Ivan player, capture, and meeting adaptersR3flector
- 2026-09-23 15:18merge: integrate offline STT benchmarkR3flector
- 2026-09-23 15:18merge: sync processing jobs and protocol exportR3flector
- 2026-09-23 15:17feat(player): show verified local STT segments beside audioR3flector
- 2026-09-23 17:16docs: prepare trilingual landing story for issue 40Artem Letyushev
- 2026-09-23 15:13merge: integrate durable recording processing jobsDanil Silantyev
- 2026-09-23 15:13merge: add durable processing jobs to Danil laneDanil Silantyev
- 2026-09-23 15:13merge: sync current development before processing integrationDanil Silantyev
- 2026-09-23 15:12merge: consolidated auth memoryDanil Silantyev
- 2026-09-23 15:12docs(serena): add consolidated auth map and dev-login route factsDanil Silantyev
- 2026-09-23 17:11docs: prepare trilingual landing story for issue 40Artem Letyushev
- 2026-09-23 15:09feat: add durable recording processing jobs and workerDanil Silantyev
- 2026-09-23 15:09docs: explain processing jobs and current STT boundaryDanil Silantyev
- 2026-09-23 15:08merge: clarify current dev access availabilityDanil Silantyev
- 2026-09-23 15:08merge: retain published Danil workDanil Silantyev
- 2026-09-23 15:08merge: document remaining dev rollout dependencyDanil Silantyev
- 2026-09-23 15:08docs: clarify remaining Ivan dev rollout dependencyDanil Silantyev
- 2026-09-23 15:08merge: protocol DOCX/PDF export renderers (#14)Danil Silantyev
- 2026-09-23 15:07feat: render reviewed meeting protocol to DOCX and PDFDanil Silantyev
- 2026-09-23 15:05docs: record offline local STT benchmarkR3flector
- 2026-09-23 15:04merge: share durable dev access and agent workflowDanil Silantyev
- 2026-09-23 15:04merge: synchronize durable dev-access instructionsDanil Silantyev
- 2026-09-23 15:03merge: integrate Meet browser participant prototypeR3flector
- 2026-09-23 15:03docs(serena): record guarded dev access and ownership workflowDanil Silantyev
- 2026-09-23 15:02merge: sync team dev login workflowR3flector
- 2026-09-23 15:02feat(meet): add isolated browser participant and local Opus captureR3flector
- 2026-09-23 15:01merge: integrate automatic dev login and team browser workflowDanil Silantyev
- 2026-09-23 15:01merge: enable real automatic sessions on personal dev hostsDanil Silantyev
- 2026-09-23 15:01merge: integrate Teams browser participant prototypeR3flector
- 2026-09-23 15:00merge: document quick dev access for the teamDanil Silantyev
- 2026-09-23 15:00merge: configure guarded dev login deploymentDanil Silantyev
- 2026-09-23 15:00feat: add guarded automatic login for personal dev environments (#82)Danil Silantyev
- 2026-09-23 15:00docs: clarify Danil agent ownership and feature branchesDanil Silantyev
- 2026-09-23 14:59merge: durable-only serena memoriesDanil Silantyev
- 2026-09-23 14:59docs(serena): keep only durable facts in shared memoriesDanil Silantyev
- 2026-09-23 14:59docs: explain automatic dev login and browser workflowDanil Silantyev
- 2026-09-23 14:58feat(teams): add isolated browser participant capture adapterR3flector
- 2026-09-23 14:58docs(teams): record synthetic proof and remaining live gatesR3flector
- 2026-09-23 14:58feat(dev): wire seeded login and preserve deployed revisionsDanil Silantyev
- 2026-09-23 14:57feat(capture): save local recordings through protected APIR3flector
- 2026-09-23 14:54merge: sync serena memories with integrated #9Danil Silantyev
- 2026-09-23 14:54docs(serena): sync memories with shipped meeting recording sliceDanil Silantyev
- 2026-09-23 14:53merge: share serena agent memories across teamDanil Silantyev
- 2026-09-23 14:52docs(serena): seed shared agent memories and session handoffDanil Silantyev
- 2026-09-23 14:52docs(serena): hand off published recording demoR3flector
- 2026-09-23 14:51docs(player): record published MP3 demo behaviorR3flector
- 2026-09-23 14:51feat(player): offer published meeting recordings in demoR3flector
- 2026-09-23 14:50merge: sync protected recording API and media proxyR3flector
- 2026-09-23 14:48Merge pull request #80 from BAITC-Hacks/devDanil Silantyev
- 2026-09-23 14:48merge: integrate local meeting captureR3flector
- 2026-09-23 14:47merge: integrate transcript synchronizationR3flector
- 2026-09-23 14:46merge: bring shared meeting capture lifecycle into Meet adapterR3flector
- 2026-09-23 14:45merge: integrate connector lifecycle kernelR3flector
- 2026-09-23 14:45merge: include shared capture lifecycle for Teams adapterR3flector
- 2026-09-23 14:45docs(serena): hand off local capture sliceR3flector
- 2026-09-23 14:44docs(capture): document local limits and backend integrationR3flector
- 2026-09-23 14:44feat(capture): record permitted audio locally with bounded chunksR3flector
- 2026-09-23 14:43docs(serena): hand off transcript synchronizationR3flector
- 2026-09-23 14:43docs(serena): hand off capture kernel and integration blockersR3flector
- 2026-09-23 14:43docs(transcript): describe integration and synthetic playback proofR3flector
- 2026-09-23 14:42feat(transcript): synchronize segments and action sources with playerR3flector
- 2026-09-23 14:42feat(capture): add bounded external meeting adapter lifecycleR3flector
- 2026-09-23 14:42docs(capture): document adapter boundary and platform blockersR3flector
- 2026-09-23 14:42merge: integrate meeting recording API and protected playbackDanil Silantyev
- 2026-09-23 14:42merge: deliver verified meeting storage and media accessDanil Silantyev
- 2026-09-23 14:42docs: distinguish supported Kubernetes deploy from Compose experimentR3flector
- 2026-09-23 14:39docs(serena): hand off player and connector stateR3flector
- 2026-09-23 14:39docs: describe implemented recording API and remaining product workDanil Silantyev
- 2026-09-23 14:39docs: assess hosted and self-hosted meeting bot servicesR3flector
- 2026-09-23 14:37docs: describe private recording storage and manual verificationDanil Silantyev
- 2026-09-23 14:37merge: integrate current development baselineDanil Silantyev
- 2026-09-23 14:37merge: connect authenticated media playback proxyDanil Silantyev
- 2026-09-23 14:36feat: add private meeting recordings and resumable chunksDanil Silantyev
- 2026-09-23 16:35merge: publish research archive from artemArtem Letyushev
- 2026-09-23 16:35merge: archive research in artem laneArtem Letyushev
- 2026-09-23 14:34docs: map meeting connector feasibility and verificationR3flector
- 2026-09-23 16:34docs(research): archive meeting research and English findingsArtem Letyushev
- 2026-09-23 14:34fix(player): align timeline and media URL with team contractR3flector
- 2026-09-23 14:33merge: use local meeting player for transcript synchronizationR3flector
- 2026-09-23 14:33merge: sync latest team contracts and fixturesR3flector
- 2026-09-23 14:33merge: align case documentation with uploaded fixturesDanil Silantyev
- 2026-09-23 14:33merge: clarify the case audio fixture exceptionDanil Silantyev
- 2026-09-23 14:33docs(case): document owner-approved audio fixturesDanil Silantyev
- 2026-09-23 14:26Merge pull request #33 from BAITC-Hacks/devDanil Silantyev
- 2026-09-23 14:26feat: add authenticated streaming media proxy for recordings (#9)Danil Silantyev
- 2026-09-23 14:25docs: describe player integration and media lifecycleR3flector
- 2026-09-23 14:25feat: add recording player with local media playbackR3flector
- 2026-09-23 14:25merge: integrate first delivery contracts and case fixturesDanil Silantyev
- 2026-09-23 14:25merge: prepare offline STT evaluationDanil Silantyev
- 2026-09-23 14:25merge: add owner-provided case audioDanil Silantyev
- 2026-09-23 14:25merge: publish meeting contract draft for team integrationDanil Silantyev
- 2026-09-23 14:25docs(contracts): clarify playback format and incomplete recoveryDanil Silantyev
- 2026-09-23 14:24chore(fixtures): add original hackathon meeting audioDanil Silantyev
- 2026-09-23 14:23docs(stt): prepare offline CPU evaluation for issue 11Danil Silantyev
- 2026-09-23 14:22docs(contracts): define meeting and recording integration draftDanil Silantyev
- 2026-09-23 16:20Merge branch 'artem' into devArtem Letyushev
- 2026-09-23 16:19Merge remote-tracking branch 'origin/dev' into artemArtem Letyushev
- 2026-09-23 16:19fix(api): pass logging quality gateArtem Letyushev
- 2026-09-23 16:17Merge remote-tracking branch 'origin/dev' into artemArtem Letyushev
- 2026-09-23 16:16fix(api): satisfy export and review quality gatesArtem Letyushev
- 2026-09-23 16:16fix(web): connect review workspace to persisted resultsArtem Letyushev
- 2026-09-23 16:07Merge remote-tracking branch 'origin/dev' into artemArtem Letyushev
- 2026-09-23 16:07Merge branch 'feat/85-mock-server' into artemArtem Letyushev
- 2026-09-23 16:07Merge branch 'feat/83-interface' into artemArtem Letyushev
- 2026-09-23 14:07Merge pull request #28 from BAITC-Hacks/devDanil Silantyev
- 2026-09-23 14:05docs: align environment statusDanil Silantyev
- 2026-09-23 14:05docs: integrate server runtime statusDanil Silantyev
- 2026-09-23 14:05docs: align runtime status with server environmentsDanil Silantyev
- 2026-09-23 14:04Merge pull request #27 from BAITC-Hacks/devDanil Silantyev
- 2026-09-23 14:04feat: integrate server setup and product baselineDanil Silantyev
- 2026-09-23 14:03feat: integrate manual HTTPS environmentsDanil Silantyev
- 2026-09-23 14:03docs: integrate case and product baselineDanil Silantyev
- 2026-09-23 16:03fix(mock): serve concurrent browser and health requestsArtem Letyushev
- 2026-09-23 14:02docs: link active branding ownershipDanil Silantyev
- 2026-09-23 16:01fix(web): serialize review updates and localize datesArtem Letyushev
- 2026-09-23 14:01feat: add manual HTTPS server environmentsDanil Silantyev
- 2026-09-23 16:00Merge branch 'feat/84-frontend-shell' into feat/83-interfaceArtem Letyushev
- 2026-09-23 14:00docs: clarify source discrepancies and product baselineDanil Silantyev
- 2026-09-23 13:57Merge pull request #4 from BAITC-Hacks/devDanil Silantyev
- 2026-09-23 15:57fix(web): use product name as page titleArtem Letyushev
- 2026-09-23 13:55docs: align shared development workflowDanil Silantyev
- 2026-09-23 13:55docs: integrate development server instructionsDanil Silantyev
- 2026-09-23 13:55docs: make personal development servers the default workflowDanil Silantyev
- 2026-09-23 15:53Merge branch 'feat/85-mock-server' into feat/83-interfaceArtem Letyushev
- 2026-09-23 13:52chore: use personal development serversDanil Silantyev
- 2026-09-23 13:52chore: integrate manual development workflowDanil Silantyev
- 2026-09-23 13:52chore: use manual development server verificationDanil Silantyev
- 2026-09-23 15:51fix(mock): make export failure reachable after reviewArtem Letyushev
- 2026-09-23 15:50Merge branch 'feat/85-mock-server' into feat/83-interfaceArtem Letyushev
- 2026-09-23 15:50Merge remote-tracking branch 'origin/dev' into feat/83-interfaceArtem Letyushev
- 2026-09-23 15:50Merge remote-tracking branch 'origin/dev' into feat/85-mock-serverArtem Letyushev
- 2026-09-23 15:50feat(web): implement meeting workspace and review interfaceArtem Letyushev
- 2026-09-23 13:50chore: integrate project foundation into devDanil Silantyev
- 2026-09-23 13:50chore: integrate project foundation into danilDanil Silantyev
- 2026-09-23 15:49feat(mock): expose list state scenarios in dev UIArtem Letyushev
- 2026-09-23 13:47docs: define meeting case and team development workflowDanil Silantyev
- 2026-09-23 13:47feat: initialize Saint Tibo application foundationDanil Silantyev
- 2026-09-23 15:47fix(mock): match processing job target stage contractArtem Letyushev
- 2026-09-23 15:46Merge remote-tracking branch 'origin/dev' into feat/84-frontend-shellArtem Letyushev
- 2026-09-23 15:45docs(web): record primary token and font licenseArtem Letyushev
- 2026-09-23 15:43fix(processing): terminate ffmpeg on WindowsArtem Letyushev
- 2026-09-23 15:43Merge remote-tracking branch 'origin/dev' into feat/85-mock-serverArtem Letyushev
- 2026-09-23 15:43Merge remote-tracking branch 'origin/dev' into feat/83-interfaceArtem Letyushev
- 2026-09-23 15:43docs(mock): document local walkthrough and draft boundariesArtem Letyushev
- 2026-09-23 15:42feat(mock): add local synthetic meeting API and fixturesArtem Letyushev
- 2026-09-23 15:39Merge remote-tracking branch 'origin/dev' into feat/84-frontend-shellArtem Letyushev
- 2026-09-23 15:39docs(web): record design tokens and UI kit rulesArtem Letyushev
- 2026-09-23 15:39feat(web): brand shell and catalog shared UIArtem Letyushev
- 2026-09-23 15:36Merge remote-tracking branch 'origin/dev' into feat/83-interfaceArtem Letyushev
- 2026-09-23 15:34Merge remote-tracking branch 'origin/dev' into feat/85-mock-serverArtem Letyushev
- 2026-09-23 15:23Merge remote-tracking branch 'origin/dev' into feat/83-interfaceArtem Letyushev
- 2026-09-23 15:23Merge remote-tracking branch 'origin/dev' into feat/84-frontend-shellArtem Letyushev
- 2026-09-23 15:22docs(web): define FSD placement for MVP screensArtem Letyushev
Структура репозитория (473 файлов)
.bun-version .dockerignore .env.example .gitignore .serena/.gitignore .serena/memories/API-01-backend-architecture.md .serena/memories/API-02-meetings-recordings.md .serena/memories/API-03-mock.md .serena/memories/API-10-processing-results.md .serena/memories/API-13-review-export.md .serena/memories/API-60-meeting-canvas.md .serena/memories/AUTH-01-auth-access.md .serena/memories/DB-01-schemas-migrations.md .serena/memories/DB-60-meeting-canvas.md .serena/memories/INFRA-01-environments-deploy.md .serena/memories/INFRA-22-CAPTURE.md .serena/memories/INFRA-23-connectors.md .serena/memories/MODELS-01-stt-pipeline.md .serena/memories/RELEASE-94-runtime-wave.md .serena/memories/STACK-01-stack-layout.md .serena/memories/TEAM-01-workflow.md .serena/memories/TEST-01-verification.md .serena/memories/WEB-01-frontend.md .serena/memories/WEB-102-media-abort.md .serena/memories/WEB-19-player.md .serena/memories/WEB-20-transcript-sync.md .serena/memories/WEB-21-CAPTURE.md .serena/memories/WEB-60-meeting-canvas.md .serena/plans/NEXT-SESSION.md .serena/project.yml DEMO.md DESIGN.md README.md backend/.dockerignore backend/.gitignore backend/.python-version backend/Dockerfile backend/README.md backend/alembic.ini backend/migrations/env.py backend/migrations/script.py.mako backend/migrations/versions/0001_app_schema.py backend/migrations/versions/0002_meetings.py backend/migrations/versions/0003_processing_jobs.py backend/migrations/versions/0004_transcript_versions.py backend/migrations/versions/0005_reviewed_results.py backend/migrations/versions/0007_diarization.py backend/migrations/versions/0008_extraction_draft.py backend/migrations/versions/0009_meeting_canvas.py backend/pyproject.toml backend/scripts/export_openapi.py backend/scripts/smoke_auth.py backend/scripts/smoke_rbac.py backend/src/saint_tibo/__init__.py backend/src/saint_tibo/api/health.py backend/src/saint_tibo/api/router.py backend/src/saint_tibo/auth/dependencies.py backend/src/saint_tibo/auth/identity.py backend/src/saint_tibo/auth/jwt.py backend/src/saint_tibo/auth/policy.py backend/src/saint_tibo/auth/schemas.py backend/src/saint_tibo/core/config.py backend/src/saint_tibo/core/errors.py backend/src/saint_tibo/core/logging.py backend/src/saint_tibo/core/pagination.py backend/src/saint_tibo/core/schemas.py backend/src/saint_tibo/db/base.py backend/src/saint_tibo/db/mixins.py backend/src/saint_tibo/db/session.py backend/src/saint_tibo/main.py backend/src/saint_tibo/modules/README.md backend/src/saint_tibo/modules/__init__.py backend/src/saint_tibo/modules/exports/__init__.py backend/src/saint_tibo/modules/exports/assets/fonts/DejaVuSans-Bold.ttf backend/src/saint_tibo/modules/exports/assets/fonts/DejaVuSans.ttf backend/src/saint_tibo/modules/exports/assets/fonts/LICENSE-DejaVu backend/src/saint_tibo/modules/exports/render.py backend/src/saint_tibo/modules/exports/router.py backend/src/saint_tibo/modules/exports/schemas.py backend/src/saint_tibo/modules/exports/service.py backend/src/saint_tibo/modules/extraction/__init__.py backend/src/saint_tibo/modules/extraction/router.py backend/src/saint_tibo/modules/extraction/schemas.py backend/src/saint_tibo/modules/extraction/service.py backend/src/saint_tibo/modules/meetings/__init__.py backend/src/saint_tibo/modules/meetings/models.py backend/src/saint_tibo/modules/meetings/router.py backend/src/saint_tibo/modules/meetings/schemas.py backend/src/saint_tibo/modules/meetings/service.py backend/src/saint_tibo/modules/meetings/storage.py backend/src/saint_tibo/modules/org_questions/__init__.py backend/src/saint_tibo/modules/org_questions/router.py backend/src/saint_tibo/modules/processing/__init__.py backend/src/saint_tibo/modules/processing/diarization.py backend/src/saint_tibo/modules/processing/extraction.py backend/src/saint_tibo/modules/processing/models.py backend/src/saint_tibo/modules/processing/router.py backend/src/saint_tibo/modules/processing/schemas.py backend/src/saint_tibo/modules/processing/service.py backend/src/saint_tibo/modules/processing/transcription.py backend/src/saint_tibo/modules/processing/worker.py backend/src/saint_tibo/modules/reminders/__init__.py backend/src/saint_tibo/modules/reminders/router.py backend/src/saint_tibo/modules/reminders/schemas.py backend/src/saint_tibo/modules/reminders/service.py backend/src/saint_tibo/modules/results/__init__.py backend/src/saint_tibo/modules/results/models.py backend/src/saint_tibo/modules/results/router.py backend/src/saint_tibo/modules/results/schemas.py backend/src/saint_tibo/modules/results/service.py backend/tests/conftest.py backend/tests/test_api.py backend/tests/test_auth.py backend/tests/test_canvas.py backend/tests/test_config.py backend/tests/test_database.py backend/tests/test_export.py backend/tests/test_extraction.py backend/tests/test_identity.py backend/tests/test_rbac.py backend/uv.lock bunfig.toml compose.yaml contracts/openapi.json docs/access-control.md docs/api-extraction.md docs/architecture.md docs/browser-testing.md docs/capture.md docs/case.md docs/conventions.md docs/current-state.md docs/dev-server.md docs/development.md docs/diarization.md docs/honcho-ask.md docs/honcho.md docs/integration-plan.md docs/landing-story.md docs/llm-feasibility.md docs/media-proxy.md docs/meeting-connectors.md docs/meeting-contract.md docs/mock-api.md docs/player.md docs/processing-jobs.md docs/product-baseline.md docs/recording-storage.md docs/reminders.md docs/remote-extract.md docs/remote-stt.md docs/reviewed-results.md docs/session-handoff.md docs/stt-feasibility.md docs/transcript-sync.md docs/transcription.md docs/ui-architecture.md docs/ui-kit.md frontend/.dockerignore frontend/.gitignore frontend/.storybook/css-url.d.ts frontend/.storybook/main.ts frontend/.storybook/preview.tsx frontend/.storybook/vite.config.ts frontend/Dockerfile frontend/README.md frontend/bun.lock frontend/bunfig.toml frontend/components.json frontend/drizzle.auth.config.ts frontend/drizzle/auth/0000_burly_doctor_faustus.sql frontend/drizzle/auth/0001_organic_korg.sql frontend/drizzle/auth/meta/0000_snapshot.json frontend/drizzle/auth/meta/0001_snapshot.json frontend/drizzle/auth/meta/_journal.json frontend/messages/en.json frontend/messages/kk.json frontend/messages/ru.json frontend/oxfmt.config.ts frontend/oxlint.config.ts frontend/package.json frontend/paraglide.config.ts frontend/patches/[email protected] frontend/project.inlang/settings.json frontend/public/brand-bird.svg frontend/public/brand-logo.svg frontend/public/favicon.svg frontend/public/fonts/OFL.txt frontend/public/fonts/ptsans-400-cyr.woff2 frontend/public/fonts/ptsans-400-ext.woff2 frontend/public/fonts/ptsans-400-lat.woff2 frontend/public/fonts/ptsans-400-latx.woff2 frontend/public/fonts/ptsans-700-cyr.woff2 frontend/public/fonts/ptsans-700-ext.woff2 frontend/public/fonts/ptsans-700-lat.woff2 frontend/public/fonts/ptsans-700-latx.woff2 frontend/scripts/auth-smoke-server.ts frontend/scripts/generate-i18n.ts frontend/scripts/i18n.ts frontend/scripts/seed-dev.ts frontend/scripts/seed.ts frontend/scripts/setup.ts frontend/scripts/test-integration.ts frontend/scripts/token.ts frontend/server.ts frontend/src/app/layouts/app-shell.tsx frontend/src/app/providers/query-client.ts frontend/src/app/router.tsx frontend/src/app/routes/__root.tsx frontend/src/app/routes/_app.admin.access.tsx frontend/src/app/routes/_app.admin.people.tsx frontend/src/app/routes/_app.admin.users.tsx frontend/src/app/routes/_app.agenda.tsx frontend/src/app/routes/_app.analytics.tsx frontend/src/app/routes/_app.ask.tsx frontend/src/app/routes/_app.briefing.tsx frontend/src/app/routes/_app.calendar.tsx frontend/src/app/routes/_app.capture.tsx frontend/src/app/routes/_app.index.tsx frontend/src/app/routes/_app.meetings.$meetingId.tsx frontend/src/app/routes/_app.meetings.index.tsx frontend/src/app/routes/_app.meetings.new.tsx frontend/src/app/routes/_app.notifications.tsx frontend/src/app/routes/_app.people.$personId.tsx frontend/src/app/routes/_app.people.index.tsx frontend/src/app/routes/_app.player.tsx frontend/src/app/routes/_app.profile.tsx frontend/src/app/routes/_app.settings.tsx frontend/src/app/routes/_app.tasks.tsx frontend/src/app/routes/_app.tsx frontend/src/app/routes/_app.workspace.tsx frontend/src/app/routes/api/auth/$.ts frontend/src/app/routes/api/dev-login.ts frontend/src/app/routes/api/media/meetings/$meetingId/recordings/$recordingId.ts frontend/src/app/routes/api/mock-mode.ts frontend/src/app/routes/api/mock/$.ts frontend/src/app/routes/dev-login.tsx frontend/src/app/routes/landing.tsx frontend/src/app/routes/login.tsx frontend/src/app/server/auth-db.server.ts frontend/src/app/server/auth-guards.server.ts frontend/src/app/server/auth-schema.ts frontend/src/app/server/auth.server.ts frontend/src/app/server/dev-login.server.ts frontend/src/app/server/media.server.ts frontend/src/app/server/mock-mode.server.ts frontend/src/app/start.ts frontend/src/app/styles/fonts.css frontend/src/app/styles/globals.css frontend/src/pages/capture/index.ts frontend/src/pages/capture/ui/capture-page.tsx frontend/src/pages/home/index.ts frontend/src/pages/home/ui/home-page.tsx frontend/src/pages/landing/index.ts frontend/src/pages/landing/ui/landing-page.tsx frontend/src/pages/login/index.ts frontend/src/pages/login/ui/login-page.tsx frontend/src/pages/meeting-workspace/api/meetings.ts frontend/src/pages/meeting-workspace/api/review.ts frontend/src/pages/meeting-workspace/index.ts frontend/src/pages/meeting-workspace/lib/copy.ts frontend/src/pages/meeting-workspace/lib/en.ts frontend/src/pages/meeting-workspace/lib/kk.ts frontend/src/pages/meeting-workspace/lib/ru.ts frontend/src/pages/meeting-workspace/ui/briefing-page.tsx frontend/src/pages/meeting-workspace/ui/canvas-panel.tsx frontend/src/pages/meeting-workspace/ui/create-meeting-page.tsx frontend/src/pages/meeting-workspace/ui/meeting-page.tsx frontend/src/pages/meeting-workspace/ui/meetings-page.tsx frontend/src/pages/meeting-workspace/ui/review-panel.tsx frontend/src/pages/meeting-workspace/ui/surfaces-page.tsx frontend/src/pages/org-ask/index.ts frontend/src/pages/org-ask/ui/org-ask-page.tsx frontend/src/pages/player/index.ts frontend/src/pages/player/lib/audio-waveform.ts frontend/src/pages/player/lib/server-transcript.ts frontend/src/pages/player/ui/player-page.tsx frontend/src/pages/reminders/api/reminders.ts frontend/src/pages/reminders/index.ts frontend/src/pages/reminders/lib/copy.ts frontend/src/pages/reminders/ui/notifications-page.tsx frontend/src/pages/workspace/index.ts frontend/src/pages/workspace/lib/workspace.ts frontend/src/pages/workspace/ui/review-editor.tsx frontend/src/pages/workspace/ui/workspace-page.tsx frontend/src/shared/api/backend-client.server.ts frontend/src/shared/api/backend-client.ts frontend/src/shared/api/capture-upload.ts frontend/src/shared/api/errors.ts frontend/src/shared/api/generated/@tanstack/react-query.gen.ts frontend/src/shared/api/generated/client.gen.ts frontend/src/shared/api/generated/client/client.gen.ts frontend/src/shared/api/generated/client/index.ts frontend/src/shared/api/generated/client/types.gen.ts frontend/src/shared/api/generated/client/utils.gen.ts frontend/src/shared/api/generated/core/auth.gen.ts frontend/src/shared/api/generated/core/bodySerializer.gen.ts frontend/src/shared/api/generated/core/params.gen.ts frontend/src/shared/api/generated/core/pathSerializer.gen.ts frontend/src/shared/api/generated/core/queryKeySerializer.gen.ts frontend/src/shared/api/generated/core/serverSentEvents.gen.ts frontend/src/shared/api/generated/core/types.gen.ts frontend/src/shared/api/generated/core/utils.gen.ts frontend/src/shared/api/generated/index.ts frontend/src/shared/api/generated/sdk.gen.ts frontend/src/shared/api/generated/types.gen.ts frontend/src/shared/api/index.server.ts frontend/src/shared/api/index.ts frontend/src/shared/api/query.ts frontend/src/shared/auth/admin-access.ts frontend/src/shared/auth/auth-cache-boundary.tsx frontend/src/shared/auth/auth-client.ts frontend/src/shared/auth/can.tsx frontend/src/shared/auth/index.server.ts frontend/src/shared/auth/index.ts frontend/src/shared/auth/permissions.test.ts frontend/src/shared/auth/permissions.ts frontend/src/shared/auth/route-access.ts frontend/src/shared/auth/use-access.ts frontend/src/shared/config/env.server.ts frontend/src/shared/config/env.ts frontend/src/shared/config/index.server.ts frontend/src/shared/config/index.ts frontend/src/shared/lib/a11y-settings.test.ts frontend/src/shared/lib/a11y-settings.ts frontend/src/shared/lib/audio-capture.ts frontend/src/shared/lib/locales.ts frontend/src/shared/ui/a11y-panel.tsx frontend/src/shared/ui/a11y-runtime.tsx frontend/src/shared/ui/brand-lockup.stories.tsx frontend/src/shared/ui/brand-lockup.tsx frontend/src/shared/ui/button.stories.tsx frontend/src/shared/ui/card.stories.tsx frontend/src/shared/ui/input.stories.tsx frontend/src/shared/ui/locale-switcher.tsx frontend/src/shared/ui/meeting-capture/index.tsx frontend/src/shared/ui/meeting-player/index.ts frontend/src/shared/ui/meeting-player/meeting-player.tsx frontend/src/shared/ui/meeting-player/persistent-player.tsx frontend/src/shared/ui/meeting-player/resume-position.ts frontend/src/shared/ui/meeting-player/speaker-intervals.ts frontend/src/shared/ui/meeting-player/types.ts frontend/src/shared/ui/route-states.tsx frontend/src/shared/ui/shadcn/alert-dialog.tsx frontend/src/shared/ui/shadcn/alert.tsx frontend/src/shared/ui/shadcn/badge.tsx frontend/src/shared/ui/shadcn/button.tsx frontend/src/shared/ui/shadcn/card.tsx frontend/src/shared/ui/shadcn/checkbox.tsx frontend/src/shared/ui/shadcn/dialog.tsx frontend/src/shared/ui/shadcn/dropdown-menu.tsx frontend/src/shared/ui/shadcn/empty.tsx frontend/src/shared/ui/shadcn/field.tsx frontend/src/shared/ui/shadcn/input.tsx frontend/src/shared/ui/shadcn/label.tsx frontend/src/shared/ui/shadcn/popover.tsx frontend/src/shared/ui/shadcn/select.tsx frontend/src/shared/ui/shadcn/separator.tsx frontend/src/shared/ui/shadcn/sheet.tsx frontend/src/shared/ui/shadcn/skeleton.tsx frontend/src/shared/ui/shadcn/spinner.tsx frontend/src/shared/ui/shadcn/switch.tsx frontend/src/shared/ui/shadcn/table.tsx frontend/src/shared/ui/shadcn/tabs.tsx frontend/src/shared/ui/shadcn/textarea.tsx frontend/src/shared/ui/shadcn/toast.tsx frontend/src/shared/ui/shadcn/tooltip.tsx frontend/src/shared/ui/surface-states.stories.tsx frontend/src/shared/ui/theme-toggle.tsx frontend/src/shared/ui/transcript-sync/index.ts frontend/src/shared/ui/transcript-sync/transcript-panel.tsx frontend/src/shared/ui/transcript-sync/types.ts frontend/src/shared/ui/transcript-sync/use-transcript-sync.ts frontend/steiger.config.mjs frontend/tsconfig.json frontend/tsr.config.json frontend/types/start-server.d.ts frontend/vite.config.ts infra/Caddyfile input-audio/Совещание №1.mp3 input-audio/Совещание №2.mp3 lefthook.yml package.json research/README.md research/sources/01-github-capture-audit.md research/sources/02-transcription-projects.md research/sources/03-remote-mcp.md research/sources/04-audit-retention-recovery.md research/sources/05-chat-bots.md research/sources/06-quality-evaluation.md research/sources/07-closed-processing.md research/sources/08-secrets-and-encryption.md research/sources/09-sso-and-device-trust.md research/sources/10-object-permissions.md research/sources/11-pii-redaction.md research/sources/12-security-verification.md research/sources/13-calendar-and-reminders.md research/sources/14-minutes-and-actions-lifecycle.md scripts/benchmark-extract.py scripts/benchmark-stt.py scripts/deploy.sh scripts/dev-deploy.sh tools/api-client/.gitignore tools/api-client/README.md tools/api-client/bun.lock tools/api-client/bunfig.toml tools/api-client/openapi-ts.config.ts tools/api-client/package.json tools/diarize/bundle.py tools/diarize/diarize.py tools/diarize/prepare_models.py tools/diarize/pyproject.toml tools/diarize/uv.lock tools/extract/Dockerfile.cuda tools/extract/extract/__init__.py tools/extract/extract/cli.py tools/extract/extract/client.py tools/extract/extract/prompt.py tools/extract/extract/runtime.py tools/extract/extract/schema.py tools/extract/pyproject.toml tools/extract/remote_runner.py tools/extract/run.py tools/honcho/.env.example tools/honcho/.gitignore tools/honcho/compose.yaml tools/honcho/external-api.compose.yaml tools/honcho/prepare-tiktoken-cache.sh tools/honcho/smoke.py tools/honcho/smoke.sh tools/meeting-capture/README.md tools/meeting-capture/google-meet/README.md tools/meeting-capture/google-meet/adapter.ts tools/meeting-capture/google-meet/audio.ts tools/meeting-capture/google-meet/browser.ts tools/meeting-capture/google-meet/process.ts tools/meeting-capture/google-meet/verify-browser.ts tools/meeting-capture/google-meet/verify.ts tools/meeting-capture/lifecycle.ts tools/meeting-capture/teams/.gitignore tools/meeting-capture/teams/README.md tools/meeting-capture/teams/adapter.ts tools/meeting-capture/teams/fixture.html tools/meeting-capture/teams/media.ts tools/meeting-capture/teams/network.ts tools/meeting-capture/teams/package.json tools/meeting-capture/teams/verify.ts tools/meeting-capture/url.ts tools/meeting-capture/verify.ts tools/meeting-capture/zoom/README.md tools/meeting-capture/zoom/adapter.ts tools/meeting-capture/zoom/audio-hook.ts tools/meeting-capture/zoom/verify.ts tools/mock-api/assemble_speech.py tools/mock-api/fixtures.json tools/mock-api/generate_speech.ps1 tools/mock-api/run-dev.ts tools/mock-api/server.py tools/mock-api/smoke.py tools/mock-api/smoke_site.py tools/mock-api/speech-live.wav tools/mock-api/speech-mixed.wav tools/mock-api/speech-ru.wav tools/mock-api/speech-timing.json tools/transcribe/.gitignore tools/transcribe/Dockerfile tools/transcribe/Dockerfile.cuda tools/transcribe/compose.remote.yaml tools/transcribe/prepare_model.py tools/transcribe/pyproject.toml tools/transcribe/remote_runner.py tools/transcribe/transcribe.py tools/transcribe/uv.lock
Ветки (17)
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.