IRC: a renamed channel appears as a second one #161

Closed
opened 2026-09-10 15:45:10 -04:00 by Salastil · 1 comment
Owner

draft/channel-rename reports a channel changing its name. Without it a rename looks
like leaving one channel and joining another, and the scrollback splits in two.

A buffer's identity here is its name, so this needs the same care the Discord channel
rename already gets (discord/gateway.rs, the CHANNEL_UPDATE arm): drop the old
buffer, carry its history, or the new one appears alongside the old rather than
replacing it.

Done looks like: a renamed channel keeps its conversation.

One of the four draft IRCv3 extensions that actively-maintained clients already ship
(WeeChat, Halloy, bIRC). The other eight drafts were scored by the 2026-09-10 coverage
review and deliberately not filed: they can still change underneath an implementation.
moho currently implements 1 of the 12 drafts (chathistory).

`draft/channel-rename` reports a channel changing its name. Without it a rename looks like leaving one channel and joining another, and the scrollback splits in two. A buffer's identity here is its name, so this needs the same care the Discord channel rename already gets (`discord/gateway.rs`, the CHANNEL_UPDATE arm): drop the old buffer, carry its history, or the new one appears alongside the old rather than replacing it. **Done looks like:** a renamed channel keeps its conversation. One of the four draft IRCv3 extensions that actively-maintained clients already ship (WeeChat, Halloy, bIRC). The other eight drafts were scored by the 2026-09-10 coverage review and deliberately not filed: they can still change underneath an implementation. moho currently implements **1 of the 12 drafts** (`chathistory`).
Salastil added the featureprotocollow priority labels 2026-09-10 15:45:10 -04:00
Salastil removed the protocol label 2026-09-10 15:53:25 -04:00
Author
Owner

Done in nobilis d271fb7.

RENAME moves the buffer rather than leaving a second channel with the first one's history stranded in it - the buffer's identity is its name, so this is a move: the old one goes, the new one arrives carrying what was said, in that order so the channel never shows twice.

The capability negotiates on Ergo. The rename itself was not exercised live, since renaming a channel needs privileges on one - the handling is unit-covered and the move is a single store update (move_buffer).

Done in nobilis [d271fb7](https://git.salastil.com/Salastil/nobilis/commit/d271fb7). `RENAME` moves the buffer rather than leaving a second channel with the first one's history stranded in it - the buffer's identity is its name, so this is a move: the old one goes, the new one arrives carrying what was said, in that order so the channel never shows twice. The capability negotiates on Ergo. The rename itself was not exercised live, since renaming a channel needs privileges on one - the handling is unit-covered and the move is a single store update (`move_buffer`).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Salastil/moho#161