Commit Graph
22 Commits
Author SHA1 Message Date
snowspeeder a53c090882 docs: media player subsystem architecture and conventions
Document the media server process, /media/ port map, library layout on
the ./media bind mount, Hope's media MCP toolset, the music/mic
mutual-exclusion rule, and yt-dlp download/proxy conventions.
2026-08-29 13:22:01 -04:00
snowspeeder 04c4a53594 feat: media player API, web player panel, and Hope music MCP
- web/media_server.py: FastAPI service owning the permanent library
  (library.json + ./media volume), yt-dlp YouTube Music search, queued
  download jobs with mp3 transcode (ffmpeg), per-room player desired
  state, and an HTTPS proxy for external live-stream URLs.
- agent/media_mcp.py: Hope tools — search_music, play_song,
  offer_song_choices, pause/resume/stop/skip/seek, now_playing,
  list_library, add_stream.
- agent/agent.py: media toolset wiring + conversation rule (music
  playing disables the agent mic; re-engaging pauses music).
- web UI: slide-out Music panel (search, suggestions, library, live
  stream add, play/pause, ±10s, seek, volume) with a reconciling poller
  and media_state data-channel reports.
- token server returns the minted room name; nginx serves /media/files
  as static (native Range) and proxies /media/api to the media server.
- supervisord runs media-server; compose mounts ./media and adds
  ffmpeg to the image.
2026-08-29 13:03:12 -04:00
snowspeeder a4ae96f01b feat: default to qwen2.5-vl-3b and cap tool schema length constraints
Rebuild & Deploy / rebuild (push) Successful in 54s
- Default LLM_MODEL to qwen2.5-vl-3b across agent, task worker, tests,
  compose, workflow, and docs
- Cap min/max length-style constraints in tool schemas to 1000 before
  LLM requests; llama.cpp rejects grammar repetitions >= 2000 and the
  memory MCP's update_note body maxLength (200000) broke qwen2.5-vl-3b
  with 'Failed to initialize samplers: failed to parse grammar'
2026-08-29 12:46:20 -04:00
snowspeeder a66f09eb28 fix: resolve agent crash and expand settings sheet
Rebuild & Deploy / rebuild (push) Successful in 55s
- Move task_dir assignment before VoiceAssistant construction in
  handle_job; UnboundLocalError was crashing every agent job before it
  joined the room, leaving the UI stuck on 'Opening a secure room'
- Make settings sheet full-window height (100dvh) to match tasks panel
2026-08-29 12:19:00 -04:00
snowspeeder 360e3276b0 feat: switch LLM to OpenWebUI with live model selection
Rebuild & Deploy / rebuild (push) Successful in 3m18s
- Point the agent at OpenWebUI's OpenAI-compatible API (LLM_BASE_URL,
  LLM_API_KEY, LLM_MODEL) with GEMMA_* env fallbacks
- Add list_available_models() fetching {base_url}/models, filtering
  non-chat ids (embedding/reranker)
- Rename GemmaLLM -> HopeLLM with update_options(model=...) for runtime
  model switching (mutates _opts.model) and instance-based compaction
- Data channel: agent publishes {type: models} after connect and on
  get_models; set_model switches live and acks model_changed
- Web UI: Brain section in the settings sheet with a model picker that
  persists the choice in localStorage
- Update tests, CI workflow env, and docs for the new endpoint
2026-08-29 12:09:03 -04:00
snowspeeder 024c42ffb1 fix: require usable recipe task results
Rebuild & Deploy / rebuild (push) Successful in 49s
2026-08-29 08:16:48 -04:00
snowspeeder cb035751d2 fix: route explicit online requests to tasks
Rebuild & Deploy / rebuild (push) Successful in 1m13s
2026-08-29 08:13:03 -04:00
snowspeeder 1fffed8ab3 fix: recover voice UI after text tasks
Rebuild & Deploy / rebuild (push) Successful in 47s
2026-08-29 08:03:59 -04:00
snowspeeder b1643b635d fix: wait for agent before sending text
Rebuild & Deploy / rebuild (push) Successful in 1m2s
2026-08-29 08:00:42 -04:00
snowspeeder 63e15b6023 fix: restore controls after task completion
Rebuild & Deploy / rebuild (push) Successful in 1m6s
2026-08-29 07:57:23 -04:00
snowspeeder 120ab192f1 feat: add seamless text and voice chat
Rebuild & Deploy / rebuild (push) Successful in 49s
2026-08-29 07:49:29 -04:00
snowspeeder 321421e37f fix: reliably dispatch and return background tasks
Rebuild & Deploy / rebuild (push) Successful in 47s
2026-08-29 07:29:38 -04:00
snowspeeder 746ca8dca9 fix: define deployment health check
Rebuild & Deploy / rebuild (push) Successful in 28s
2026-08-29 07:09:56 -04:00
snowspeeder 8b88b7646c fix: harden voice rebuild workflow
Rebuild & Deploy / rebuild (push) Failing after 5m13s
2026-08-29 07:04:17 -04:00
snowspeeder f5b84b90e6 chore: trigger gitea runner 2026-08-29 07:00:46 -04:00
snowspeeder 360fc63c20 ci: add rebuild workflow triggered on push to master
Rebuild & Deploy / rebuild (push) Failing after 14s
2026-08-29 06:58:16 -04:00
snowspeeder dac9d195ec fix: clarify voice connection readiness 2026-08-29 06:52:59 -04:00
snowspeeder 16aadcae96 feat: redesign Hope voice experience 2026-08-29 06:51:09 -04:00
snowspeeder 3c4c43f983 fix: use valid LiveKit development secret 2026-08-28 16:30:01 -04:00
snowspeeder 7e15573c10 fix: avoid Unraid agent port collision 2026-08-28 16:27:01 -04:00
snowspeeder c940923539 feat: connect Shane voice sessions to memory 2026-08-28 16:22:18 -04:00
snowspeeder 2a2a2ff768 feat: plan per-user memory integration 2026-08-28 15:59:26 -04:00