Note: The test count badge now only reflects
--lib --bins tests (excluding doctests). This change does not indicate a loss of test coverage.
A powerful, modern IRC client built in Rust with an enhanced Material Design 3 interface and comprehensive Lua scripting
Last Updated: 2025-11-18 | Branch: main - v0.4.0 Phase 4 Scripting Complete
Features • Documentation • Development Plan • Architecture • Contributing
RustIRC aims to be the definitive modern IRC client by combining:
- mIRC's powerful scripting and customization capabilities
- HexChat's user-friendly GUI and plugin ecosystem
- WeeChat's efficiency, performance, and professional features
Built with Rust for memory safety, performance, and cross-platform reliability.
- 🔌 Multi-Server Support - Connect to multiple IRC networks simultaneously
- 🔒 Modern Security - TLS/SSL by default, SASL authentication, secure credential storage
- 🎨 Dual Interface - Beautiful GUI (Iced) and efficient TUI (ratatui) modes
- 📜 Lua Scripting ✅ - Complete Lua 5.4 scripting with 50+ IRC API functions and event hooks
- 🔧 Plugin System - Python scripting and binary plugins (planned)
- 📡 Full Protocol Support - RFC 1459/2812 compliance with complete IRCv3 extensions
- 💾 DCC Support - File transfers and direct chats (planned)
- 🌍 Cross-Platform - Native support for Windows, macOS, and Linux
- 🎯 Smart tab completion with context awareness
- 📊 Advanced message filtering and highlighting
- 🔍 Full-text search across all buffers
- 📱 Responsive design that adapts to window size
- 🎨 Theming engine with custom color schemes
- 🌐 Internationalization support
- ♿ Accessibility features
- 📈 Performance monitoring and optimization
Version 0.4.0 - Phase 4 Scripting & Automation Complete
- 🔧 50+ IRC Functions: Complete automation API (connect, privmsg, join, whois, notify, etc.)
- 🎯 Event-Driven Hooks: Full event system (on_message, on_join, on_part, on_nick, etc.)
- 🔒 Secure Sandbox: Dangerous functions removed (os.execute, io.*, require)
- ⚙️ Custom Commands: Register new IRC commands from Lua scripts
- 📦 Built-in Scripts: Auto-away, auto-rejoin, highlight, URL logger examples
- ⚡ Lua 5.4: Modern Lua with mlua safe bindings
- 🎨 Script Management: Load, unload, enable, disable, reload scripts
- 📊 State Queries: Access server, channel, and user information
- 💬 UI Integration: Print messages, display notifications, update status
- 🔍 Complete Documentation: 600+ line guide with API reference and tutorials
- ✅ Production Ready: 11 comprehensive tests, all passing
- 🎯 Advanced Widget System: Complete Material Design 3 components with Iced
- 🎨 Floating Action Buttons: Material-style FABs with ripple effects
- 📱 Navigation Rails & Drawers: Adaptive navigation for all screen sizes
- 🏗️ Card-Based Layouts: Elevated surfaces with proper shadow handling
- 🔲 Material Theming: Dynamic color extraction and theme generation
- ⚡ GPU Acceleration: WGPU backend with hardware acceleration
- 🎭 Smooth Animations: 60 FPS transitions and effects
- 📐 Responsive Layouts: Adaptive design system with breakpoints
- 🖼️ Custom Shaders: Advanced visual effects and gradients
- 🎪 Gesture Support: Swipe, pinch, and multi-touch handling
Last Updated: November 18, 2025 - v0.4.0 Phase 4 Scripting Complete
- ✅ Technology validation with 4 working prototypes
- ✅ Development environment fully configured
- ✅ Core architecture implemented with 6-crate workspace structure
- ✅ CI/CD pipeline operational with GitHub Actions
- ✅ Async networking layer with Tokio and full TLS support via rustls
- ✅ Complete IRC protocol parser (RFC 1459/2812) with IRCv3 extensions
- ✅ Multi-server connection management with automatic reconnection
- ✅ Event-driven state management system with thread safety
- ✅ Message routing and command processing with CTCP support
- ✅ Security Verification Complete: Zeroize trait for credentials, comprehensive input validation
- ✅ 100% Implementation Verified: All 50 Phase 2 tasks confirmed complete with zero placeholders
-
✅ Phase 1-3: ENHANCED ✅ with Material Design 3 GUI
-
✅ Phase 1: Research & Setup - Project infrastructure, technology validation, architecture foundation
-
✅ Phase 2: Core IRC Engine - Async networking, protocol parser, multi-server management, event system
-
✅ Phase 3: User Interface Enhanced - Iced Material Design 3, TUI (ratatui), CLI prototype, advanced features
-
✅ Lua Scripting Engine (Production Ready) ✅
-
✅ Secure Sandboxed Execution: Dangerous functions removed (os.execute, io.*, require)
-
✅ 50+ IRC API Functions: Complete automation API
- Core: connect, disconnect, send raw commands
- Messaging: privmsg, notice, action, CTCP
- Channels: join, part, kick, topic, mode, invite
- Users: nick, whois, who, away, ison
- State: servers, channels, users, my_nick, is_op
- UI: print, echo, log, status, notify, beep
-
✅ Event System: Full event hooks (on_message, on_join, on_part, on_nick, on_topic, etc.)
-
✅ Custom Commands: Register new IRC commands from scripts
-
✅ Built-in Scripts:
- auto_away.lua - Automatic away after idle time
- auto_rejoin.lua - Auto-rejoin channels after kick
- highlight.lua - Keyword highlighting with notifications
- url_logger.lua - URL logging with search and filtering
-
✅ Script Management: Load, unload, enable, disable, reload operations
-
✅ Comprehensive Documentation: 600+ line scripts/README.md with complete API reference
-
✅ Production Quality: 11 tests passing, zero errors, all functionality verified
- 📋 Python scripting engine (PyO3) - Planned
- 📋 Binary plugin system - Planned
- 📋 Plugin manager UI - Planned
Status: Lua scripting system fully functional and production-ready. All 6 crates compile successfully. 62 tests passing.
- Project Overview - Vision, principles, and goals
- Architecture Guide - System design and component structure
- Technology Stack - Dependencies and technical choices
- Project Status - Current development state
- IRC Protocol Implementation - RFC 1459/2812 compliance
- IRCv3 Extensions - Modern IRC capabilities
- DCC Protocol - Direct Client-to-Client features
- SASL Authentication - Secure authentication
- API Reference - Core API documentation
- Lua Scripting Guide - Complete Lua scripting documentation with 50+ API functions
- Built-in Scripts - Example scripts (auto-away, auto-rejoin, highlight, url_logger)
- Python Scripting Guide - Python script development (planned)
- Testing Strategy - Comprehensive testing approach
- Master Todo List - Overview of all development tasks
- Individual phase todos in to-dos/ directory
RustIRC is being developed in 7 carefully planned phases over 24-26 weeks:
- Technology validation and prototyping
- Development environment setup
- Core architecture design
- GUI framework comparison (Iced vs GTK-rs)
- Detailed Plan | Tasks
- Async networking with Tokio
- IRC protocol parser implementation
- Multi-server connection management
- State management system
- Detailed Plan | Tasks
- GUI implementation with Iced
- TUI implementation with ratatui
- Unified UI abstraction layer
- Theme system and customization
- Detailed Plan | Tasks
- Lua scripting engine integration (mlua)
- Python scripting engine integration (PyO3)
- Binary plugin system with stable ABI
- Script/plugin manager UI
- Detailed Plan | Tasks
- DCC file transfers and chats
- Complete IRCv3 implementation
- Advanced security features
- Search and filtering systems
- Detailed Plan | Tasks
- Comprehensive test suite
- Performance optimization
- Security audit
- Beta testing program
- Detailed Plan | Tasks
- Platform-specific packaging
- Distribution setup
- Documentation finalization
- Launch preparation
- Detailed Plan | Tasks
┌─────────────────────────────────────────────────────────────┐
│ Enhanced Iced Material Design GUI Layer │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Material Design 3 Components ││
│ │ ├─ Navigation (Rails, Drawers, Tabs) ││
│ │ ├─ Surfaces (Cards, Sheets, Dialogs) ││
│ │ ├─ Actions (FABs, Buttons, Menus) ││
│ │ └─ Feedback (Ripples, Progress, Toasts) ││
│ └─────────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Iced 0.13.1 Enhanced Runtime ││
│ │ ├─ WGPU GPU Acceleration ││
│ │ ├─ Custom Shader Pipeline ││
│ │ ├─ Animation Engine (Spring Physics) ││
│ │ └─ Responsive Layout System ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ Scripting & Plugin Layer │
│ ┌──────────┐ ┌──────────┐ ┌─────────┐ ┌────────────┐ │
│ │ Lua │ │ Python │ │ Binary │ │ Script │ │
│ │ (mlua) │ │ (PyO3) │ │ Plugins │ │ Manager │ │
│ └──────────┘ └──────────┘ └─────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ Core IRC Engine │
│ ┌──────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Protocol │ │ State │ │ Connection │ │
│ │ Parser │ │ Manager │ │ Manager │ │
│ └──────────────┘ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ Network & Platform Layer │
│ ┌──────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Tokio │ │ rustls │ │ Platform │ │
│ │ Async │ │ TLS/SSL │ │ Integration │ │
│ └──────────────┘ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
- Event-driven architecture with message passing between components
- Actor model for connection management using Tokio tasks
- Plugin isolation with process boundaries for stability
- Sandboxed scripting with resource limits and permissions
- Zero-copy parsing where possible for performance
- Modular design allowing easy feature additions
- Language: Rust (Edition 2021, MSRV 1.75.0)
- Async Runtime: Tokio (multi-threaded, work-stealing)
- GUI Framework: Enhanced Iced 0.13.1 with Material Design 3
- WGPU backend for GPU acceleration
- Custom shader support
- Spring-based animation system
- Material Design 3 component library
- TUI Framework: ratatui
- TLS: rustls (pure Rust, no OpenSSL)
- Lua Scripting: mlua with Lua 5.4 (production-ready, sandboxed, 50+ IRC API functions) ✅
- Python Scripting: PyO3 (Python 3.8+, GIL management) - Planned
- Plugin System: libloading (cross-platform dynamic loading) - Planned
- Serialization: serde with TOML configs
- Logging: tracing with structured logging
- Error Handling: anyhow + thiserror
- Testing: Built-in + mockall + proptest
- CLI: clap v4
- Notifications: notify-rust
- System Paths: directories (XDG compliance)
- Cross-platform: Full support for Windows 10+, macOS 10.15+, Linux (glibc 2.31+)
Version: 0.4.0 - Phase 4 Scripting Complete Phase: Phases 1-4 Complete ✅ | Lua Scripting Production Ready 📜 Build Status: All 6 crates compile successfully, 62 tests passing Total Tasks: 249+ across 7 phases | Phase 4 Lua Scripting 100% complete
- ✅ Phase 1: Research & Setup - Project infrastructure, technology validation, architecture foundation
- ✅ Phase 2: Core IRC Engine - Async networking, protocol parser, multi-server management, event system
- ✅ Phase 3: User Interface Enhanced - Iced Material Design 3, TUI (ratatui), CLI prototype, advanced features
- ✅ Phase 4: Lua Scripting - Complete Lua 5.4 engine with 50+ API functions, event hooks, built-in scripts
- 📱 Navigation Rail: Collapsible side navigation with Material icons
- 🎯 Floating Action Buttons: Primary and extended FABs with animations
- 📋 Material Cards: Elevated, filled, and outlined card variants
- 🔘 Material Buttons: Text, outlined, contained, and toggle buttons
- 📝 Text Fields: Material outlined and filled input fields
- ✅ Selection Controls: Checkboxes, radio buttons, switches
- 📊 Progress Indicators: Linear and circular progress with animations
- 💬 Tooltips & Badges: Context hints and notification indicators
- 🎨 Material Icons: Complete icon set with outlined/filled variants
- ⚡ Performance: GPU-accelerated rendering with WGPU backend
- 🎭 Animations: Spring physics, cubic bezier easing, stagger effects
- 📐 Layout System: Flexbox-inspired responsive layouts
- 🖼️ Custom Rendering: Shader support for advanced visual effects
- 🌊 Ripple System: Touch feedback with Material ripple effects
- 🎨 Theming Engine: Runtime theme switching with smooth transitions
- 📱 Responsive Design: Adaptive layouts for different screen sizes
- ♿ Accessibility: Keyboard navigation, screen reader support
- ✅ RESTORED PROVEN WORKFLOWS: Reverted to battle-tested configurations from commit 928aad1 (v0.3.5 baseline)
- ✅ COMPREHENSIVE SCCACHE RESILIENCE: Automatic fallback to local disk cache during GitHub service outages
- ✅ CROSS-PLATFORM TIMEOUT COMPATIBILITY: BASH_ENV helper functions with perl-based macOS fallback
- ✅ GITHUB CACHE SERVICE OUTAGE HANDLING: Robust error recovery across all test execution steps
- ✅ WORKFLOW STEP FUNCTION PERSISTENCE: Complete BASH_ENV architecture for function availability
- ✅ UNIFIED BASH CONFIGURATION: Universal bash shell usage across all platforms including Windows
- ✅ LESSONS LEARNED DOCUMENTED: All optimization attempts preserved in in_prog/ folder for reference
- ✅ STABLE CI/CD FOUNDATION: Return to proven pipeline configuration after v0.3.6 simplification failure
- ✅ COMPREHENSIVE SCCACHE RESILIENCE: GitHub cache service HTTP 400 fallback with automatic local disk cache mode
- ✅ CROSS-PLATFORM TIMEOUT FIXES: macOS perl-based timeout, Linux/Windows native timeout with proper error handling
- ✅ FUNCTION PERSISTENCE RESOLUTION: BASH_ENV helper approach for run_with_timeout across all GitHub Actions steps
- ✅ WORKFLOW OPTIMIZATION: mozilla-actions/[email protected] with sccache v0.10.0 for enhanced reliability
- ✅ UNIFIED CONFIGURATION: Eliminated platform-specific sccache steps in favor of comprehensive resilience approach
- ✅ YAML WORKFLOW VALIDATION: Both master-pipeline.yml and ci.yml pass comprehensive syntax validation
- ✅ CARGO-NEXTEST INSTALLATION FIXED: Removed duplicated bash code causing 'syntax error near unexpected token fi'
- ✅ MSRV CHECK FIXED: Added BASH_ENV helper setup ensuring run_with_timeout function availability
- ✅ MASTER PIPELINE OPTIMIZATION: Fixed critical cache key typo, achieved 60-70% performance improvement
- ✅ BUILD ARTIFACT SHARING: Eliminated redundant compilation through intelligent artifact caching
- ✅ COMPREHENSIVE TEST SUITE: 118 total tests (53 unit + 65 doctests) with full CI integration
- ✅ CRITICAL RELEASE FIX: Resolved 'cp -r not specified' error preventing release asset preparation
- ✅ ARM64 BUILD TARGETS: Added cross-compilation support for Linux and macOS ARM64
- ✅ TOOL CACHING: Implemented cargo-nextest and cargo-tarpaulin caching for faster CI runs
- ✅ PARALLEL EXECUTION: Optimized job dependencies enabling parallel coverage and security scans
- ✅ SCCACHE INTEGRATION: Distributed compilation caching dramatically reduces build times
- ✅ DOCUMENTATION EXCELLENCE: 65+ working doctests, per-crate READMEs, complete rustdoc coverage
- ✅ WINDOWS COMPATIBILITY: Fixed shell script issues for cross-platform CI execution
- ✅ WINDOWS CI COMPILATION FIXES: Resolved all 4 compilation errors in cross-platform CI
- ✅ COMPREHENSIVE ERROR HANDLING: Implemented PlatformError enum with thiserror integration
- ✅ CONDITIONAL IMPORTS: Optimized platform-specific imports with proper conditional compilation
- ✅ CROSS-PLATFORM VERIFICATION: All targets compile successfully with zero warnings
- ✅ SECURE IMPLEMENTATION: Enhanced error propagation following Rust security best practices
- ✅ CLIPPY WARNING CLEANUP: Reduced from 258 to 12 warnings (95.3% improvement)
- ✅ MODERN RUST IDIOMS: Updated format strings, replaced .get(0) with .first(), improved combinators
- ✅ CODE ORGANIZATION: Proper type aliases, Default implementations, appropriate allow attributes
- ✅ BUILD VERIFICATION: All 6 crates compile successfully with zero errors
- ✅ BEST PRACTICES: Following latest Rust 2024 edition patterns and conventions
- ✅ PROFESSIONAL TAB COMPLETION: Complete system with command/nick/channel completion, cycling, and context awareness
- ✅ ADVANCED KEY HANDLING: Comprehensive IRC client key shortcuts (Ctrl+B/U/I formatting, Alt+1-9 tab switching, Ctrl+L buffer clear)
- ✅ ENHANCED COMMAND ROUTING: Multi-server architecture with proper error handling and validation
- ✅ DIALOG SYSTEM FIXES: Resolved all borrowing issues in preferences dialog system
- ✅ INTERFACE MODE PARITY: All three interfaces (GUI, TUI, CLI) tested and operational
- ✅ ZERO COMPILATION ERRORS: Clean build across all interface implementations
- ✅ PHASE 4 FOUNDATION: Solid infrastructure ready for scripting and plugin development
- ✅ CLI ENHANCEMENT COMPLETE: Full CLI multi-server architecture with GUI feature parity
- ✅ MULTI-SERVER SUPPORT: CLI now supports multiple server connections with HashMap storage
- ✅ IRC METHOD IMPLEMENTATION: Complete
part_channel,list_channels,whoisusing protocol commands - ✅ TAB MANAGEMENT: Comprehensive server and channel tab system in CLI mode
- ✅ COMPILATION ERRORS RESOLVED: All CLI architectural migration issues fixed
- ✅ ZERO BUILD ERRORS: rustirc-core compiles successfully with enhanced CLI
- ✅ INTERFACE MODE PARITY: CLI now has full feature equivalency with GUI mode
- ✅ PLATFORM-SPECIFIC IMPLEMENTATIONS: Complete Windows/macOS/Linux system tray and notification support
- ✅ NETWORK MANAGEMENT: Full network list dialog with add/edit/delete/connect functionality
- ✅ DIALOG SYSTEM OPERATIONAL: Complete modal dialog system with preferences, connection, and about dialogs
- ✅ ICED 0.13.1 COMPATIBILITY: Full framework compatibility with advanced styling and proper API usage
- ✅ ZERO PLACEHOLDER CODE: All "In a real implementation" comments replaced with working functionality
- ✅ FULL IRC PROTOCOL IMPLEMENTATION: Complete IRC message handling (MOTD, JOIN, PART, PRIVMSG, NAMREPLY, LIST)
- ✅ REAL SERVER CONNECTIVITY: Successfully connects to live IRC servers (tested with irc.libera.chat)
- ✅ LIVE MESSAGE DISPLAY: Real-time IRC messages, user lists, and server responses in GUI
- ✅ CHANNEL OPERATIONS:
/listand/joincommands working with live server data - ✅ IRC EVENT HANDLING: Complete event processing pipeline from server to GUI display
- ✅ TLS CONNECTIVITY: Secure connections to IRC servers with rustls
- ✅ MOTD DISPLAY: Full Message of the Day rendering from live IRC servers
- ✅ USER LIST MANAGEMENT: Real-time user tracking in channels with server synchronization
- ✅ COMPREHENSIVE MESSAGE PARSING: Support for all standard IRC response codes and messages
- ✅ GUI FIXES & ENHANCEMENTS: WHOIS command working, pane dividers always visible, system message filtering operational, menu checkmarks functional
✅ cargo build # Successful compilation (zero errors)
✅ cargo test --workspace --lib --bins # 62 tests pass (all unit tests including 11 scripting tests)
✅ cargo run # Full-featured GUI with LIVE IRC connectivity
✅ cargo run -- --material-demo # Material Design 3 component showcase
✅ cargo run -- --cli # CLI prototype with multi-server support
✅ cargo run -- --tui # TUI mode with ratatui interface
✅ cargo run -- --help # Command-line help and options
✅ cargo clippy # Zero warnings achieved (100% clean)
✅ cargo doc --open # Complete API documentation with examples
# Lua Scripting (NEW in v0.4.0)
✅ Scripts in scripts/ # auto_away.lua, auto_rejoin.lua, highlight.lua, url_logger.lua
✅ Complete API docs # See scripts/README.md for 50+ function referenceRustIRC maintains three active development branches exploring different GUI paradigms:
- 100% COMPLETE: All 424 compilation errors eliminated (424→0)
- Material Demo Functional: Fixed scrollable widget panic - demo fully operational with
--material-demoflag - Serialization Architecture: Complete with
SerializableColorwrapper - MaterialText Migration: All instances properly using
.build()API - All Components Working: Every Material Design 3 component fully functional
- Iced 0.13.1 Full Compatibility: Complete API migration with proper lifetime management
- GPU-accelerated rendering: WGPU backend with hardware acceleration
- Production Ready: Zero errors, zero warnings, comprehensive doctests passing
- Dioxus v0.6 with Virtual DOM
- React-style hooks and components
- RSX syntax (JSX-like)
- WebView and native rendering options
- Hot reload development
- Iced 0.13.1 functional API
- Production-ready GUI
- Proven stability
- Full IRC functionality
- FULLY FUNCTIONAL IRC CLIENT: Live connectivity to IRC servers with complete protocol support
- LUA SCRIPTING ENGINE ✨: Production-ready scripting with 50+ IRC API functions
- BUILT-IN AUTOMATION: Auto-away, auto-rejoin, highlight, and URL logging scripts
- Material Design 3 Demo: Interactive showcase of all MD3 components (
cargo run -- --material-demo) - Real-Time IRC Operations: MOTD display, channel listing, user management, message handling
- Full-Featured GUI: Complete widget system (ServerTree, MessageView, UserList, InputArea, TabBar, StatusBar)
- Live IRC Commands:
/connect,/join,/part,/list,/quitall working with real servers - Advanced Theming: 20+ themes (Dracula, Nord, Tokyo Night, Catppuccin, etc.)
- Resizable Interface: Pane grid layout with user-controlled sizing
- Multiple Interfaces: Full GUI, Material Demo, TUI, and CLI modes
- SASL Authentication: Complete implementation (PLAIN, EXTERNAL, SCRAM-SHA-256)
- Event-Driven Architecture: Full EventBus system with script hook integration
- IRC Formatting: Complete mIRC color codes, bold/italic, URL detection
- TLS Security: Secure connections to IRC servers using rustls
- Comprehensive Protocol Support: All standard IRC response codes and message types
- Script Management: Load, unload, enable, disable, and reload Lua scripts at runtime
- DCC file transfers and direct chats
- Enhanced IRCv3 features (message-tags, server-time, batch)
- Proxy support (SOCKS5, HTTP)
- Native desktop notification integration
- Advanced channel management features
While RustIRC is currently in early development, we welcome contributions!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Clone the repository
git clone https://github.com/doublegate/RustIRC.git
cd RustIRC
# Install Rust (if needed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Build the project
cargo build
# Run tests
cargo test
# Run with debug logging
RUST_LOG=debug cargo run- Follow Rust standard formatting (
cargo fmt) - Ensure no clippy warnings (
cargo clippy) - Write tests for new functionality
- Document public APIs
RustIRC is dual-licensed under either:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
- Inspired by mIRC, HexChat, and WeeChat
- Built with the amazing Rust ecosystem
- Thanks to all future contributors!
- IRC: #rustirc on Libera.Chat (once we're running!)
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with ❤️ and 🦀
