Skip to content

feat(calls): 複数の画面共有と共有音声ごとの音量調整に対応 - #72

Merged
mattyatea merged 1 commit into
developfrom
codex/multiple-screen-shares-audio
Oct 5, 2026
Merged

mattyatea merged 1 commit into
developfrom
codex/multiple-screen-shares-audio

Conversation

@mattyatea

Copy link
Copy Markdown

What

1人が複数の画面・ウィンドウを同時に共有できるようにしました。共有設定から追加・個別停止でき、ブラウザの共有選択画面で音声を含めるか選べます。受信側は各共有映像と別ウィンドウのスライダーで、共有音声の音量をマイクとは独立して調整できます。

Why

複数の画面を同時に見せつつ、共有ごとの音声を必要に応じて聞き分けるため。ユーザーからの依頼による変更です。対応する既存Issueは見つかりませんでした。

Additional info (optional)

共有音声は自分の接続世代の画面共有publicationに紐付けて公開し、共有終了時には映像・音声を閉じます。既存の共有権限制御を維持しています。DBスキーマの変更はなく、既存の一時publication bindingに対応関係を追加しています。

sequenceDiagram
    participant Sender as 共有する人
    participant Browser as ブラウザ
    participant API as Calls API
    participant Receiver as 聞く人
    Sender->>Browser: 共有対象と音声の有無を選択
    Browser->>API: 画面映像を公開
    API-->>Browser: publicationId
    opt 共有音声がある
        Browser->>API: 映像publicationIdに紐付けて音声を公開
    end
    Receiver->>API: publicationを取得・購読
    Receiver->>Receiver: 共有ごとの音量を調整
Loading

検証:

  • PASS: フロントエンドの通話メディア・セッション・dock・windowテスト92件。
  • PASS: バックエンドの通話メディア・APIテスト41件。
  • PASS: pnpm build-misskey-js-with-types、node scripts/check-shipping.mjs(変更ファイルlint、SPDX、locale safety)。
  • 全体型チェックは未通過。ローカル依存環境でi18nのTsx呼び出しやFastifyの拡張型など、今回変更していない箇所にも型エラーが出ています。
  • 実ブラウザでの送受信・スクリーンショット確認は未実施。音声共有の対応範囲はブラウザと共有対象に依存します。

CHANGELOGは指示に従って未変更。候補: 複数画面の同時共有と、共有音声ごとの音量調整に対応。

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 5, 2026 14:35

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 5, 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 25 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: 2020ac05-4aa7-4483-a8e2-460aa5f8169d
📥 Commits

Reviewing files that changed from the base of the PR and between 0bb1aea and 551a7d1.

📒 Files selected for processing (17)
  • docs/calls-protocol.md
  • locales/ja-JP.yml
  • packages/backend/src/core/calls/CallsMediaBindingService.ts
  • packages/backend/src/core/calls/CallsMediaService.ts
  • packages/backend/src/server/api/endpoints/calls/media/publish.ts
  • packages/backend/src/server/api/endpoints/calls/media/reconcile.ts
  • packages/backend/test/unit/core/calls/CallsMediaService.ts
  • packages/frontend/src/components/MkCallsRoomWindow.vue
  • packages/frontend/src/components/MkCallsScreenWindow.vue
  • packages/frontend/src/components/MkCallsVideo.stories.impl.ts
  • packages/frontend/src/components/MkCallsVideo.vue
  • packages/frontend/src/utility/calls-media.ts
  • packages/frontend/src/utility/calls-session.ts
  • packages/frontend/test/unit/calls-media-controller.test.ts
  • packages/frontend/test/unit/calls-session.test.ts
  • packages/i18n/src/autogen/locale.ts
  • packages/misskey-js/src/autogen/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 5, 2026

Copy link
Copy Markdown

このPRによるapi.jsonの差分

差分はこちら
--- base
+++ head
@@ -28653,6 +28653,10 @@
                               "screen"
                             ]
                           },
