In web/src/app.jsx, a JOIN event from the user's own nick opens the channel's tab, but no event closes it: the tab goes only when the user parts from this web client (partChannel). Since #183, a PART the session makes from another client (the IRC listener, or a second web client) reaches the web client as a PART event from its own nick; the web client prints it and keeps the tab, so the user is left with a tab for a channel the session is no longer in. A PART made from the web client itself also comes back as an event after the tab has closed, and adds one to that channel's unread count, which shows if the channel is joined again.
A KICK event has no case at all. It falls through to the default, which writes only the reason into the Server tab, so the user never sees who was kicked from which channel, and a kicked user keeps the tab too.
Fix: a PART event from the user's own nick removes that channel's tab, as partChannel does, and leaves no unread count behind. A KICK event is written into the channel's tab the way PART is (who kicked whom, and the reason); when the kicked nick is the user's own, the tab is removed. Take the KICK event's fields from README.md. Change nothing else in the web client.
Definition of done
Parting a channel from another client of the same session closes that channel's tab in the web client.
A KICK shows in the channel's tab with who kicked whom and the reason, and the kicked user's own tab closes.
Parting from the web client itself still works, with no error, second message or unread count from the PART event that follows it.
One reviewed PR against next.
Model: opus-5-5
In `web/src/app.jsx`, a `JOIN` event from the user's own nick opens the channel's tab, but no event closes it: the tab goes only when the user parts from this web client (`partChannel`). Since https://git.eeqj.de/sneak/neoirc/pulls/183, a `PART` the session makes from another client (the IRC listener, or a second web client) reaches the web client as a `PART` event from its own nick; the web client prints it and keeps the tab, so the user is left with a tab for a channel the session is no longer in. A `PART` made from the web client itself also comes back as an event after the tab has closed, and adds one to that channel's unread count, which shows if the channel is joined again.
A `KICK` event has no case at all. It falls through to the default, which writes only the reason into the Server tab, so the user never sees who was kicked from which channel, and a kicked user keeps the tab too.
Fix: a `PART` event from the user's own nick removes that channel's tab, as `partChannel` does, and leaves no unread count behind. A `KICK` event is written into the channel's tab the way `PART` is (who kicked whom, and the reason); when the kicked nick is the user's own, the tab is removed. Take the `KICK` event's fields from `README.md`. Change nothing else in the web client.
## Definition of done
1. Parting a channel from another client of the same session closes that channel's tab in the web client.
2. A `KICK` shows in the channel's tab with who kicked whom and the reason, and the kicked user's own tab closes.
3. Parting from the web client itself still works, with no error, second message or unread count from the `PART` event that follows it.
4. One reviewed PR against `next`.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
In
web/src/app.jsx, aJOINevent from the user's own nick opens the channel's tab, but no event closes it: the tab goes only when the user parts from this web client (partChannel). Since #183, aPARTthe session makes from another client (the IRC listener, or a second web client) reaches the web client as aPARTevent from its own nick; the web client prints it and keeps the tab, so the user is left with a tab for a channel the session is no longer in. APARTmade from the web client itself also comes back as an event after the tab has closed, and adds one to that channel's unread count, which shows if the channel is joined again.A
KICKevent has no case at all. It falls through to the default, which writes only the reason into the Server tab, so the user never sees who was kicked from which channel, and a kicked user keeps the tab too.Fix: a
PARTevent from the user's own nick removes that channel's tab, aspartChanneldoes, and leaves no unread count behind. AKICKevent is written into the channel's tab the wayPARTis (who kicked whom, and the reason); when the kicked nick is the user's own, the tab is removed. Take theKICKevent's fields fromREADME.md. Change nothing else in the web client.Definition of done
KICKshows in the channel's tab with who kicked whom and the reason, and the kicked user's own tab closes.PARTevent that follows it.next.Model: opus-5-5