Releases: The-Yak-Collective/openrecapper
Releases · The-Yak-Collective/openrecapper
Release list
v1.2.0
Highlights
- Hard-gated
/recordmeeting names. The/recordcommand now validates the meeting name server-side against the configuredRECORD_MEETING_NAMESallow-list — Discord's choice dropdown enforced this only client-side before, so a stale choice or hand-crafted interaction could previously smuggle in an arbitrary name. - Multi-recorder support. Run up to N concurrent recordings per server via a pool of recorder bots, with lease handling hardened against stale
/stoppaths releasing the wrong lease. /openrecapper-issuecommand. File GitHub issues straight from Discord, with cc mentions and corrected reply visibility./set-summary-channel+ resilient delivery. Route summaries to a chosen channel; delivery now degrades gracefully when the audio file is too large to attach.- relay-exedev reference relay. Added the reference relay implementation plus a soft summary-length target.
Recording & transcription
- Group R2 recordings by meeting name.
- Defer the live transcription stream until the first PCM chunk per user.
- Recover the Opus decoder after a corrupt packet instead of dropping the user.
- Skip cleanup for sessions marked with
DO_NOT_DELETE.md. - Improved recording access, voice capture, and summary attribution; removed speaker attribution from summaries.
Fixes
- Fixed slash-command duplication, dropped-speaker capture, and granted-user
/stopaccess. - Hardened schedule text-channel validation.
Docs
- Fixed the Discord setup guide (required intents, permission integer
3263488) and refreshed the README.
v1.1.0 — /schedule UI, silence timeout, recording cleanup
Added
- Standing-call schedule UI —
/schedule list | add | edit | remove | pause | resumeto manage multiple auto-record schedules at runtime (no restart). Schedules persist todata/schedules.json, referenced by short id with autocomplete. Admin-gated (Manage Server); grantable to a role via Discord's native command permissions. - Silence timeout — the bot auto-leaves a voice channel after a configurable period with no voice activity (
SILENCE_TIMEOUT_MINUTES, default 20), so a cancelled call doesn't leave it recording indefinitely. Cleans up the empty session and skips transcription/summary. - Automatic recording cleanup — old, already-transcribed audio files are pruned on a retention schedule (
RECORDING_RETENTION_DAYS, default 7) to keep disk usage bounded; transcripts/summaries are preserved.
Changed
- Scheduler refactored from a single env-var-driven cron job to managing N jobs from the schedule store. Legacy
SCHEDULED_*env vars now seed the store once on first run, then are ignored (the JSON store is canonical).
Full changelog: https://github.com/The-Yak-Collective/openrecapper/blob/main/CHANGELOG.md
v1.0.0 — Initial public release
Initial public release of OpenRecapper — an open-source Discord bot that records voice channels, produces speaker-labeled transcripts, and writes a structured AI call summary, then optionally emails it to your group.
Highlights
- Recording —
/record,/stop,/status; auto-stops when everyone leaves; DAVE E2EE voice supported. - Transcription — live transcript streamed as people talk, plus high-quality batch transcription (Deepgram Nova-3) with speaker diarization.
- AI summary (optional) — structured Markdown recap (overview, key points, open questions, references, action items) via a companion relay.
- Email delivery (optional) — summary + transcript links sent to a configured address.
- Cloud archival (optional) — uploads recordings/transcripts to any S3-compatible bucket (e.g. Cloudflare R2) with download links.
- Scheduled recording (optional) — auto-join a standing call on a cron schedule.
- Startup health check — validates the Deepgram key on boot.
Self-hosted by design: run your own Discord app, Deepgram account, and (optional) storage/summarization services. See the README for setup.