Skip to content

fix(meet): forward wake phrase for active meeting bots#4231

Open
YOMXXX wants to merge 4 commits into
tinyhumansai:mainfrom
YOMXXX:codex/GH-4172-meet-wake-phrase
Open

fix(meet): forward wake phrase for active meeting bots#4231
YOMXXX wants to merge 4 commits into
tinyhumansai:mainfrom
YOMXXX:codex/GH-4172-meet-wake-phrase

Conversation

@YOMXXX

@YOMXXX YOMXXX commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Forward the active meeting bot wake phrase to the backend join payload.
  • Derive the phrase from the selected bot persona, e.g. Hey Tiny or Hey Nova.
  • Preserve listen-only mode by omitting wakePhrase when active participation is disabled.
  • Add focused coverage for default, custom persona, listen-only payloads, and service-layer RPC field mapping.
  • Refresh stale localized README links that were breaking the PR markdown link check.

Problem

  • Issue bug: OpenHuman joins Google Meet but does not respond when addressed (wake phrase ignored) #4172 reports that OpenHuman can join Google Meet but does not respond when addressed.
  • The active meeting bot UI did not include the wake phrase in the backend bot join request, so the backend had no explicit phrase to listen for before emitting mid-call requests.
  • The PR link checker also surfaced existing stale docs links in localized READMEs; those failures were unrelated to the meeting bot code, but they blocked CI for this branch.

Solution

  • Compute wakePhrase only for active bots from the current persona name.
  • Pass wakePhrase through joinMeetViaBackendBot with the existing join options.
  • Add privacy-preserving debug logging with request correlation and string lengths only, avoiding meeting URLs or user names.
  • Extend the existing Vitest coverage to lock the active/listen-only UI payload contract and the service-layer snake_case RPC mapping.
  • Update localized README links from the stale voice URL, Reddit URL, and star-history hash URL to link-checkable targets.

Submission Checklist

If a section does not apply to this change, mark the item as N/A with a one-line reason. Do not delete items.

  • Tests added or updated (happy path + at least one failure / edge case) per Testing Strategy
  • Diff coverage ≥ 80% — changed lines (Vitest + cargo-llvm-cov merged via diff-cover) meet the gate enforced by .github/workflows/pr-ci.yml. Targeted Vitest assertions cover the changed frontend payload lines; CI remains the source of truth for merged diff coverage.
  • Coverage matrix updated — N/A: behavior-only bug fix for an existing meeting bot payload, plus docs link maintenance; no added/removed/renamed feature row.
  • All affected feature IDs from the matrix are listed in the PR description under ## Related — N/A: no matching matrix feature ID for this wake phrase payload fix.
  • No new external network dependencies introduced (mock backend used per Testing Strategy)
  • Manual smoke checklist updated if this touches release-cut surfaces (docs/RELEASE-MANUAL-SMOKE.md) — N/A: no release manual smoke surface changed.
  • Linked issue closed via Closes #NNN in the ## Related section

Impact

  • Runtime/platform impact: desktop meeting bot join flow only.
  • Compatibility: no backend API shape change; uses the existing optional wakePhrase option.
  • Security/privacy: debug logging avoids raw meeting URLs, persona names, owner names, and secrets.
  • Docs: localized README external links now point to targets that pass link checking.

Related


AI Authored PR Metadata (required for Codex/Linear PRs)

Keep this section for AI-authored PRs. For human-only PRs, mark each field N/A.

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: codex/GH-4172-meet-wake-phrase
  • Commit SHA: b379646511faf9db549ee355ed6812047b1ab7ca

Validation Run

  • pnpm --filter openhuman-app format:check
  • pnpm typecheck
  • Focused tests: pnpm debug unit src/components/skills/__tests__/MeetingBotsCard.test.tsx; pnpm debug unit src/services/backendMeetService.test.ts src/services/__tests__/meetCallService.test.ts; targeted ESLint for MeetingBotsCard.tsx and its test; scoped docs link grep/curl checks
  • Rust fmt/check (if changed): N/A: no Rust files changed; pre-push ran Rust fmt checks
  • Tauri fmt/check (if changed): GGML_NATIVE=OFF pnpm rust:check

