diff --git a/src/store/handlers/channels.ts b/src/store/handlers/channels.ts index 52075aa1..24992a07 100644 --- a/src/store/handlers/channels.ts +++ b/src/store/handlers/channels.ts @@ -209,10 +209,16 @@ export function registerChannelHandlers(store: StoreApi): void { }); ircClient.on("RPL_YOURHOST", ({ serverId, serverName, version }) => { - // Check if the server is running UnrealIRCd - const isUnrealIRCd = version.includes("UnrealIRCd"); + // The `isUnrealIRCd` flag gates UI surfaces that lean on the + // UnrealIRCd module-driven chanmode set (the "Advanced" tab in + // ChannelSettingsModal, etc.). ObbyIRCd is a downstream fork that + // advertises its own name in 002 but inherits that chanmode set, + // so it satisfies the same UI gate. Any features ObbyIRCd adds on + // top (e.g. named-modes) are detected separately through their + // own caps and shouldn't be conflated with UnrealIRCd parity. + const isUnrealIRCd = + version.includes("UnrealIRCd") || version.includes("ObbyIRCd"); - // Update the server with the UnrealIRCd information store.setState((state) => ({ servers: state.servers.map((server) => server.id === serverId ? { ...server, isUnrealIRCd } : server,