Files
rrcd/CHANGELOG.md
T
2026-05-18 20:48:16 +00:00

5.9 KiB

Changelog

This project follows the versioning policy in VERSIONING.md.

0.3.2 - 2026-05-18

  • Added advisory K_NICK = 7 to JOINED and PARTED notifications 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 JOINED and PARTED replies unchanged while extending only the existing-member fanout notifications
  • Added focused test coverage for JOINED/PARTED fanout nick hints, including disconnect-driven PARTED notifications
  • Hardened hub discovery by fixing the advertised destination namespace to rrc.hub and removing config or CLI overrides for that value

0.3.1 - 2026-05-17

  • Added a backward-compatible direct NOTICE extension using envelope key K_DST = 8 for full destination identity hashes
  • Added advisory CAP_DIRECT_NOTICE = 2 to WELCOME capabilities so clients can detect support before sending direct notices
  • Direct NOTICE delivery now returns ERROR for 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_ACTION and now include B_WELCOME_CAPS in 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 PARTED or 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_bytes configuration option to specify maximum nickname size in UTF-8 bytes
  • Updated CLI to allow overriding max_nick_bytes via 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 JOINED message with the joining user's identity hash
    • When a user leaves a room, remaining members receive a PARTED message with the parting user's identity hash
    • Joining/parting users continue to receive the full member list (when include_joined_member_list is enabled)
    • See EX1-RRCD.md for detailed protocol documentation

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 management
    • MessageRouter: Message routing and forwarding logic
    • CommandHandler: Slash-command parsing and execution
    • RoomManager: Room state, membership, and mode management
    • ResourceManager: RNS.Resource transfer handling and coordination
    • TrustManager: Operator and ban list management
    • StatsManager: Statistics tracking and reporting
    • ConfigManager: Enhanced configuration loading and validation
  • Moved message chunking and encoding logic to dedicated messages module
  • 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 /list command to discover registered public rooms with their topics (available to all users)
  • Added +p (private) channel mode to hide rooms from /list and /who commands
  • Private rooms are only visible in /who to server operators
  • Updated mode handling to support +p/-p flags 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 forwarded MSG/NOTICE envelopes 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