Validation Blocked

  • command: N/A
  • error: N/A
  • impact: N/A

Behavior Changes

  • Intended behavior change: active meeting bots now submit the wake phrase the user should say in the meeting.
  • User-visible effect: after joining, the active bot can respond to the configured Hey <agent> address phrase when the backend emits the matching in-call request.

Parity Contract

  • Legacy behavior preserved: listen-only joins still omit wakePhrase and do not activate the bot persona.
  • Guard/fallback/dispatch parity checks: existing backend bot join dispatch remains unchanged except for the optional active-mode wake phrase.

Duplicate / Superseded PR Handling

  • Duplicate PR(s): N/A
  • Canonical PR: N/A
  • Resolution (closed/superseded/updated): N/A

Summary by CodeRabbit

  • New Features
    • Meeting bot joins now include a wake phrase when starting in active mode; listen-only mode omits it.
  • Bug Fixes
    • Join requests that use saved persona/profile now send the correct wake phrase and selected bot settings.
  • Documentation
    • Updated localized READMEs with refreshed social links and adjusted feature/star-history URLs.
  • Tests
    • Updated meeting-bot and backend join payload assertions to include wake phrase and verify trimmed RPC parameter forwarding.

@YOMXXX YOMXXX requested a review from a team June 27, 2026 12:53
@coderabbitai

coderabbitai Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1a2e9a72-8a32-473e-b247-ea88f6fa0ce0

📥 Commits

Reviewing files that changed from the base of the PR and between aedd385 and b379646.

📒 Files selected for processing (5)
  • docs/README.de.md
  • docs/README.ja-JP.md
  • docs/README.ko.md
  • docs/README.ur-pk.md
  • docs/README.zh-CN.md
✅ Files skipped from review due to trivial changes (2)
  • docs/README.zh-CN.md
  • docs/README.ko.md

📝 Walkthrough

Walkthrough

The meeting bot submit flow now derives a wake phrase when not in listen-only mode, logs join parameters, and forwards the wake phrase in the backend join request. The localized README files update social links, native voice links, and star-history targets.

Changes

Meeting bot wake phrase join flow

Layer / File(s) Summary
Submit flow and payload expectations
app/src/components/skills/MeetingBotsCard.tsx, app/src/components/skills/__tests__/MeetingBotsCard.test.tsx, app/src/services/backendMeetService.test.tsx
The submit handler derives wakePhrase from listenOnly, logs join parameters, passes wakePhrase to joinMeetViaBackendBot, and updates join-payload assertions and RPC mapping tests.

Localized README updates

Layer / File(s) Summary
README link updates
docs/README.de.md, docs/README.ja-JP.md, docs/README.ko.md, docs/README.ur-pk.md, docs/README.zh-CN.md
The localized README files replace Reddit with GitHub Discussions in the social link row, update native voice documentation links, and change star-history link targets.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

bug, agent

Suggested reviewers

  • graycyrus
  • sanil-23

Poem

