purpose
画面が席に着いた時点で、部屋が保持している発言を渡して描く。発言を一度拒否させなくても 、webview が読み込み直されたあとの画面が部屋の記憶に追いつく。
観測(Master、2026-08-27)
訂正を含む。 この issue は当初「スリープ後に履歴が戻らない」と書いて起票された。その後 Master が実機で追加観測している:
スリープ後に書き込むと履歴が出てきて、もう一度書き込むと書き込める。
戻っている。 #108 が入れた経路(拒否が運んできた発言をその場で描く)がそのとおりに働いており、実機で確認できた。当初の観測「消えたまま」は、書き込みを試す前の画面を見た報告 であった。
したがってこの issue が残す問題は、当初書いたものより小さい。履歴に追いつくために、まず一度拒否される投稿を出さなければならない という点である。スリープから戻った画面が部屋を見るのに、失敗する操作を一度挟む必要はない。
premise
消え方は二種類あり、片方は今日の材料で戻せる
経路
Floor の保持分
取り戻し
webview の読み込み直し(スリープ復帰・再読み込み)
生きている (部屋のプロセスは動いたまま)
この issue
アプリ自体の再起動
部屋ごと消える
#48 (ディスク永続化)
スリープで観測されているのは上の経路である。部屋は room_floor::Floor の VecDeque に直近 512 件(DEFAULT_CAPACITY)を持ち続けているのに、画面はそれを受け取る口を持たない。
画面には部屋を読む口が無い(席に着く時点では)
Tauri コマンドは room_port / room_participants / room_join / room_post のみであり、room_join は Result<(), String> を返す——席に着いたことだけを返し、部屋が何を覚えているかは渡さない。
当初この節は「イベントを受け取れなかった発言は二度と画面に来ない」と書いていた。これは誤りである ——#108 のあとに書きながら、#108 が入る前の状態を書いていた。実際には room_post の拒否が発言を運んでおり、そこが唯一の読み出し口として働いている。残っているのは、その口が投稿の失敗にしか開かない ことである。
描く仕組みは #108 で既に在る
src/main.ts の drawMissed が、渡された発言列を drawnIds で重複を落としながら順に描き、透かしを最後の発言まで進める。この issue が足すのは渡す経路 であって、描き方ではない。
constraints
未確定(詰めるところ)
room_join の戻り値に載せるか、独立したコマンドにするか。席に着く瞬間と描く瞬間を分けたいなら後者。
席の since(Floor::seq の初期位置)との関係。現状「接続より前の発言は配信されていないので missed に数えない」という設計であり、画面が過去分を描いたあとの透かしがどこに立つかを決める必要がある。
描いた分の見え方。bug(room): a refusal throws away the posts it was handed, locking the screen out of speaking #108 と同じく印を付けない方針でよいか。
範囲外
#48 / #108
purpose
画面が席に着いた時点で、部屋が保持している発言を渡して描く。発言を一度拒否させなくても、webview が読み込み直されたあとの画面が部屋の記憶に追いつく。
観測(Master、2026-08-27)
訂正を含む。 この issue は当初「スリープ後に履歴が戻らない」と書いて起票された。その後 Master が実機で追加観測している:
戻っている。 #108 が入れた経路(拒否が運んできた発言をその場で描く)がそのとおりに働いており、実機で確認できた。当初の観測「消えたまま」は、書き込みを試す前の画面を見た報告であった。
したがってこの issue が残す問題は、当初書いたものより小さい。履歴に追いつくために、まず一度拒否される投稿を出さなければならないという点である。スリープから戻った画面が部屋を見るのに、失敗する操作を一度挟む必要はない。
premise
消え方は二種類あり、片方は今日の材料で戻せる
Floorの保持分スリープで観測されているのは上の経路である。部屋は
room_floor::FloorのVecDequeに直近 512 件(DEFAULT_CAPACITY)を持ち続けているのに、画面はそれを受け取る口を持たない。画面には部屋を読む口が無い(席に着く時点では)
Tauri コマンドは
room_port/room_participants/room_join/room_postのみであり、room_joinはResult<(), String>を返す——席に着いたことだけを返し、部屋が何を覚えているかは渡さない。当初この節は「イベントを受け取れなかった発言は二度と画面に来ない」と書いていた。これは誤りである——#108 のあとに書きながら、#108 が入る前の状態を書いていた。実際には
room_postの拒否が発言を運んでおり、そこが唯一の読み出し口として働いている。残っているのは、その口が投稿の失敗にしか開かないことである。描く仕組みは #108 で既に在る
src/main.tsのdrawMissedが、渡された発言列をdrawnIdsで重複を落としながら順に描き、透かしを最後の発言まで進める。この issue が足すのは渡す経路であって、描き方ではない。constraints
未確定(詰めるところ)
room_joinの戻り値に載せるか、独立したコマンドにするか。席に着く瞬間と描く瞬間を分けたいなら後者。since(Floor::seqの初期位置)との関係。現状「接続より前の発言は配信されていないので missed に数えない」という設計であり、画面が過去分を描いたあとの透かしがどこに立つかを決める必要がある。範囲外
#48 / #108