+                          "screenPublicationId": {
+                            "type": "string",
+                            "format": "id"
+                          },
                           "mediaKind": {
                             "type": "string",
                             "enum": [
@@ -30343,6 +30347,10 @@
                     ],
                     "default": "microphone"
                   },
+                  "screenPublicationId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  },
                   "mid": {
                     "type": "string",
                     "minLength": 1,

Get diff files from Workflow Page

@github-actions

github-actions Bot commented Oct 5, 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{+5 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{+5 B}}$
V8 heap snapshot statistics
Metric @ Base @ Head Δ MAD
$\color{gray}{\rule{8pt}{8pt}}$ Total 12 MB
± 2.4 KB
12 MB
± 3.2 KB
$\text{+5.3 KB}$
$\text{+0\%}$
4 KB
$\color{orange}{\rule{8pt}{8pt}}$ Code 2.9 MB 2.9 MB $\text{-124 B}$ 482 B
$\color{red}{\rule{8pt}{8pt}}$ Strings 1.3 MB 1.3 MB $\text{-8 B}$ 34 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{+624 B}$ 77 B
$\color{pink}{\rule{8pt}{8pt}}$ Other non-JS objs 5.4 MB 5.4 MB $\text{+3.6 KB}$ 5.6 KB

Download representative heap snapshot: base / head

📦 Bundle Stats

Chunk size diff (2 updated, 0 added, 0 removed)
Chunk Base Head Δ Δ (%)
(total) 6.1 MB 6.1 MB $\color{orange}{\text{+3.6 KB}}$ $\text{+0.1\%}$
src/components/MkCallsRoomWindow.vue ja-JP/4lNOX5vHU-LY69ezfI.js → ja-JP/qUNnBsuSE-CjK5BxX-.js
24 KB 25 KB $\text{+589 B}$ $\color{orange}{\text{+2.5\%}}$
src/components/MkCallsScreenWindow.vue ja-JP/4lNOX5vHU-DFtk0Lo_.js → ja-JP/qUNnBsuSE-tdSeCf5n.js
1.1 KB 1.6 KB $\text{+526 B}$ $\color{orange}{\text{+49.6\%}}$
(other generated chunks) 2.3 MB 2.3 MB $\color{orange}{\text{+2.5 KB}}$ $\color{orange}{\text{+0.1\%}}$
Startup chunk size (0 updated, 0 added, 0 removed)
Chunk Base Head Δ Δ (%)
(total) 937 KB 939 KB $\color{orange}{\text{+2.5 KB}}$ $\color{orange}{\text{+0.3\%}}$
(other generated chunks) 863 KB 865 KB $\color{orange}{\text{+2.5 KB}}$ $\color{orange}{\text{+0.3\%}}$
(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,221 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 $\color{orange}{\text{+1}}$ 0 $\color{orange}{\text{+5.8 KB}}$ $\color{orange}{\text{+1.3 KB}}$ $\color{orange}{\text{+1.2 KB}}$
Δ (%) 0% 0% 0% $\text{+0\%}$ 0% $\text{+0.1\%}$ $\text{+0\%}$ $\text{+0\%}$

Open treemap HTML

@github-actions

github-actions Bot commented Oct 5, 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
± 27 KB
90 MB
± 92 KB
$\text{+34 KB}$
$\text{+0\%}$
96 KB
$\color{orange}{\rule{8pt}{8pt}}$ Code 26 MB 26 MB $\text{+3.6 KB}$ 16 KB
$\color{red}{\rule{8pt}{8pt}}$ Strings 31 MB 31 MB $\text{+5 KB}$ 3 KB
$\color{cyan}{\rule{8pt}{8pt}}$ JS arrays 4.9 MB 4.9 MB 0 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}$ 3.4 KB
$\color{violet}{\rule{8pt}{8pt}}$ Other JS objs 25 MB 25 MB $\text{+776 B}$ 101 KB
$\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 1dcdf36 into develop Oct 5, 2026
43 of 44 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