Igor Loskutov
3be7fc0b9a
200ms webm daily doc
2026-01-09 10:54:12 -05:00
407c15299f
docs: docs website + installation ( #778 )
...
* feat: WIP doc (vibe started and iterated)
* install from scratch docs
* caddyfile.example
* gitignore
* authentik script
* authentik script
* authentik script
* llm doc
* authentik ongoing
* more daily setup logs
* doc website
* gpu self hosted setup guide (no-mistakes)
* doc review round
* doc review round
* doc review round
* update doc site sidebars
* feat(docs): add mermaid diagram support
* docs polishing
* live pipeline doc
* move pipeline dev docs to dev docs location
* doc pr review iteration
* dockerfile healthcheck
* docs/pr-comments
* remove jwt comment
* llm suggestion
* pr comments
* pr comments
* document auto migrations
* cleanup docs
---------
Co-authored-by: Mathieu Virbel <mat@meltingrocks.com >
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2026-01-06 17:25:02 -05:00
e644d6497b
correct workflow name for hatchet ( #815 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-29 20:36:36 -05:00
5f7b1ff1a6
fix: webhook parity, pipeline rename, waveform constant fix ( #806 )
...
* pipeline fixes: whereby Hatchet preparation
* send_webhook fixes
* cleanup
* self-review
* comment
* webhook util functions: less dependencies
* remove comment
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-26 18:00:32 -05:00
2d0df48767
feat: devex/hatchet log progress track ( #813 )
...
* progress track for some hatchet tasks
* remove inline imports / type fixes
* progress callback for mixdown - move to a function
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-26 14:10:21 -05:00
5baa6dd92e
pipeline type fixes ( #812 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-26 11:28:43 -05:00
bab1e2d537
dynamic mixdown hatchet ( #811 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-23 19:48:16 -05:00
e886153ae1
fix hatchet parallel syntax ( #810 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-23 18:45:06 -05:00
7b352f465e
dont always enable hatchet ( #809 )
...
* dont always enable hatchet
* fix hatchet worker params
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-23 18:15:33 -05:00
3cf9757ac2
diarization flow - pralellelize better ( #808 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-23 17:35:43 -05:00
d9d3938192
better hatchet concurrency limits ( #807 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-23 17:26:23 -05:00
594bcc09e0
feat: parallelize hatchet ( #804 )
...
* parallelize hatchet (no-mistakes)
* dry (no-mistakes) (minimal)
* comments
* self-review
* self-review
* self-review
* self-review
* pr comments
* pr comments
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-23 11:03:36 -05:00
1dac999b56
feat: durable ( #794 )
...
* durable (no-mistakes)
* hatchet no-mistake
* hatchet no-mistake
* hatchet no-mistake, better logging
* remove conductor and add hatchet tests (no-mistakes)
* self-review (no-mistakes)
* hatched logs
* remove shadow mode for hatchet
* and add hatchet processor setting to room
* .
* cleanup
* hatchet init db
* self-review (no-mistakes)
* self-review (no-mistakes)
* hatchet: restore zullip report
* self-review round
* self-review round
* self-review round
* dry hatchet with celery
* dry hatched with celery - 2
* self-review round
* more NES instead of str
* self-review wip
* self-review round
* self-review round
* self-review round
* can_replay cancelled
* add forgotten file
* pr autoreviewer fixes
* better log webhook events
* durable_started return
* migration sync
* latest changes feature parity
* migration merge
* pr review
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-22 12:09:20 -05:00
f580b996ee
feat: increase daily recording max duration ( #801 )
...
* increate daily recording max duration
* recording end time: 3h min
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-22 09:02:14 -05:00
225783496f
feat: consent disable feature ( #799 )
...
* consent disable feature (no-mistakes)
* sync migration
* consent disable refactor
* daily backend code refactor
* consent skip feature
* consent skip feature
* no forced whereby recording indicator
* active meetings type precision
* cleanup
* cleanup
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-22 08:47:07 -05:00
964cd78bb6
feat: identify action items ( #790 )
...
* Identify action items
* Add action items to mock summary
* Add action items validator
* Remove final prefix from action items
* Make on action items callback required
* Don't mutation action items response
* Assign action items to none on error
* Use timeout constant
* Exclude action items from transcript list
2025-12-18 21:13:47 +01:00
5f458aa4a7
fix: automatically reprocess daily recordings ( #797 )
...
* Automatically reprocess recordings
* Restore the comments
* Remove redundant check
* Fix indent
* Add comment about cyclic import
2025-12-18 21:10:04 +01:00
5f7dfadabd
fix: retry on workflow timeout ( #798 )
2025-12-18 20:49:06 +01:00
c62e3c0753
incorporate daily api undocumented feature ( #796 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-17 09:51:55 -05:00
0eba147018
fix: populate room_name in transcript GET endpoint ( #783 )
...
Fixes monadical/internalai#14
2025-12-11 12:37:59 +01:00
61f0e29d4c
feat: llm retries ( #739 )
...
* llm retries no-mistakes
* self-review (no-mistakes)
* self-review (no-mistakes)
* bigger retry intervals by default
* tests and dry
* restore to main state
* parse retries
* json retries (no-mistakes)
* json retries (no-mistakes)
* json retries (no-mistakes)
* json retries (no-mistakes) self-review
* additional network retry test
* more lindt
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-05 12:08:21 -05:00
ec17ed7b58
fix: celery inspect bug sidestep in restart script ( #766 )
...
* celery bug sidestep
* Update server/reflector/services/transcript_process.py
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
2025-12-04 09:22:51 -05:00
d3a5cd12d2
fix: return participant emails from transcript endpoint ( #769 )
...
* Return participant emails from transcript endpoint
* Fix broken test
2025-12-03 16:47:56 +01:00
bd5df1ce2e
fix: Multitrack mixdown optimisation 2 ( #764 )
...
* Revert "fix: Skip mixdown for multitrack (#760 )"
This reverts commit b51b7aa917 .
* multitrack mixdown optimisation
* return the "good" ui part of "skip mixdown"
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-02 17:10:06 -05:00
28f87c09dc
fix: align daily room settings ( #759 )
...
* Switch platform ui
* Update room settings based on platform
* Add local and none recording options to daily
* Don't create tokens for unauthentikated users
* Enable knocking for private rooms
* Create new meeting on room settings change
* Always use 2-200 option for daily
* Show recording start trigger for daily
* Fix broken test
2025-12-02 09:06:36 +01:00
b51b7aa917
fix: Skip mixdown for multitrack ( #760 )
...
* multitrack mixdown optimisation
* skip mixdown for multitrack
* skip mixdown for multitrack
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-01 23:35:12 -05:00
7f0b728991
fix: participants update from daily ( #749 )
...
* Fix participants update from daily
* Use track keys from params
2025-11-27 16:53:26 +01:00
d63040e2fd
feat: Multitrack segmentation ( #747 )
...
* segmentation multitrack (no-mistakes)
* segmentation multitrack (no-mistakes)
* self review
* self review
* recording poll daily doc
* filter cam_audio tracks to remove screensharing from daily processing
* pr review
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-26 16:21:32 -05:00
f6ca07505f
feat: add transcript format parameter to GET endpoint ( #709 )
...
* feat: add transcript format parameter to GET endpoint
Add transcript_format query parameter to /v1/transcripts/{id} endpoint
with support for multiple output formats using discriminated unions.
Formats supported:
- text: Plain speaker dialogue (default)
- text-timestamped: Dialogue with [MM:SS] timestamps
- webvtt-named: WebVTT subtitles with participant names
- json: Structured segments with full metadata
Response models use Pydantic discriminated unions with transcript_format
as discriminator field. POST/PATCH endpoints return GetTranscriptWithParticipants
for minimal responses. GET endpoint returns format-specific models.
* Copy transcript format
* Regenerate types
* Fix transcript formats
* Don't throw inside try
* Remove any type
* Toast share copy errors
* transcript_format exhaustiveness and python idiomatic assert_never
* format_timestamp_mmss clear type definition
* Rename seconds_to_timestamp
* Test transcript format with overlapping speakers
* exact match for vtt multispeaker test
---------
Co-authored-by: Sergey Mankovsky <sergey@monadical.com >
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-26 18:51:14 +01:00
0b2c82227d
is_owner pass for dailyco ( #745 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-25 22:41:54 -05:00
86d5e26224
feat: transcript restart script ( #742 )
...
* transcript restart script
* fix tests?
* remove useless comment
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-25 16:28:43 -05:00
9bec39808f
feat: link transcript participants ( #737 )
...
* Sync authentik users
* Migrate user_id from uid to id
* Fix auth user id
* Fix ci migration test
* Fix meeting token creation
* Move user id migration to a script
* Add user on first login
* Fix migration chain
* Rename uid column to authentik_uid
* Fix broken ws test
2025-11-25 19:13:19 +01:00
c442a62787
fix: default platform fix ( #736 )
...
* default platform fix
* default platform fix
* default platform fix
* Update server/reflector/db/rooms.py
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
* default platform fix
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
2025-11-24 23:10:34 -05:00
8e438ca285
feat: dailyco poll ( #730 )
...
* dailyco api module (no-mistakes)
* daily co library self-review
* uncurse
* self-review: daily resource leak, uniform types, enable_recording bomb, daily custom error, video_platforms/daily typing, daily timestamp dry
* dailyco docs parser
* phase 1-2 of daily poll
* dailyco poll (no-mistakes)
* poll docs
* fix tests
* forgotten utils file
* remove generated daily docs
* pr comments
* dailyco poll pr review and self-review
* daily recording poll api fix
* daily recording poll api fix
* review
* review
* fix tests
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-24 22:24:03 -05:00
11731c9d38
feat: multitrack cli ( #735 )
...
* multitrack cli prd
* prd/todo (no-mistakes)
* multitrack cli (no-mistakes)
* multitrack cli (no-mistakes)
* multitrack cli (no-mistakes)
* multitrack cli (no-mistakes)
* remove multitrack tests most worthless
* useless comments away
* useless comments away
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-24 10:35:06 -05:00
4287f8b8ae
feat: dailyco api module ( #725 )
...
* dailyco api module (no-mistakes)
* daily co library self-review
* uncurse
* self-review: daily resource leak, uniform types, enable_recording bomb, daily custom error, video_platforms/daily typing, daily timestamp dry
* dailyco docs parser
* remove generated daily docs
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-21 10:24:04 -05:00
616092a9bb
keep only debug log for tracks with no words ( #724 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-18 10:40:46 -05:00
b20cad76e6
feat: daily QOL: participants dictionary ( #721 )
...
* daily QOL: participants dictionary
* meeting deactivation fix
* meeting deactivation fix
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-14 14:31:52 -05:00
857e035562
fix whereby reprocess logic branch ( #720 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-13 11:35:29 -05:00
1473fd82dc
feat: daily.co support as alternative to whereby ( #691 )
...
* llm instructions
* vibe dailyco
* vibe dailyco
* doc update (vibe)
* dont show recording ui on call
* stub processor (vibe)
* stub processor (vibe) self-review
* stub processor (vibe) self-review
* chore(main): release 0.14.0 (#670 )
* Add multitrack pipeline
* Mixdown audio tracks
* Mixdown with pyav filter graph
* Trigger multitrack processing for daily recordings
* apply platform from envs in priority: non-dry
* Use explicit track keys for processing
* Align tracks of a multitrack recording
* Generate waveforms for the mixed audio
* Emit multriack pipeline events
* Fix multitrack pipeline track alignment
* dailico docs
* Enable multitrack reprocessing
* modal temp files uniform names, cleanup. remove llm temporary docs
* docs cleanup
* dont proceed with raw recordings if any of the downloads fail
* dry transcription pipelines
* remove is_miltitrack
* comments
* explicit dailyco room name
* docs
* remove stub data/method
* frontend daily/whereby code self-review (no-mistake)
* frontend daily/whereby code self-review (no-mistakes)
* frontend daily/whereby code self-review (no-mistakes)
* consent cleanup for multitrack (no-mistakes)
* llm fun
* remove extra comments
* fix tests
* merge migrations
* Store participant names
* Get participants by meeting session id
* pop back main branch migration
* s3 paddington (no-mistakes)
* comment
* pr comments
* pr comments
* pr comments
* platform / meeting cleanup
* Use participant names in summary generation
* platform assignment to meeting at controller level
* pr comment
* room playform properly default none
* room playform properly default none
* restore migration lost
* streaming WIP
* extract storage / use common storage / proper env vars for storage
* fix mocks tests
* remove fall back
* streaming for multifile
* cenrtal storage abstraction (no-mistakes)
* remove dead code / vars
* Set participant user id for authenticated users
* whereby recording name parsing fix
* whereby recording name parsing fix
* more file stream
* storage dry + tests
* remove homemade boto3 streaming and use proper boto
* update migration guide
* webhook creation script - print uuid
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
Co-authored-by: Mathieu Virbel <mat@meltingrocks.com >
Co-authored-by: Sergey Mankovsky <sergey@monadical.com >
2025-11-12 21:21:16 -05:00
372202b0e1
feat: add API key management UI ( #716 )
...
* feat: add API key management UI
- Created settings page for users to create, view, and delete API keys
- Added Settings link to app navigation header
- Fixed delete operation return value handling in backend to properly handle asyncpg's None response
* feat: replace browser confirm with dialog for API key deletion
- Added Chakra UI Dialog component for better UX when confirming API key deletion
- Implemented proper focus management with cancelRef for accessibility
- Replaced native browser confirm() with controlled dialog state
* style: format API keys page with consistent line breaks
* feat: auto-select API key text for easier copying
- Added automatic text selection after API key creation to streamline the copy workflow
- Applied className to Code component for DOM targeting
* feat: improve API keys page layout and responsiveness
- Reduced max width from 1200px to 800px for better readability
- Added explicit width constraint to ensure consistent sizing across viewports
* refactor: remove redundant comments from API keys page
2025-11-10 18:25:08 -05:00
962c40e2b6
feat: search date filter ( #710 )
...
* search date filter
* search date filter
* search date filter
* search date filter
* pr comment
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-10-23 20:16:43 -04:00
3c4b9f2103
chore: error reporting and naming ( #708 )
...
* chore: error reporting and naming
* chore: error reporting and naming
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-10-22 13:45:08 -04:00
c6c035aacf
removal of email-verified from /me ( #707 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-10-21 14:49:33 -04:00
9a258abc02
feat: api tokens ( #705 )
...
* feat: api tokens (vibe)
* self-review
* remove token terminology + pr comments (vibe)
* return email_verified
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-10-20 12:55:25 -04:00
5f6910e513
feat: Add calendar event data to transcript webhook payload ( #689 )
...
* feat: add calendar event data to transcript webhook payload and implement get_by_id method
* Update server/reflector/worker/webhook.py
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
* Update server/reflector/worker/webhook.py
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
* style: format conditional time fields with line breaks for better readability
* docs: add calendar event fields to transcript.completed webhook payload schema
---------
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
2025-10-08 11:11:57 -05:00
9a71af145e
fix: update transcript list on reprocess ( #676 )
...
* Update transcript list on reprocess
* Fix transcript create
* Fix multiple sockets issue
* Pass token in sec websocket protocol
* userEvent parse example
* transcript list invalidation non-abstraction
* Emit only relevant events to the user room
* Add ws close code const
* Refactor user websocket endpoint
* Refactor user events provider
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-10-07 19:11:30 +02:00
1dee255fed
parakeet endpoint doc ( #679 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-10-07 10:41:01 -04:00
5d98754305
fix: security review ( #656 )
...
* Add security review doc
* Add tests to reproduce security issues
* Fix security issues
* Fix tests
* Set auth auth backend for tests
* Fix ics api tests
* Fix transcript mutate check
* Update frontent env var names
* Remove permissions doc
2025-09-29 23:07:49 +02:00
5bf64b5a41
feat: docker-compose for production frontend ( #664 )
...
* docker-compose for production frontend
* fix: Remove external Redis port mapping for Coolify compatibility
Redis should only be accessible within the internal Docker network in Coolify deployments to avoid port conflicts with other applications.
* fix: Remove external port mapping for web service in Coolify
Coolify handles port exposure through its proxy (Traefik), so services should not expose ports directly in the docker-compose file.
* server side client envs
* missing vars
* nextjs experimental
* fix claude 'fix'
* remove build env vars compose
* docker
* remove ports for coolify
* review
* cleanup
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-09-24 11:15:27 -04:00