Guide ScreenPipe capture-node setup in wizard - #339
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- tests/conftest.py: provide AUTH_SECRET_KEY/ADMIN_PASSWORD defaults so collection works without a local .env (CI has none; auth.py raises at import since the readiness/fleet work landed). - docker-compose-test.yml: drop workers-test dependency on backend health. /readiness now requires the worker-fleet heartbeat, so gating workers on backend health deadlocked startup (backend unhealthy -> workers never start). Matches prod compose: workers need mongo+redis.
test_session_store.py was committed in #336 but the SessionStore implementation it exercises (set/get/clear/expire current conversation, conversation_create_lock) stayed in a local stash. Bring the implementation in so the committed tests pass.
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
services/device_audio.py imports opuslib at module level, which needs the native Opus library; the GitHub runner doesn't ship it. Was masked until now by the earlier AUTH_SECRET_KEY collection error.
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
opuslib 3.x contains `is not 0`, a SyntaxWarning on py3.12. With filterwarnings=error it becomes a SyntaxError on first import in a fresh venv (CI), killing collection. Cached .pyc masked it locally.
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
Two layers were breaking the plugin-event tests: 1. mock-services.yml had no defaults.fallback_llm, so the memory agent's note-guarantee recovery pass (force_fallback=True) raised 'No fallback LLM is configured' and the memory job failed with nothing recorded. Add mock-llm-fallback (same mock server, distinct name — a fallback identical to defaults.llm is rejected as pointless). 2. chronicle.py treated a recovery-pass exception as fatal, skipping the source-preserving fallback note entirely. The note guarantee now degrades: log the recovery failure, write the fallback note, return its path — so memory.processed still fires and the vault keeps the conversation. Also lands the speaker-rename guard in _speaker_rename_guidance: conversation-scoped relabels between real named people no longer trigger a vault-wide rename_person (which merged the wrong person's history); only placeholder labels (Speaker N / Unknown Speaker N) may be globally renamed.
…rvice logs - test_vault_rename_person needs Redis (vault locks are Redis-backed and fail closed) and test_leading_silence_trim_db needs Mongo; both passed locally only because a dev stack was listening. Give the CI job real service containers on the ports the code defaults to. - robot-tests saved backend/worker logs to files but never uploaded them, leaving container-side failures undiagnosable. Upload them.
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
|
| Metric | Count |
|---|---|
| ✅ Passed | 127 |
| ❌ Failed | 3 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
Every real HTTP caller in the test stack (memory-agent LLM, streaming STT consumer) addresses the mock services as host.docker.internal, but Docker on Linux does not resolve that name without an explicit host-gateway mapping — CI workers logged 'Name or service not known' for every LLM and streaming-STT call. This broke memory.processed events and streaming speech detection (open_conversation) in the no-api suite, while passing locally under podman, which resolves the name natively. Prod compose already carries the same extra_hosts.
|
| Metric | Count |
|---|---|
| ✅ Passed | 129 |
| ❌ Failed | 1 |
| 📊 Total | 130 |
📊 View Reports
GitHub Pages (Live Reports):
Download Artifacts:
- robot-test-reports-html-no-api - HTML reports
- robot-test-results-xml-no-api - XML output
save_config_section() patched the in-memory config cache once, but any subsequent reload_config() (frequent in normal operation) rebuilt the cache from disk and silently reverted the change whenever CONFIG_FILE points away from config.yml (test environments). The always-persist robot test toggles always_persist_enabled via /api/misc-settings and raced exactly this: on slow CI a reload landed between the toggle and the stream open, so a placeholder conversation appeared despite always_persist=false. Register overrides and re-apply them on every load instead.
save_config_section() passed a plain {} to OmegaConf.update() when
config.yml didn't exist yet, raising 'Unexpected type: {}' — so the
very first runtime settings save on a fresh install failed (and the
API reported it only in the response body, still HTTP 200).
🎉 Robot Framework Test Results (No API Keys)Status: ✅ All tests passed! ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
📊 View ReportsGitHub Pages (Live Reports): Download Artifacts:
|
🎉 Robot Framework Test Results (No API Keys)Status: ✅ All tests passed! ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
📊 View ReportsGitHub Pages (Live Reports): Download Artifacts:
|
Adds a first-class capture-node wizard path that does not require containers, detects an independently installed ScreenPipe, pairs the Chronicle companion, installs privacy-oriented systemd user services, and checks status. Tests: 28 passed.