4.4 KiB
Executable File
nirc-rs 0.9.0 — Status Report
Version: 0.9.0 Release date: 2026-07 Codename: Sovereign Data Terminal License: GPL-3.0-or-later Rust edition: 2021 Source: https://git.dcos.net/dcosnet/nirc-rs
Protocol Status
| Protocol | Implementation | Testing | Notes |
|---|---|---|---|
| IRC | ✅ Complete | ✅ Tested & Working | TLS, SASL PLAIN, CTCP, ISUPPORT, oper commands |
| ADC/DC++ | ✅ Complete | ✅ Tested & Working | Hub connect, search, file transfers, guard pipeline |
| Matrix | ✅ Complete | ❌ Untested | Megolm E2EE, SQLite store, dedicated OS thread |
| Discord | ✅ Complete | ❌ Untested | Gateway WebSocket, REST API |
| Stout | ✅ Complete | ❌ Untested | REST + WebSocket (Revolt fork) |
| Spacebar | ✅ Complete | ❌ Untested | REST + WebSocket (Revolt fork) |
| Nerimity | ✅ Complete | ❌ Untested | REST + WebSocket (custom platform) |
| BitChat | ✅ Complete | ❌ Untested | libp2p P2P, mDNS, gossipsub, noise |
What's New in 0.9.0
Keybindings
Ctrl-P— jump to previous buffer in the window listCtrl-A— jump to next active (connected) bufferCtrl-Z— cycle through highlight words for notification filteringInsert— scroll chat view to the bottom and re-enable auto-scrollDelete— now deletes the character after the cursor only (no longer cycles connections; useHome/Endfor window switching)
F1 Dropdown Menu
The F1 key now opens a QBasic 4.5 / aptitude-style dropdown menu bar at the top of the screen. Navigate with arrow keys, select with Enter, dismiss with Esc or F1. All slash-commands are accessible through the menu for discoverability.
Transfer Ticker
A transfer progress ticker now appears in the footer bar, showing real-time transfer speed and ETA for all active file transfers — no need to toggle the transfer panel.
UI Fixes
/nickUI update — changing your nickname now immediately updates all tab titles and status bar displays- Local IP footer — the status bar now shows your local network IP address
- Window list badges — protocol badges and unread indicators in the winlist sidebar
Under the Hood
- Ratatui 0.29 migration
- Crossterm 0.28
- libp2p 0.54 (with
macrosfeature, not the removedswarm-derive) - matrix-sdk 0.18
- tokio-rustls 0.26 with webpki-roots
Known Issues
-
F1 took the Quake console binding — the F1 key was previously used for the debug console overlay. This binding is now orphaned; the console overlay still exists in code but has no key binding. Pressing
F1opens the menu instead. A new key binding for the console overlay is needed (see TODO). -
Transfer panel is toggle-only —
/transferstoggles the transfer panel visibility, but the transfer widget is not integrated into the main draw loop. Transfers are only visible in the dedicated panel, not as a persistent widget. -
ADC CID generation is a placeholder — the ADC protocol currently generates CIDs using an
NIRC{SID}placeholder format instead of proper Base32-encoded Tiger hash. This works for basic connectivity but is not standard-compliant. -
Matrix crypto types are not
Send— the matrix-sdk crypto types require running on a dedicated OS thread with a single-threaded tokio runtime. This is handled correctly but adds architectural complexity.
Build & Test Status
- Build:
cargo build --releasesucceeds - Tests: All 313 tests pass
- Binary size (release): ~834 MB debug, optimized release binary significantly smaller
- Rust version required: 1.75+
Roadmap / Next Steps
0.9.x (Stabilization)
- Test Matrix protocol against matrix.org
- Test Discord protocol
- Test remaining protocols (Stout, Spacebar, Nerimity, BitChat)
- Fix ADC CID generation (proper Base32/Tiger hash)
- Reassign console overlay key binding
- Integrate transfer widget into main draw loop
0.10.0 (Hardening)
- IRC SASL EXTERNAL with client certificates
- IRC monitor mode (+i invisible)
- DCC file transfers for IRC
- Plugin API documentation
- Config file hot-reload (SIGHUP or inotify)
- Terminal title set/update (XTITLE)
1.0.0 (Release)
- All 8 protocols tested and working
- Scrollback persistence to disk
- Full plugin API stability guarantee
- Man page and completion scripts finalized
- Packaging for major distributions