nirc-rs/STATUS.md

108 lines
4.4 KiB
Markdown
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 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