Files
metabuilder/services/media_daemon
johndoe6345789 bb17f395fe feat: complete fakemui accessibility integration with data-testid and ARIA
Complete implementation of accessibility utilities across fakemui components:

**New Files**:
- src/utils/accessibility.ts - Core accessibility utilities (moved from legacy)
- src/utils/accessibility.module.scss - Accessibility SCSS styles
- src/utils/useAccessible.ts - React hooks for accessibility:
  * useAccessible() - Generate test IDs and ARIA attributes
  * useKeyboardNavigation() - Handle keyboard events
  * useFocusManagement() - Programmatic focus control
  * useLiveRegion() - Screen reader announcements
  * useFocusTrap() - Focus trapping for modals

**Component Updates**:
- Button.tsx - Added data-testid and ARIA support via useAccessible hook
- TextField.tsx - Added data-testid, aria-invalid, aria-describedby support

**Documentation**:
- docs/ACCESSIBILITY_INTEGRATION.md - Complete integration guide with examples

**Features**:
- 50+ preset test ID generators (form, canvas, settings, navigation, etc.)
- ARIA attribute patterns for buttons, toggles, dialogs, tabs, live regions
- Keyboard navigation helpers (Enter, Escape, Arrow keys, Tab)
- Accessibility validators (hasLabel, isKeyboardAccessible, etc.)
- Fully typed TypeScript with AccessibilityFeature, Component, Action types

All components now support reliable testing via data-testid and screen reader access via ARIA attributes.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-23 17:25:48 +00:00
..

MetaBuilder Media Daemon

A C++ Docker daemon for media processing, radio streaming, and TV channel simulation with a modular plugin architecture.

Features

🎬 Job Queue System

  • Video transcoding (H.264, H.265, VP9, AV1)
  • Audio transcoding (MP3, AAC, FLAC, Opus)
  • Document conversion (PDF, Office formats)
  • Image processing (resize, convert, optimize)
  • Priority queuing with configurable workers

📻 Radio Streaming

  • Live audio streaming with multiple quality levels
  • Playlist scheduling and auto-DJ
  • Crossfading and audio normalization
  • Metadata injection (artist, title, album art)
  • Icecast/Shoutcast compatible output

📺 TV Channel Simulation

  • Multi-channel scheduling system
  • EPG (Electronic Program Guide) generation
  • Bumpers, commercials, and interstitials
  • Live-to-VOD and VOD-to-Live workflows
  • HLS/DASH output for web players

🔌 Plugin Architecture

  • Dynamic plugin loading (.so/.dll)
  • Hot-reload support in development mode
  • Plugin API for custom processors
  • Built-in plugins: FFmpeg, ImageMagick, Pandoc

🔗 DBAL Integration

  • Job status notifications to users
  • Progress tracking in real-time
  • User permission checks
  • Multi-tenant isolation

Architecture

┌─────────────────────────────────────────────────────────────┐
│                    Media Daemon                              │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  HTTP API   │  │  WebSocket  │  │   gRPC      │         │
│  │  (Drogon)   │  │  (Live)     │  │  (Internal) │         │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘         │
│         └────────────────┼────────────────┘                 │
│                          ▼                                  │
│  ┌───────────────────────────────────────────────────────┐ │
│  │                   Core Engine                          │ │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  │ │
│  │  │ Job     │  │ Radio   │  │ TV      │  │ Plugin  │  │ │
│  │  │ Queue   │  │ Engine  │  │ Engine  │  │ Manager │  │ │
│  │  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘  │ │
│  └───────┼────────────┼────────────┼────────────┼───────┘ │
│          └────────────┴────────────┴────────────┘          │
│                          ▼                                  │
│  ┌───────────────────────────────────────────────────────┐ │
│  │                  Plugin System                         │ │
│  │  ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐         │ │
│  │  │FFmpeg  │ │ImageMag│ │Pandoc  │ │Custom  │         │ │
│  │  │Plugin  │ │Plugin  │ │Plugin  │ │Plugins │         │ │
│  │  └────────┘ └────────┘ └────────┘ └────────┘         │ │
│  └───────────────────────────────────────────────────────┘ │
│                          ▼                                  │
│  ┌───────────────────────────────────────────────────────┐ │
│  │              DBAL Client (Notifications)               │ │
│  └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

Quick Start

# Build
docker build -t metabuilder/media-daemon -f Dockerfile .

# Run
docker run -d \
  -p 8090:8090 \
  -v /media:/data/media \
  -e DBAL_URL=http://dbal:8080 \
  metabuilder/media-daemon

API Endpoints

Job Queue

  • POST /api/jobs - Submit a new job
  • GET /api/jobs/:id - Get job status
  • GET /api/jobs - List jobs (filtered by user/tenant)
  • DELETE /api/jobs/:id - Cancel a job

Radio

  • POST /api/radio/channels - Create radio channel
  • GET /api/radio/channels/:id/stream - Get stream URL
  • POST /api/radio/channels/:id/playlist - Update playlist
  • GET /api/radio/channels/:id/now-playing - Current track info

TV Channels

  • POST /api/tv/channels - Create TV channel
  • GET /api/tv/channels/:id/schedule - Get EPG
  • POST /api/tv/channels/:id/schedule - Update schedule
  • GET /api/tv/channels/:id/stream.m3u8 - HLS playlist

Plugins

  • GET /api/plugins - List loaded plugins
  • POST /api/plugins/:id/reload - Hot-reload plugin (dev mode)

Configuration

See config/media-daemon.yaml for full configuration options.