A collection of KiwiIRC plugins originally developed for Baboon.fr, a French IRC-based chat site that closed in 2026. Released to the community so these tools don't go to waste.
These plugins were built for a production chat platform, so most have been cleaned up before publishing here: hardcoded domains/endpoints replaced with configurable settings, unrelated site-specific branding and business logic stripped out, and debug logging removed. See each plugin's inline comments for configuration notes.
KiwiIRC loads plugins as plain JavaScript files referenced from your config.json (or config.local.json) under the startupOptions.plugins / plugins array — see the KiwiIRC plugin documentation for details. Drop the .js file(s) you want into your static/plugins/ folder and reference them from your config. plugin-conference/ is a separate Vue/Webpack sub-project — build it with yarn install && yarn build and load the resulting bundle instead.
- tooltip.js — generic
data-tooltipattribute-based tooltip system. - hideMobileIconsPlugin.js — hides selected header icons on mobile screens.
- cleanup_networks.js — disconnects all IRC networks on tab close to avoid ghost connections.
- ignorelist_button.js — header button to open the ignored-users buffer.
- url-channels.js — auto-joins channels passed via a
?channels=URL parameter. - listcommand.js — sends
/listautomatically a few seconds after connecting. - display-topic.js — displays the channel topic above the message list on join/topic change.
- nickserv-style-override.js — modern dark-theme CSS restyle for the standard KiwiIRC NickServ plugin forms.
- mobile-header-adjuster.js — detects AdSense ad banners on mobile and shifts the header down so it isn't covered.
- cplug.js — hides noisy connection numerics/MOTD, answers CTCP VERSION, strips ad-tracking hash fragments from the URL.
- amis-enhanced.js — friends list with online/offline presence (via WATCH/WHOIS), notes, highlighting, and a floating "friends online" widget.
- disable-whois.js — blocks user-triggered
/whoisand/whowasfor privacy-focused deployments. - bannedNotice.js — friendly modal shown when a user is G-lined/Z-lined, with configurable rule text.
- moderation-tools.js — right-click/long-press moderation context menu (kick/ban/quiet/op/voice), integrates with modern-sounds.js.
- modern-sounds.js — procedurally generated UI sounds (Web Audio API, no audio files) for messages, highlights, clicks, etc.
- channel-manager.js — full channel settings panel: standard mode toggles, topic editor with history, one-click ban list management.
- globalUsersPlugin.js — modal listing all connected users on the network.
- imageuploader.js — drag & drop image upload component; requires
settings.imageUploader.endpointto be configured. - menu.js — attachment menu (image share / webcam video recording) in the message input; requires
settings.mediaUpload.imageEndpointandsettings.mediaUpload.videoEndpoint. - videorecorder.js — standalone in-browser webcam video recorder and uploader; requires
settings.mediaUpload.videoEndpoint. - proximity-plugin.js —
!nearbycommand and distance-based user sorting; assumes an "age sex city" realname convention (documented in the file) and asks for confirmation before using browser geolocation. - close_on_part.js — closes a channel buffer automatically when you part it.
- realnameModifier.js — trims whitespace from the realname/gecos before connecting.
- autoreconnect.js — robust auto-reconnect: detects mobile sleep/wake, network changes, and zombie WebSocket connections, with exponential backoff.
- private-webcam-call.js — 1:1 video call button in private messages, built on
plugin-conference. - webcam-salon.js — replaces the standard conference button with a video/audio menu and automatic Jitsi reconnection handling.
- conference-fix.js — fixes conference invite popups so dismissed invites stay dismissed (merged from two earlier iterations of the same fix).
- auto-radio-listener.js — turns a channel into a "radio"/walkie-talkie room: when an operator sets channel mode
+T, joined users automatically get a shared audio room via Jitsi. - radio-test-commands.js —
/testmicro,/testmicrooff,/microstatus,/microhelptest commands for auto-radio-listener.js.
Full Jitsi Meet video conferencing integration for KiwiIRC (call buttons in channels/PMs, automatic moderator promotion for channel operators). Separate Vue/Webpack sub-project, Apache-2.0 licensed. Defaults to the public meet.jit.si server — see its own README for configuration.
MIT for the plugins in ui/, social/, and conference-webcam/ — see LICENSE. plugin-conference/ keeps its own Apache-2.0 license (see plugin-conference/LICENSE).
Some plugins assume an "age / sex / city" realname (gecos) convention (proximity-plugin.js, optionally globalUsersPlugin.js) — a holdover from Baboon.fr's realname format. They degrade gracefully if your network doesn't use this convention, but won't provide their full value without it.
Contributions and forks welcome.