4.5 KiB
nirc-rs — TODO
Tracking open tasks for the nirc-rs sovereign data terminal.
Critical
None at this time.
High
-
Test Matrix protocol against a live server — The Matrix implementation is complete (megolm E2EE, SQLite crypto store, room sync, member events, access token persistence) but has never been tested against matrix.org or any homeserver. This is the highest-priority untested protocol.
-
Test Discord protocol against a live server — The Discord implementation uses Gateway WebSocket and REST API but has not been tested. Need to verify connection, event handling, and message send/receive.
-
Test remaining protocols — Stout, Spacebar, Nerimity, and BitChat are all fully implemented but untested. Each needs a live server/peer to verify:
- Stout (Revolt-compatible fork)
- Spacebar (Revolt fork)
- Nerimity (custom platform)
- BitChat (P2P, libp2p, mDNS discovery)
-
ADC CID generation — Currently uses
NIRC{SID}placeholder instead of proper Base32-encoded Tiger hash per the ADC specification. This works for basic connectivity but is non-standard and may cause issues with strict hubs.
Medium
-
Transfer panel rendering in draw loop — The transfer widget exists but is only visible when toggled via
/transfers. Integrate it into the main draw loop so it can be shown as a persistent panel or split view alongside the chat view. -
Console overlay key binding — The Quake-style debug console overlay lost its key binding when F1 was reassigned to the dropdown menu. Assign a new key (e.g.,
Ctrl-`or F2) to toggle the console overlay. -
ADC I4/U4 in BINF for incoming C-C — When an incoming client-client (C-C) connection arrives in ADC, the BINF message needs to include the correct I4 (IPv4) and U4 (UDP4) fields. Currently may be incomplete for inbound connections.
-
IRC SASL EXTERNAL with client certificates — Implement SASL EXTERNAL mechanism using TLS client certificates stored in the identity vault. This requires reading a PEM certificate and key from the vault and presenting them during the TLS handshake.
Low
-
IRC monitor mode (+i invisible) — Support for IRC's user mode
+i(invisible) and potentially a monitor/watch list feature for tracking online status of specific users. -
DCC file transfers for IRC — Implement DCC SEND/ACCEPT for direct client-to-client file transfers over IRC. This is separate from the yamux-multiplexed transfer system used by ADC.
-
Plugin API documentation — Write comprehensive documentation for the
Plugintrait, including how to build a.soplugin, the message types it receives, and how to register hooks. -
Config file hot-reload — Watch
~/.nirc/config.tomlfor changes (via SIGHUP or filesystem notification) and reload without restarting. Must handle errors gracefully and not drop active connections. -
Terminal title set/update — Set
XTITLE/TerminalTitleescape sequences to show the current window name, network, and unread count in the terminal emulator's title bar. -
Scrollback persistence to disk — Currently scrollback is in-memory only (per-tab, up to
max_scrollbackmessages). Persist to disk and reload on startup so history survives restarts.
Completed
- IRC CTCP VERSION auto-response — Automatically replies to CTCP VERSION requests with the nirc-rs version string.
- UTF-8 safe backspace — Backspace correctly handles multi-byte UTF-8 characters (e.g., emoji, accented characters) without corrupting the input buffer.
- Debug log pollution fix — Reduced default log level to
warn; diagnostic output now only appears atinfo/debug/tracelevels. - F1 dropdown menu — QBasic 4.5 / aptitude-style menu bar with arrow-key navigation and command dispatch.
- Ctrl-P / Ctrl-A / Ctrl-Z keybindings — Previous buffer, next active buffer, highlight cycle.
- Transfer ticker footer — Real-time transfer speed and ETA displayed in the status bar footer.
/nickUI update — Nickname changes now immediately update all tab titles and status bar displays.- ADC handshake fix — Corrected HSUP/HSID/INF handshake sequence for reliable hub connections.
- Local IP footer — Status bar shows local network IP address.
- Window list protocol badges — Winlist sidebar shows per-protocol badges (IRC/Mtx/ADC/P2P/Dsc) with color coding.