Files
roro9stack/site/content/guide/irc.md
T
twislaandClaude Opus 5.5 34e6714785
CI / build (pull_request) Successful in 7m14s
Site / build (pull_request) Successful in 8s
Keys: one table file for the device's help panel and the website's key tables (#72)
Every screen's keys are constant tables in lib/core/src/app_keys.h (52 of
them, each under an `// id: Title` comment). An App's help() picks the table
of the state it is in. site/tools/gen_dev_docs.py reads the same file and
writes site/data/keys.toml; the `keys` shortcode shows a screen's tables on
its guide page, and /guide/keys/ shows all of them.

The Site job fails when the data file is out of date or a page asks for a
table that doesn't exist, and now also runs when app_keys.h changes. A key
added to an App shows up on the website without anyone editing a page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
2026-10-07 01:42:48 +02:00

58 lines
3.2 KiB
Markdown

+++
title = "IRC"
description = "Chat on an IRC server from the keyboard, with a connection that outlives the App and daily logs on the SD card."
weight = 5
[extra]
tag = "IRC"
+++
## Connecting
The first time, type `/settings` and press <kbd>Enter</kbd>. The settings page has:
- **Server** and **Port**, and **TLS** (on or off).
- **Self-signed:** for a server whose certificate no authority signed. It is *pinned on first use*: the first certificate it sees is remembered, and a different one later is refused.
- **Nick**, **SASL user** and **SASL password**, **NickServ password**: passwords show only as `(set)`.
- **Auto-join:** the channels to join after connecting.
- **Save & reconnect.**
Opening the IRC App connects, if Wi-Fi is up. The connection belongs to a **background service**: leaving the App does not disconnect, and new messages keep arriving and being logged. It reconnects by itself after a drop, and does not start by itself after a restart.
## Chatting
You type at the bottom; <kbd>Enter</kbd> sends. A line starting with `/` is a command:
| Command | Does |
|---|---|
| `/join #channel [key]` (or `/j`) | Joins; the `#` is optional |
| `/part [#channel] [message]` | Leaves |
| `/msg nick text` (or `/query`) | Opens a private chat, sending the text if there is any |
| `/me text` | An action line |
| `/nick newnick` | Changes your nick |
| `/topic [text]` | Shows or sets the channel topic |
| `/names [#channel]` | Lists who is there |
| `/quit [message]` | Disconnects and **stays disconnected** until you type something again |
| `/raw …` (or `/quote`) | Sends a line to the server as it is |
| `/settings` | The settings page |
Each server, channel and private chat is a **buffer**. <kbd>Tab</kbd> moves to the next one, each shows how many messages are unread, and your own lines are in the accent colour. Scroll back with <kbd>Alt</kbd> + <kbd>;</kbd> (older) and <kbd>Alt</kbd> + <kbd>.</kbd> (newer). The up and down arrows (<kbd>Fn</kbd> + <kbd>;</kbd> and <kbd>.</kbd>) recall lines you sent.
## Mentions and the unread count
A message with your nick in it, or any private message, is a **mention**: it shows a Toast over whatever App is open, and counts in the Status Bar's `[n]`. Other traffic only adds to the buffer's unread count.
## Logs
Every buffer is logged to the SD card, one file per day, under `/irc`. Logs stop when the card passes 90% full, to keep the rest for captures; nothing is deleted without your asking, in the [Storage App](/guide/storage/)'s Maintenance.
## Good to know
- IRC **pauses** while Wi-Fi is monitoring (the Status Bar shows `MON`) and while the device **installs an update**. It reconnects and rejoins its channels afterwards; the App says `paused` in the meantime.
- A secure connection costs memory: IRC's takes about 40 KB of the 107 KB the device has, and an update's download needs about 52 KB more. That is why IRC steps aside for an update, and why the daily update check waits for IRC to be disconnected (see [Updates](/guide/updates/)).
## The keys, as the device lists them
What <kbd>Fn</kbd> + <kbd>h</kbd> shows on these screens. These tables are generated from the firmware's own lists, so they are always the current ones.
{{ keys(scopes=["irc", "irc-settings", "irc-field"]) }}