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