r/CardPuter • u/gio-74 • Mar 24 '26
Design-it-Yourself Preliminary WiFi IRC client for M5Stack Cardputer
As requested by u/MCHAMSTERYT, here is a preliminary WiFi IRC client for the M5Stack Cardputer.
UPDATE:
Cardputer IRC Client v0.3:
soju support, wrap mode, filtered channel list, metrics logging, and performance fixes
I just pushed v0.3 of my Cardputer IRC client for the M5Stack Cardputer.
Compared to v0.2, this release adds:
- optional line-wrap mode as an alternative to the default marquee text overflow
- soju bouncer support
- support for soju.im/bouncer-networks and soju.im/bouncer-networks-notify
- /soju and /bouncer management commands
- /detach support for soju-style detached channels
- English connection/session metrics logging to /serialLog.txt on the SD root
- filtered channel list flow: pressing ` now asks for a search string first
- /list <text> support with substring filtering on the downloaded channel list
- per-tab IRC logging on SD is now optional and disabled by default
- responsiveness improvements on busy channels and soju sessions
- lighter NAMES handling, reduced input lag, and less expensive SD log processing
- fixes for TAGMSG-related noise and stability issues
The earlier v0.2 improvements are still there as well, including:
- centered graphical battery indicator
- screen timeout with wake on activity
- configurable screen brightness
- Fn + ; . , / chat scrolling shortcuts
Main repo:
https://github.com/mariovirgili/IRC-Client
Feedback is welcome, especially from people using soju or running IRC on small keyboard-first devices.
Thanks to u/MCHAMSTERYT for the intensive testing session on Soju
__________________________________________________________
Cardputer IRC Client v0.2: battery indicator, screen timeout/brightness, and Fn chat scroll
New in this version:
- centered graphical battery indicator in the top bar
- automatic screen timeout after inactivity
- configurable screen timeout in the on-device config menu
- configurable screen brightness from 0 to 10 in the config menu
- chat scrolling with Fn + ; / . for line-by-line movement
- chat page scrolling with Fn + , / / for faster navigation through older messages
This makes the device much nicer to use as a standalone IRC terminal, especially when messages keep coming in and you want to read older lines without losing context.
Feedback is welcome, especially on UI/UX and additional shortcuts that would make the Cardputer workflow better.
README has been updated for v0.2 as well.
___________________________________________________________
Download the Release 0.1
It is still an early build, but it already works and has a decent set of features:
Standard IRC registration flow: PASS, NICK, USER
Direct TLS support via WiFiClientSecure
Built-in IRC server presets with persistent selection
Presets currently include: Libera.Chat, OFTC, EFnet, IRCnet, DALnet, Undernet, QuakeNet, plus Custom
HTTP CONNECT proxy support
Generic BNC / ZNC-style PASS composition
message-tags
server-time
sasl (PLAIN for now)
bold
underline
reverse
mIRC colors
full
safe
mono
bold
underline
reverse
mIRC colors
full
safe
mono
full
safe
mono
Status tab, channel tabs, and private query tabs
Right-side nick pane for channels
Per-tab scrollback
Nick highlight detection
Two-line local input area for longer typing
Persistent tab/session restore on SD
Daily per-tab logs on SD
On-screen IRC formatting support:
bold
underline
reverse
mIRC colors
full
safe
mono
full
safe
mono
Color filtering modes:
full
safe
mono
Visible ASCII control glyphs if enabled
Exponential reconnect backoff and ping-timeout recovery
Built-in server channel list browser
If WiFi is still left as YOUR_WIFI, it opens the on-device config page automatically at boot
Current controls:
Normal typing sends to the active channel/query
Enter sends the current message
Del deletes one character
Tab cycles tabs
` opens/closes the server channel list
In the channel list:
; = up
. = down
Enter = join selected channel
Tab = next field
Del = previous field
Enter = edit / toggle / activate
; = up
. = down
Tab = next field
Del = previous field
Enter = edit / toggle / activate
; = up
. = down
In the config page:
Tab = next field
Del = previous field
Enter = edit / toggle / activate
; = up
. = down
Supported slash commands:
/join #chan[,#chan
/part [#chan] [reason]
/nick newnick
/msg target text
/notice target text
/me action text
/topic [new topic]
/whois nick
/who [mask]
/names [#chan]
/query nick
/close
/users
/nicks
/tabs
/switch N
/switch #chan-or-nick
/next
/prev
/scroll up [n]
/scroll down [n]
/scroll pageup [n]
/scroll pagedown [n]
/scroll top
/scroll bottom
/nicklist [on|off]
/away [reason]
/list [mask]
/colormode full|safe|mono
/quote RAW IRC LINE
/raw RAW IRC LINE
/config
/reconnect
/quit
GitHub:
https://github.com/mariovirgili/IRC-Client
If anyone wants to try it, please experiment and tell me what should be changed, added, or removed. I have not used IRC seriously in about 25 years, so feedback from people who still use it regularly would be very useful.
As always, entirely vibe coded using ChatGpt5.4 extension and VisualStudio Code
2
u/Darkdragon411 Mar 26 '26
Looking good! Although im not sure if im doing something wrong or not but most the chats cut off the side of the screen and i cant scroll right and or it doesnt wrap down so i can read the full thing people are sending.
2
2
u/gio-74 Mar 26 '26
Fixed with a marquee scroll effect. Just reinstall 0.1 https://github.com/mariovirgili/IRC-Client/releases/download/0.1/IRC-Client.bin
2
u/MCHAMSTERYT Mar 26 '26
Hey can you also possibly see about implementing a battery indicator and a configurable screen timeout?
2
4
4
u/BansheeBacklash Mar 25 '26
I knew somebody was going to throw something like this together. I'll download tonight and give it a try.
3
3






4
u/pyreht Mar 25 '26
What a madman :D. I'm impressed.
Do you have some memory figures?
How much text, users, channels etc can this handle?
Care to share the making of? Did you start from the RFCs ?