A bunny hops with ears held high,
“Wake phrase sent!” it squeaks nearby.
Logs now sparkle, links all glow,
And README paths continue to flow.
🐰

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR forwards the wake phrase at join time, but it does not implement wake-phrase detection, routing, or response delivery required by #4172. Implement the full addressed-response flow: transcript wake-phrase matching, in-call request routing, respond_when_addressed forwarding, and verbal/thread replies.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: forwarding the wake phrase for active meeting bots.
Out of Scope Changes check ✅ Passed No clear out-of-scope changes; the README link updates and logging align with the stated PR objectives.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot added the agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. label Jun 27, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jun 27, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/README.de.md`:
- Around line 63-69: The German README still contains an explicit TODO wrapper
around untranslated install caveats, which should not remain in the merged docs.
Update the markdown in README.de by either fully translating the mirrored
Linux/AppImage/Arch guidance or removing the TODO start/end markers if the
English text is intentionally kept; use the surrounding README.de section and
the TODO comment as the location cues.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5e35dab0-aa1b-4efe-a0f9-e4c7e9e7529f

📥 Commits

Reviewing files that changed from the base of the PR and between 062bbd3 and 3d66325.

📒 Files selected for processing (5)
  • docs/README.de.md
  • docs/README.ja-JP.md
  • docs/README.ko.md
  • docs/README.ur-pk.md
  • docs/README.zh-CN.md
✅ Files skipped from review due to trivial changes (2)
  • docs/README.ja-JP.md
  • docs/README.ko.md

@YOMXXX

YOMXXX commented Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

CodeRabbit linked-issue note: the repo-side in-call response path is already present. src/openhuman/socket/event_handlers.rs publishes bot:in_call_request, and src/openhuman/agent_meetings/in_call.rs gates active meetings, routes the command through the orchestrator, and emits bot:speak. This PR scopes to the missing join contract input: active-mode joins now include wakePhrase in the backend bot:join payload, with UI-level and service-level tests covering the mapping. Live Recall/backend verification is outside local CI for this branch.

The docstring coverage warning is not applicable to this diff: no Rust/API functions were added; the changes are frontend payload wiring, tests, and link-check-only docs maintenance.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/README.de.md`:
- Around line 65-69: The German README still contains an unresolved TODO wrapper
around the Linux/AppImage/Arch install notes. Update the docs/README.de.md
content by either translating the existing caveats into German or removing the
TODO markers if the English wording is intentionally kept, and make sure the
affected README section no longer contains the placeholder comment.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1a2e9a72-8a32-473e-b247-ea88f6fa0ce0

📥 Commits

Reviewing files that changed from the base of the PR and between aedd385 and b379646.

📒 Files selected for processing (5)
  • docs/README.de.md
  • docs/README.ja-JP.md
  • docs/README.ko.md
  • docs/README.ur-pk.md
  • docs/README.zh-CN.md
✅ Files skipped from review due to trivial changes (2)
  • docs/README.zh-CN.md
  • docs/README.ko.md

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/README.de.md`:
- Around line 65-69: The German README still contains an unresolved TODO wrapper
around the Linux/AppImage/Arch install notes. Update the docs/README.de.md
content by either translating the existing caveats into German or removing the
TODO markers if the English wording is intentionally kept, and make sure the
affected README section no longer contains the placeholder comment.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1a2e9a72-8a32-473e-b247-ea88f6fa0ce0

📥 Commits

Reviewing files that changed from the base of the PR and between aedd385 and b379646.

📒 Files selected for processing (5)
  • docs/README.de.md
  • docs/README.ja-JP.md
  • docs/README.ko.md
  • docs/README.ur-pk.md
  • docs/README.zh-CN.md
✅ Files skipped from review due to trivial changes (2)
  • docs/README.zh-CN.md
  • docs/README.ko.md
🛑 Comments failed to post (1)
docs/README.de.md (1)

65-69: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Unresolved TODO block from previous review.

The TODO wrapper with untranslated English install caveats remains in the German README. Either translate the Linux/AppImage/Arch guidance or remove the TODO markers if keeping the English text is intentional.

🧰 Tools
🪛 LanguageTool

[style] ~66-~66: Bei bestimmten Textarten und Formulierungen bietet es sich an, eine deutschsprachige Alternative zu benutzen.
Context: .../issues/2463) for the cause and env-var workarounds. Arch Linux package maintainers can use...

(ALTERNATIVEN_FUER_ANGLIZISMEN)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/README.de.md` around lines 65 - 69, The German README still contains an
unresolved TODO wrapper around the Linux/AppImage/Arch install notes. Update the
docs/README.de.md content by either translating the existing caveats into German
or removing the TODO markers if the English wording is intentionally kept, and
make sure the affected README section no longer contains the placeholder
comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: OpenHuman joins Google Meet but does not respond when addressed (wake phrase ignored)

1 participant