diff --git a/web/index.html b/web/index.html
index bb704b9..4f1bfd3 100644
--- a/web/index.html
+++ b/web/index.html
@@ -41,8 +41,8 @@
font-size: 20px; line-height: 1; vertical-align: middle; user-select: none;
display: inline-block; white-space: nowrap; word-wrap: normal; direction: ltr;
}
- .app { display: grid; grid-template-columns: 1fr 380px; height: 100vh; }
- .videoPane { display: flex; flex-direction: column; min-width: 0; padding: 12px; gap: 10px; position: relative; }
+ .app { display: grid; grid-template-columns: 1fr 380px; height: 100vh; height: 100svh; }
+ .videoPane { display: flex; flex-direction: column; min-width: 0; min-height: 0; padding: 12px; gap: 10px; position: relative; }
.topBar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.brand { font-weight: 700; font-size: 16px; display: flex; align-items: center; gap: 6px; margin-right: auto; }
@@ -126,7 +126,8 @@
.searchStage .searchList { flex: 1; overflow-y: auto; padding: 8px; }
.chatPane {
- display: flex; flex-direction: column; min-width: 0;
+ display: flex; flex-direction: column; min-width: 0; min-height: 0;
+ max-height: 100vh; max-height: 100svh;
background: var(--surface); border-left: 1px solid var(--outline);
}
.chatHeader { padding: 14px 16px; border-bottom: 1px solid var(--outline); display: flex; flex-direction: column; gap: 8px; }
@@ -609,7 +610,11 @@ async function sendWatchClip(blob) {
form.append('history', JSON.stringify(chatHistory.slice(-6)));
try {
const res = await fetch('/api/watch', { method: 'POST', body: form });
- if (!res.ok) return;
+ if (!res.ok) {
+ const bodyText = await res.text().catch(() => '');
+ console.error('watch clip request failed', res.status, bodyText, 'clip size(bytes):', blob.size);
+ return;
+ }
const data = await res.json();
const reaction = (data.reaction || '').trim();
const now = Date.now();
@@ -629,11 +634,15 @@ async function startWatchMode() {
return;
}
try {
- watchStream = await navigator.mediaDevices.getDisplayMedia({ video: true, audio: true });
+ watchStream = await navigator.mediaDevices.getDisplayMedia({
+ video: { width: { ideal: 960 }, height: { ideal: 540 }, frameRate: { ideal: 5, max: 10 } },
+ audio: true,
+ });
} catch (e) {
console.error('getDisplayMedia failed', e);
return;
}
+ console.log('watch stream tracks:', watchStream.getVideoTracks().map(t => t.getSettings()), watchStream.getAudioTracks().map(t => t.getSettings()));
if (watchStream.getAudioTracks().length === 0) {
alert('音声トラックが取得できませんでした。共有元は「Chromeタブ」を選び、「タブの音声を共有」にチェックを入れ直してください(画面全体/ウィンドウ共有だとmacOSでは音声が乗りません)。');
watchStream.getTracks().forEach((t) => t.stop());