mirror of
https://github.com/kc1awv/rrcd.git
synced 2026-06-08 06:01:54 -07:00
5.9 KiB
5.9 KiB
Changelog
This project follows the versioning policy in VERSIONING.md.
0.3.2 - 2026-05-18
- Added advisory
K_NICK = 7toJOINEDandPARTEDnotifications fanned out to existing room members so clients can show the joining or parting user's nickname without changing the message body format - Kept actor-facing
JOINEDandPARTEDreplies unchanged while extending only the existing-member fanout notifications - Added focused test coverage for JOINED/PARTED fanout nick hints, including
disconnect-driven
PARTEDnotifications - Hardened hub discovery by fixing the advertised destination namespace to
rrc.huband removing config or CLI overrides for that value
0.3.1 - 2026-05-17
- Added a backward-compatible direct
NOTICEextension using envelope keyK_DST = 8for full destination identity hashes - Added advisory
CAP_DIRECT_NOTICE = 2toWELCOMEcapabilities so clients can detect support before sending direct notices - Direct
NOTICEdelivery now returnsERRORfor mixed room-plus-destination envelopes and for unknown or offline destination identities
0.3.0 - 2026-05-16
- Added core message type
ACTION(T_ACTION = 22) routing with room-content semantics - Added advisory capability flag
CAP_ACTIONand now includeB_WELCOME_CAPSin WELCOME payloads - ACTION bodies are forwarded as-is and are not interpreted as slash commands by the hub
- Fixed multi-link identity handling: do not emit room
PARTEDor clear hash-link index state when a peer still remains in the room via another active link (thanks, neutral for the patch!)
0.2.2 - 2026-01-09
- Protocol constants and welcome message limits: Added new constants for hub limits in welcome messages and updated message construction accordingly
- Added
max_nick_bytesconfiguration option to specify maximum nickname size in UTF-8 bytes - Updated CLI to allow overriding
max_nick_bytesvia command-line argument - Updated documentation to reflect new nickname size limit configuration
0.2.1 - 2026-01-08
- JOINED/PARTED room notifications: Existing room members now receive real-time notifications when users join or leave
- When a user joins a room, existing members receive a
JOINEDmessage with the joining user's identity hash - When a user leaves a room, remaining members receive a
PARTEDmessage with the parting user's identity hash - Joining/parting users continue to receive the full member list (when
include_joined_member_listis enabled) - See EX1-RRCD.md for detailed protocol documentation
- When a user joins a room, existing members receive a
Minor fixes:
- fixed JOINED/PARTED notification logic to ensure correct member list updates
- improved type checking and annotations in several modules
- added black, ruff, and mypy to development dependencies for code quality enforcement
0.2.0 - 2026-01-07
- Major internal refactoring: Improved code organization and maintainability
- Extracted modular components from monolithic service class:
SessionManager: Centralized session lifecycle and state managementMessageRouter: Message routing and forwarding logicCommandHandler: Slash-command parsing and executionRoomManager: Room state, membership, and mode managementResourceManager: RNS.Resource transfer handling and coordinationTrustManager: Operator and ban list managementStatsManager: Statistics tracking and reportingConfigManager: Enhanced configuration loading and validation
- Moved message chunking and encoding logic to dedicated
messagesmodule - Consolidated constants and improved code organization
- Reduced service.py from ~4000 lines to <600 lines by delegating to specialized managers
- No breaking changes to protocol, configuration format, or user-facing behavior
Future development will focus on testing, feature enhancements, and optimizations rather than large structural changes.
0.1.3 - 2026-01-05
- Added
/listcommand to discover registered public rooms with their topics (available to all users) - Added
+p(private) channel mode to hide rooms from/listand/whocommands - Private rooms are only visible in
/whoto server operators - Updated mode handling to support
+p/-pflags and persist private status to room registry - Consolidated version number to single source in
rrcd/__init__.py(pyproject.toml now reads it dynamically) - Documentation updates for new command and mode in README.md and EX1-RRCD.md
Minor fixes
- Fix potential deadlock in _resource_advertised
- Add resource timeout cleanup
- Improve notice as resource handling and probe for link MDU with fallback
- Improve nickname updates, O(1) lookups, nick tracking, disambiguation on multiple matches
0.1.2 - 2026-01-01
- Implemented RNS.Resource transfer for messages exceeding MTU limits, with resource envelope handling and automatic fallback
- Allow hub-directed commands (e.g.,
/stats,/reload,/who,/kline) to be sent without a room field - Removed validation that rejected empty room fields in envelopes, per RRC specification
- Hub-level commands now send responses with no room field (
room=None) for better client compatibility - Refactored greeting messages to use dedicated MOTD resource kind for clearer semantics
- Added missing configuration options to default config template
0.1.1 - 2025-12-30
- Protocol extension: hub may attach an optional nickname (
K_NICK = 7) to forwardedMSG/NOTICEenvelopes for improved user identification
0.1.0 - 2025-12-29
Initial public release.
- Standalone Reticulum Relay Chat daemon (hub service)
- RRC v1 envelope + CBOR wire encoding
- Core hub features: HELLO/WELCOME gating, JOIN/PART, MSG/NOTICE forwarding, PING/PONG
- Operator and moderation commands via slash-command convention in MSG/NOTICE bodies
- Persistent config + room registry in TOML (
rrcd.toml,rooms.toml) - Reduced lock contention by flushing outbound packets outside the shared state lock
- Added small packaging metadata and README polish