Skip to content

fix(calls): 音声接続が完了してから参加者を表示する - #68

Merged
mattyatea merged 5 commits into
developfrom
codex/calls-ready-presence
Oct 5, 2026
Merged

mattyatea merged 5 commits into
developfrom
codex/calls-ready-presence

Conversation

@mattyatea

Copy link
Copy Markdown

What

Calls の参加者一覧・ユーザーの通話中表示・参加通知を、WebRTC 接続と受信音声の再生開始後に出すようにします。自動再生がブロックされた場合は「音声を再開」が成功するまで表示しません。

入室予約は従来の参加情報として保持し、接続準備に利用します。表示の確定には既存の Redis 接続情報と、connectionId / generation を指定する callsRoom の ready コマンドを使います。自分の参加情報は一覧とは別に保持し、再接続中も接続操作を続けられます。

Why

入室 API の成功時点で参加者として表示され、まだ相手の声を聞けない接続待ちのユーザーが入室済みに見えていました。#65 の接続待ち短縮に続き、表示のタイミングを実際の音声準備に合わせます。関連: #17。

Additional info (optional)

flowchart TD
    A["入室を予約・一覧には非表示"] --> B["初期SDP交渉と接続を完了"]
    B --> C{"受信音声を再生できたか"}
    C -->|成功| D["現在の接続でreadyを送信"]
    C -->|自動再生ブロック| E["音声を再開するまで非表示"]
    E --> C
    D --> F["参加通知・一覧・通話中表示に反映"]
Loading

受信トラックがない空の部屋では再生待ちは不要です。DB スキーマ変更・migration はありません。第三者クライアントも ready の送信が必要になり、配信後は既存クライアントの再読み込みが必要です。プロトコル文書と参照クライアントの通知メソッドも更新しました。

検証:

  • PASS: backend の CallsLiveConnectionService / CallsRoomService / CallsMediaService / CallsRoomChannel の unit test、132件。
  • PASS: frontend の calls-session / calls-media-controller / use-calls-room の unit test、94件。共有依存の参照を許可した一時 Vitest 設定で実行。
  • PASS: Calls 参照クライアントの test、6件、および tsgo --noEmit。
  • PASS: i18n / misskey-js の build、node scripts/check-shipping.mjs --base origin/develop(変更ファイル lint / SPDX / locale safety)、git diff --check。
  • BASELINE: frontend の vue-tsc --noEmit は29件、backend 本体の tsc --noEmit は6件の既存エラー。統合先でも同じ環境で実行し、行番号を除く診断内容が一致することを確認。未ビルドのゲームパッケージや不足依存などに由来します。
  • SKIPPED: Cloudflare を使った実機の複数人通話・ブラウザ自動再生制限の確認。

CHANGELOG 候補: Calls で音声接続・再生の準備が完了してから参加者を表示するように修正。

Checklist

  • Read the contribution guide
  • Test working in a local environment
  • (If needed) Add story of storybook
  • (If needed) Update CHANGELOG.md
  • (If possible) Add tests

Copilot AI balanced review requested due to automatic review settings October 4, 2026 22:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 3 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: Type4ny-Project/Misskey/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 9aa95e24-9577-4e5e-9896-49990a6ae884
📥 Commits

Reviewing files that changed from the base of the PR and between 1dcdf36 and a8c834d.

📒 Files selected for processing (19)
  • docs/calls-protocol.md
  • packages/backend/src/core/calls/CallsLiveConnectionService.ts
  • packages/backend/src/core/calls/CallsMediaService.ts
  • packages/backend/src/core/calls/CallsRoomService.ts
  • packages/backend/src/server/api/stream/channels/calls-room.ts
  • packages/backend/test/unit/core/calls/CallsLiveConnectionService.ts
  • packages/backend/test/unit/core/calls/CallsRoomChannel.ts
  • packages/backend/test/unit/core/calls/CallsRoomService.ts
  • packages/calls-reference-client/src/index.ts
  • packages/calls-reference-client/test/conformance.test.ts
  • packages/frontend/src/composables/use-calls-room.ts
  • packages/frontend/src/utility/calls-media.ts
  • packages/frontend/src/utility/calls-session.ts
  • packages/frontend/test/unit/calls-join-confirmation.test.ts
  • packages/frontend/test/unit/calls-media-controller.test.ts
  • packages/frontend/test/unit/calls-session.test.ts
  • packages/frontend/test/unit/use-calls-room.test.ts
  • packages/misskey-js/etc/misskey-js.api.md
  • packages/misskey-js/src/streaming.types.ts
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

このPRによるapi.jsonの差分
差分はありません。
Get diff files from Workflow Page

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

🖥 Frontend Diagnostics Report

(No significant changes)

View details

