# 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 list - **`Ctrl-A`** — jump to next active (connected) buffer - **`Ctrl-Z`** — cycle through highlight words for notification filtering - **`Insert`** — scroll chat view to the bottom and re-enable auto-scroll - **`Delete`** — now deletes the character after the cursor only (no longer cycles connections; use `Home`/`End` for 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 - **`/nick` UI 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 `macros` feature, not the removed `swarm-derive`) - matrix-sdk 0.18 - tokio-rustls 0.26 with webpki-roots --- ## Known Issues 1. **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 `F1` opens the menu instead. A new key binding for the console overlay is needed (see TODO). 2. **Transfer panel is toggle-only** — `/transfers` toggles 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. 3. **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. 4. **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 --release` succeeds - **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