Releases: themadorg/bedrud
Nightly 20260614
Nightly Build
Automated nightly build from master at 825b30a.
Changes
- ci: add auto-deploy workflow for live server instance (
825b30a)
Artifacts
| Platform | Asset |
|---|---|
| Linux x86_64 | bedrud_linux_amd64.tar.xz |
| Linux ARM64 | bedrud_linux_arm64.tar.xz |
| macOS x86_64 | bedrud_darwin_amd64.tar.xz |
| macOS ARM64 | bedrud_darwin_arm64.tar.xz |
| Android (universal) | bedrud-android-universal-debug.apk |
| Android arm64-v8a | bedrud-android-arm64-v8a-debug.apk |
| Android armeabi-v7a | bedrud-android-armeabi-v7a-debug.apk |
| Android x86_64 | bedrud-android-x86_64-debug.apk |
| Desktop Linux x86_64 | bedrud-desktop-linux-x86_64.tar.xz |
| Desktop Linux ARM64 | bedrud-desktop-linux-arm64.tar.xz |
| Desktop Windows x86_64 | bedrud-desktop-windows-x86_64.zip |
| Desktop Windows ARM64 | bedrud-desktop-windows-arm64.zip |
| Web | bedrud-web.tar.xz |
| Docker | ghcr.io/themadorg/bedrud:nightly-20260614 |
This is an automated pre-release. Use tagged releases for production.
Dev 825b30a
Dev Build
Built from 825b30a.
Changes
- ci: add auto-deploy workflow for live server instance (
825b30a) - fix types, clean up imports, and switch react-markdown to direct import (
360e2dc) - remove inline admin mutations for shared DataTable approach (
1910b99) - add E2EE architecture docs across 10 locales (
45bddfb)
Artifacts
| Platform | Asset |
|---|---|
| Linux x86_64 | bedrud_linux_amd64.tar.xz |
| Linux ARM64 | bedrud_linux_arm64.tar.xz |
| macOS x86_64 | bedrud_darwin_amd64.tar.xz |
| macOS ARM64 | bedrud_darwin_arm64.tar.xz |
| Android (universal) | bedrud-android-universal-debug.apk |
| Android arm64-v8a | bedrud-android-arm64-v8a-debug.apk |
| Android armeabi-v7a | bedrud-android-armeabi-v7a-debug.apk |
| Android x86_64 | bedrud-android-x86_64-debug.apk |
| Desktop Linux x86_64 | bedrud-desktop-linux-x86_64.tar.xz |
| Desktop Linux ARM64 | bedrud-desktop-linux-arm64.tar.xz |
| Desktop Windows x86_64 | bedrud-desktop-windows-x86_64.zip |
| Desktop Windows ARM64 | bedrud-desktop-windows-arm64.zip |
| Web | bedrud-web.tar.xz |
| Docker | ghcr.io/themadorg/bedrud:dev-825b30a |
This is an automated pre-release. Use tagged releases for production.
PR #24 Beta – df30800
Beta Build for PR #24
deps(android): bump the gradle-all group across 1 directory with 5 updates
Built from df30800 on branch dependabot/gradle/apps/android/gradle-all-b516f30095.
Artifacts
This is an automated beta pre-release. It will be deleted when the PR is closed or merged.
PR #23 Beta – 37cc6c3
Beta Build for PR #23
deps(server): bump the go-all group across 1 directory with 4 updates
Built from 37cc6c3 on branch dependabot/go_modules/server/go-all-a441e98222.
Artifacts
This is an automated beta pre-release. It will be deleted when the PR is closed or merged.
v0.10.0
- Admin dashboard — Complete overhaul featuring tabbed settings, queue health monitoring with events log, overview widgets, a powerful reusable
DataTablecomponent (search, pagination, faceted filters, bulk actions), confirmation dialogs for destructive actions, robust error/retry handling, and role-aware UI. - Async job queue system — New background job queue with retry and backoff for long-running operations (room/user deletion, suspension, S3 chat upload cleanup). Includes bulk admin endpoints.
- New subsystems:
- Recording (foundational wiring, config, and cascade cleanup on room soft-delete).
- Outbound webhooks with HMAC-SHA256 signing for room events.
- Full email verification flow (canonicalization, cooldowns, verification audit trail, auto-login on success, dedicated admin settings tab).
- Security & hardening:
- Configurable rate limiting (YAML + environment overrides) with tests.
- In-memory banned user cache + middleware guards.
- Password hashing upgraded to SHA-256 + bcrypt.
- Atomic refresh token rotation.
- Passkey improvements (clone detection, scoped deletes, stateless
ChallengeStore). - Input sanitization,
SafeIOpackage for symlink-safe file operations, Helmet middleware, body size limits.
- TLS & LiveKit integration — Multi-algorithm self-signed certificate generation (ed25519 / ecdsa / rsa) with renewal and PEM validation, scheduler-driven auto-renewal, new
bedrud certCLI command, automatic TURN/TLS configuration for embedded LiveKit from the server certificate, SAN support, and outbound IP handling. - Resource governance — Room participant limits (
maxParticipantsLimit), upload quotas with S3 deletion on cleanup, chat message retention policies, persistent rooms (admin-pinned rooms that skip idle/expiry cleanup), and room soft-delete with scoped name uniqueness. - CLI — Complete migration from custom flag parsing to Cobra + Viper. New rich subcommands for users, rooms, configuration, settings, invite tokens, database, and certificates. Added
--adminflag for direct superadmin creation during bootstrapping. Role parameter support on promote/demote. - Frontend performance & UX —
React.lazy+ Suspense for heavy dependencies (recharts admin chart, react-markdown), extensive meeting room stabilization (memoization, stable refs/handlers/keys to reduce re-renders and fix DOM reuse issues), full conversion of meeting room to Tailwind CSS, ErrorBoundaries, accessibility improvements (RTL logical CSS properties, ARIA attributes, skip links, reduced motion, focus management), and a newDisconnectedOverlaywith timeout and manual recovery. - Internationalization — Initial
react-intl+IntlProvidersetup in the web app with string extraction for auth and error pages. Comprehensive documentation updates and new guides across all 10 supported locales. - Meeting experience — Disconnected overlay with 30s timeout + retry/leave, focus trap, secure context banner, chat clustering and key stability fixes, elapsed time display, push-to-talk microphone state restoration, and proper AudioContext cleanup on mobile.
Backend & API
New Features & Subsystems
- Recording subsystem (bootstrap wiring, configuration, cascade cleanup on soft-delete, Swagger updates).
- Outbound webhook dispatch with HMAC-SHA256 signatures for room events.
- Email verification (POST endpoint with JSON response and auto-login, canonicalization, cooldown, audit trail, admin settings tab).
- Structured
ApiErrorresponses and hydrated auth success payloads. - Health (
/health) and readiness (/ready) check endpoints. - Admin TLS certificate info, startup validation, and daily expiry checks via scheduler.
- Room soft-delete, suspend endpoint, persistent rooms, capacity enforcement (atomic join), and bulk admin operations.
- Admin user deletion (async 3-phase), force-logout, and set-password endpoints.
Security & Platform Hardening
- Configurable rate limiting with YAML/env support and tests.
- In-memory banned user cache and middleware guards.
- Password hashing upgrade (SHA-256 + bcrypt) and related infrastructure.
- Atomic refresh token rotation (
UpdateRefreshTokenAtomic). - Passkey clone detection, scoped deletion, and migration to in-memory
ChallengeStore. - OAuth and passkey signup flow hardening.
SafeIOpackage providing symlink-guarded file operations (adopted for TLS and logging).- API hardening with Helmet middleware, request body limits, and auth/guest rate limiting.
- SQLite optimizations (WAL mode, foreign key constraints) and model type fixes.
Operations & CLI
- Full migration of the CLI entrypoint to Cobra + Viper command structure.
- New subcommands:
user(create with--admin, promote/demote with role, delete, set-password),room,config,settings,invite-token,db,cert. - Improved flag parsing, syntax consistency (
--configplacement), and cross-compile fixes. - Go version updated to 1.26 across manifests; Cobra/Viper promoted to direct dependencies.
- Scheduler enhancements: guest cleanup, idle room deactivation, periodic token cleanup, and certificate auto-renewal.
Testing & Documentation
- Added integration tests, negative authorization tests, and room CRUD/participant/transactional tests.
- Multiple Swagger documentation regenerations for new endpoints (verify, recording, webhook, email verification, health, cert, etc.).
Admin Panel & Dashboard
- Major architectural refactor into tabbed settings (email, webhook, TLS, etc.), queue health dashboard with live events log, and overview widgets.
- Introduced reusable
DataTablecomponents with search, pagination, faceted filters, and bulk actions. - Confirmation dialogs (
AlertConfirmDialog) for all destructive admin actions (ban, promote, kick, bulk operations). - Proper error state handling: banners + retry buttons on admin queries;
onErrortoasts on mutations. - Role badges (admin/moderator) and Guest account indicators in user tables, with direct links to detail pages.
- TLS certificate status card and indicator in dashboard and settings.
- Significant component extraction and dead code removal (deleted ~539 lines of legacy
UserTable/RoomTablein favor ofRoomCard+PasskeyButton). - Improved loading and error UX across admin routes (replaced
beforeLoadwith loader-based server-confirmed admin checks).
Web Frontend (React + TanStack Start)
Internationalization
- Installed
react-intland addedIntlProviderwiring. - Initial string extraction for authentication and error pages.
Performance
- Dynamic imports via
React.lazy+Suspenseforrecharts(admin overview chart) andreact-markdown. - Extensive memoization, stable callback refs, and data-attribute usage in meeting components to reduce unnecessary re-renders.
- Stable keys for chat display items (clusters, separators, system messages) to prevent React DOM reuse bugs on new messages.
Meeting Room
- Complete conversion from inline styles to Tailwind CSS classes.
- Added
ErrorBoundarywrappers. - New
DisconnectedOverlaycomponent with spinner, 30-second timeout, and manual retry/leave actions. - Focus trap and secure context warning banner.
- Chat refinements and performance fixes.
- Elapsed meeting time display (removed unused LIVE badge).
- Proper cleanup of
AudioContexton mobile and restoration of mic/PTT state on unmount. - Unmount-safe async state updates in auth routes and meeting components.
Accessibility & UX
- Widespread accessibility improvements: logical CSS properties for RTL support, ARIA attributes on buttons,
type="button"where appropriate, skip links, reduced motion preferences,aria-liveregions, and icon labeling. - Polished authentication flow, dashboard layout, home page, user settings, and video preferences (webcam mirror toggle).
- Added forgot/reset password flow.
- New catch-all 404 route (
routes/$.tsx) usingErrorPagecomponent.
Build & Components
- Updated build configuration for Bun runtime and improved vendor chunk splitting.
- Added PWA manifest with icons, screenshots, and description.
- Added new shadcn/ui components and ErrorBoundary infrastructure.
- Removed unused props and cleaned up component APIs.
Documentation & Internationalization (Site)
Extensive updates across all 10 locales (en, de, fr, es, zh, ja, tr, fa, ar, ru):
- Architecture, API authentication, backend, and configuration documentation.
- New "Roles" guide.
- TLS improvements (multi-algorithm certificates, auto-configuration with LiveKit, SAN support, renewal, distribution, and internal guides).
- Resource governance features (room limits, upload quotas, chat retention).
- CLI reference documentation (new
--adminflag and subcommands). - Health and readiness checks, behind-proxy deployment guide.
- New blog post: "ed25519-self-signed-certs" (all 10 locales).
- Agent skills documentation (
AGENTS.md) and repository guide updates covering the queue system, admin panel,lkutil, services,ChatUpload, and frontend conventions. - Sidebar and i18n key synchronization.
Desktop App (Rust + Slint)
- Fixed audio device enumeration (correct device name and ID extraction).
- Migrated to
keyring-corecrate with proper native store initialization. - Cleaned up desktop authentication UI (removed redundant error label padding).
- Dependency group bumps via Dependabot (cargo-all).
Android App
- Multiple Gradle dependency group updates.
- Added internationalization / localization support (initial translations and resource handling).
- Lint fixes for translatable resources.
Dependencies & Tooling
- Numerous Dependabot updates across:
- Go modules (server)
- Cargo (desktop)
- Gradle (Android)
- GitHub Actions
- Go version bumps to 1.26 in multiple locations.
- Promo...
Nightly 20260531
Nightly Build
Automated nightly build from master at 360e2dc.
Changes
- fix types, clean up imports, and switch react-markdown to direct import (
360e2dc) - remove inline admin mutations for shared DataTable approach (
1910b99) - add E2EE architecture docs across 10 locales (
45bddfb)
Artifacts
| Platform | Asset |
|---|---|
| Linux x86_64 | bedrud_linux_amd64.tar.xz |
| Linux ARM64 | bedrud_linux_arm64.tar.xz |
| macOS x86_64 | bedrud_darwin_amd64.tar.xz |
| macOS ARM64 | bedrud_darwin_arm64.tar.xz |
| Android (universal) | bedrud-android-universal-debug.apk |
| Android arm64-v8a | bedrud-android-arm64-v8a-debug.apk |
| Android armeabi-v7a | bedrud-android-armeabi-v7a-debug.apk |
| Android x86_64 | bedrud-android-x86_64-debug.apk |
| Desktop Linux x86_64 | bedrud-desktop-linux-x86_64.tar.xz |
| Desktop Linux ARM64 | bedrud-desktop-linux-arm64.tar.xz |
| Desktop Windows x86_64 | bedrud-desktop-windows-x86_64.zip |
| Desktop Windows ARM64 | bedrud-desktop-windows-arm64.zip |
| Web | bedrud-web.tar.xz |
| Docker | ghcr.io/themadorg/bedrud:nightly-20260531 |
This is an automated pre-release. Use tagged releases for production.
Dev 360e2dc
Dev Build
Built from 360e2dc.
Changes
- fix types, clean up imports, and switch react-markdown to direct import (
360e2dc) - remove inline admin mutations for shared DataTable approach (
1910b99) - add E2EE architecture docs across 10 locales (
45bddfb)
Artifacts
| Platform | Asset |
|---|---|
| Linux x86_64 | bedrud_linux_amd64.tar.xz |
| Linux ARM64 | bedrud_linux_arm64.tar.xz |
| macOS x86_64 | bedrud_darwin_amd64.tar.xz |
| macOS ARM64 | bedrud_darwin_arm64.tar.xz |
| Android (universal) | bedrud-android-universal-debug.apk |
| Android arm64-v8a | bedrud-android-arm64-v8a-debug.apk |
| Android armeabi-v7a | bedrud-android-armeabi-v7a-debug.apk |
| Android x86_64 | bedrud-android-x86_64-debug.apk |
| Desktop Linux x86_64 | bedrud-desktop-linux-x86_64.tar.xz |
| Desktop Linux ARM64 | bedrud-desktop-linux-arm64.tar.xz |
| Desktop Windows x86_64 | bedrud-desktop-windows-x86_64.zip |
| Desktop Windows ARM64 | bedrud-desktop-windows-arm64.zip |
| Web | bedrud-web.tar.xz |
| Docker | ghcr.io/themadorg/bedrud:dev-360e2dc |
This is an automated pre-release. Use tagged releases for production.
Nightly 20260530
Nightly Build
Automated nightly build from master at eceae68.
Changes
- rename
api-refrencetoapi-reference(eceae68) - Improve site (#19) (
bf0b2c2) - update AdminUser(3x)/AdminRoom(2x) + extract ProviderBadge/Alert to shared for DRY (
0419156) - dynamically import recharts (overview chart) and react-markdown using React.lazy + Suspense to reduce initial bundle size (
64b4a36) - expose intermediate roles (admin/moderator) in admin users list via role badges and manage links to detail page (
d283b25) - add width and height attributes to lazy-loaded chat images from attachment metadata (
594fb58) - install react-intl + initial i18n setup with IntlProvider and string extraction (auth + error pages) (
315adcb) - add clarifying comment in ParticipantGrid explaining why no empty state (useParticipants always includes local user) (
d8e0f5a) - memoize dynamic styles and use data-* + stable handlers in meeting components (reduces re-renders in ParticipantTile) (
1993717) - stabilize markRead reference in MeetingChatContext using refs for lengths (prevents unnecessary re-renders on every message) (
66f296c) - use stable keys for DisplayItems in chat (first msg ID for clusters, counters for separators/system) to fix React DOM reuse on new messages (
0cb3c25) - delete dead UserTable/RoomTable (539 lines); wire reusable RoomCard + PasskeyButton (
945732d) - add routes/$.tsx catch-all 404 route using ErrorPage variant='not-found' (
1f07a38) - add DisconnectedOverlay with spinner, 30s timeout, and manual retry/leave on connection loss (
981472c) - add isError handling with error banner + retry button on admin queries (prevents empty/skeleton forever on failure) (
867a079) - add confirmation dialogs for destructive admin actions (ban/promote/kick + bulk) using AlertConfirmDialog (
54d8826) - add closeCtx() and call it from MeetingSoundEffects cleanup (prevents long-lived AudioContext on mobile) (
6d47692) - restore mic state in ControlsBar PTT cleanup on unmount (fixes stuck mic when Space held + leave meeting) (
81bf97c) - replace admin beforeLoad with loader for server-confirmed admin check (prevents non-admin flash) (
61ede32) - show error message in OAuth callback before redirecting to login (
27c2fa0) - add onError handlers to admin rooms and users mutations for error toasts (
8f17e0a) - improve pervasive accessibility: focus, contrast, skip link, reduced motion, aria-live, icon labels (
2d3ba56) - update .tsx files to logical CSS properties for RTL support (
e582b7e) - update AudioProcessorManager deps for correct attach-on-connect intent (
0d8a631) - update auth routes and meeting components for unmount-safe async state updates (
6ebad81) - update password placeholders for accurate validation hint (
b444239)
Artifacts
| Platform | Asset |
|---|---|
| Linux x86_64 | bedrud_linux_amd64.tar.xz |
| Linux ARM64 | bedrud_linux_arm64.tar.xz |
| macOS x86_64 | bedrud_darwin_amd64.tar.xz |
| macOS ARM64 | bedrud_darwin_arm64.tar.xz |
| Android (universal) | bedrud-android-universal-debug.apk |
| Android arm64-v8a | bedrud-android-arm64-v8a-debug.apk |
| Android armeabi-v7a | bedrud-android-armeabi-v7a-debug.apk |
| Android x86_64 | bedrud-android-x86_64-debug.apk |
| Desktop Linux x86_64 | bedrud-desktop-linux-x86_64.tar.xz |
| Desktop Linux ARM64 | bedrud-desktop-linux-arm64.tar.xz |
| Desktop Windows x86_64 | bedrud-desktop-windows-x86_64.zip |
| Desktop Windows ARM64 | bedrud-desktop-windows-arm64.zip |
| Web | bedrud-web.tar.xz |
| Docker | ghcr.io/themadorg/bedrud:nightly-20260530 |
This is an automated pre-release. Use tagged releases for production.
Dev eceae68
Dev Build
Built from eceae68.
Changes
- rename
api-refrencetoapi-reference(eceae68)
Artifacts
| Platform | Asset |
|---|---|
| Linux x86_64 | bedrud_linux_amd64.tar.xz |
| Linux ARM64 | bedrud_linux_arm64.tar.xz |
| macOS x86_64 | bedrud_darwin_amd64.tar.xz |
| macOS ARM64 | bedrud_darwin_arm64.tar.xz |
| Android (universal) | bedrud-android-universal-debug.apk |
| Android arm64-v8a | bedrud-android-arm64-v8a-debug.apk |
| Android armeabi-v7a | bedrud-android-armeabi-v7a-debug.apk |
| Android x86_64 | bedrud-android-x86_64-debug.apk |
| Desktop Linux x86_64 | bedrud-desktop-linux-x86_64.tar.xz |
| Desktop Linux ARM64 | bedrud-desktop-linux-arm64.tar.xz |
| Desktop Windows x86_64 | bedrud-desktop-windows-x86_64.zip |
| Desktop Windows ARM64 | bedrud-desktop-windows-arm64.zip |
| Web | bedrud-web.tar.xz |
| Docker | ghcr.io/themadorg/bedrud:dev-eceae68 |
This is an automated pre-release. Use tagged releases for production.
Dev bf0b2c2
Dev Build
Built from bf0b2c2.
Changes
- Improve site (#19) (
bf0b2c2) - update AdminUser(3x)/AdminRoom(2x) + extract ProviderBadge/Alert to shared for DRY (
0419156)
Artifacts
| Platform | Asset |
|---|---|
| Linux x86_64 | bedrud_linux_amd64.tar.xz |
| Linux ARM64 | bedrud_linux_arm64.tar.xz |
| macOS x86_64 | bedrud_darwin_amd64.tar.xz |
| macOS ARM64 | bedrud_darwin_arm64.tar.xz |
| Android (universal) | bedrud-android-universal-debug.apk |
| Android arm64-v8a | bedrud-android-arm64-v8a-debug.apk |
| Android armeabi-v7a | bedrud-android-armeabi-v7a-debug.apk |
| Android x86_64 | bedrud-android-x86_64-debug.apk |
| Desktop Linux x86_64 | bedrud-desktop-linux-x86_64.tar.xz |
| Desktop Linux ARM64 | bedrud-desktop-linux-arm64.tar.xz |
| Desktop Windows x86_64 | bedrud-desktop-windows-x86_64.zip |
| Desktop Windows ARM64 | bedrud-desktop-windows-arm64.zip |
| Web | bedrud-web.tar.xz |
| Docker | ghcr.io/themadorg/bedrud:dev-bf0b2c2 |
This is an automated pre-release. Use tagged releases for production.