Requests by resource type
Type Requests Encoded bytes
Base Head Δ Base Head Δ
Document 2 2 0 34 KB 34 KB 0 B
Script 151 151 0 2.4 MB 2.4 MB $\color{orange}{\text{+1.4 KB}}$
Stylesheet 63 63 0 320 KB 320 KB 0 B
Fetch 28 28 0 47 KB 47 KB 0 B
Image 9 9 0 238 KB 238 KB 0 B
Font 2 2 0 129 KB 129 KB 0 B
Other 9 9 0 421 KB 421 KB $\color{orange}{\text{+2 B}}$
V8 heap snapshot statistics
Metric @ Base @ Head Δ MAD
$\color{gray}{\rule{8pt}{8pt}}$ Total 12 MB
± 3.1 KB
12 MB
± 1.1 KB
$\text{+3.7 KB}$
$\text{+0\%}$
3.3 KB
$\color{orange}{\rule{8pt}{8pt}}$ Code 3 MB 3 MB $\text{+1.2 KB}$ 406 B
$\color{red}{\rule{8pt}{8pt}}$ Strings 1.3 MB 1.3 MB $\text{-56 B}$ 6 B
$\color{cyan}{\rule{8pt}{8pt}}$ JS arrays 121 KB 121 KB 0 B 0 B
$\color{green}{\rule{8pt}{8pt}}$ Typed arrays 0 B 0 B 0 B 0 B
$\color{yellow}{\rule{8pt}{8pt}}$ System objects 0 B 0 B 0 B 0 B
$\color{violet}{\rule{8pt}{8pt}}$ Other JS objs 2.1 MB 2.1 MB $\text{+536 B}$ 184 B
$\color{pink}{\rule{8pt}{8pt}}$ Other non-JS objs 5.4 MB 5.4 MB $\text{+1.7 KB}$ 995 B

Download representative heap snapshot: base / head

📦 Bundle Stats

Chunk size diff (0 updated, 0 added, 0 removed)
Chunk Base Head Δ Δ (%)
(total) 6.1 MB 6.1 MB $\text{+704 B}$ $\text{+0\%}$
(other generated chunks) 2.3 MB 2.3 MB $\text{+704 B}$ $\text{+0\%}$
Startup chunk size (0 updated, 0 added, 0 removed)
Chunk Base Head Δ Δ (%)
(total) 940 KB 941 KB $\text{+704 B}$ $\text{+0.1\%}$
(other generated chunks) 866 KB 867 KB $\text{+704 B}$ $\text{+0.1\%}$
(other) 74 KB 74 KB 0 B 0%

Startup chunks are the Vite entry for src/_boot_.ts and its static imports.

Bundles Modules Entries Imports Size
Static Dynamic Rendered Gzip Brotli
Base 505 3,007 22 11,222 364 11 MB 3 MB 2.6 MB
Head 505 3,007 22 11,222 364 11 MB 3 MB 2.6 MB
Δ 0 0 0 0 0 $\color{orange}{\text{+1.6 KB}}$ $\text{+255 B}$ $\text{+276 B}$
Δ (%) 0% 0% 0% 0% 0% $\text{+0\%}$ $\text{+0\%}$ $\text{+0\%}$

Open treemap HTML

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

⚙️ Backend Diagnostics Report

Memory: After GC

(No significant changes)

V8 Heap Snapshot Statistics

Metric @ Base @ Head Δ MAD
$\color{gray}{\rule{8pt}{8pt}}$ Total 90 MB
± 9.6 KB
90 MB
± 16 KB
$\text{+9.2 KB}$
$\text{+0\%}$
19 KB
$\color{orange}{\rule{8pt}{8pt}}$ Code 26 MB 26 MB $\text{+7.3 KB}$ 8.3 KB
$\color{red}{\rule{8pt}{8pt}}$ Strings 31 MB 31 MB $\text{+5.1 KB}$ 1.2 KB
$\color{cyan}{\rule{8pt}{8pt}}$ JS arrays 4.9 MB 4.9 MB $\text{+88 B}$ 0 B
$\color{green}{\rule{8pt}{8pt}}$ Typed arrays 566 KB 566 KB 0 B 0 B
$\color{yellow}{\rule{8pt}{8pt}}$ System objects 2.3 MB 2.3 MB $\text{-3.1 KB}$ 1.4 KB
$\color{violet}{\rule{8pt}{8pt}}$ Other JS objs 25 MB 25 MB $\text{+1.1 KB}$ 360 B
$\color{pink}{\rule{8pt}{8pt}}$ Other non-JS objs 39 KB 39 KB 0 B 0 B

Download representative heap snapshot: base / head

@mattyatea
mattyatea merged commit 661244c into develop Oct 5, 2026
43 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants