Releases: linuxmobile/oxicord
v0.1.7
Overview
Focus: Platform Stability and Packaging Fixes
Oxicord v0.1.7 focuses on resolving critical packaging and environment issues. We have overhauled the Nix flake configuration to align with recent nixpkgs deprecations and hardened the Gateway payload handling to prevent crashes on malformed API responses. Additionally, this release fixes the binary distribution pipeline, ensuring pre-built assets are correctly attached to GitHub releases.
Detailed Changelog
Stability & Gateway
- Resilient Deserialization: Fixed a critical crash where the Discord API returned integer
0for optional string fields (last_message_id,parent_id,guild_id) instead ofnull. The gateway parser now gracefully handles these cases.
Packaging & Build
- Nix Flake Modernization:
- Removed references to the deprecated
darwin.apple_sdk.frameworks, fixing build failures on recent Nixpkgs channels. - Relies on the default SDK for macOS framework dependencies, ensuring broader compatibility.
- Fixed
glibdependency issues and ensured tests run correctly within the Nix build sandbox.
- Removed references to the deprecated
- CI/Release Pipeline:
- Fixed an issue where binary assets were not correctly attached to GitHub releases.
- Automated artifact renaming for clear platform identification (e.g.,
oxicord-x86_64-unknown-linux-gnu).
Documentation
- TOS Clarity: Updated the README to prominently highlight Terms of Service warnings with improved visual styling.
- Roadmap Update: Reflected recent feature completions and adjusted upcoming priorities in the project roadmap.
- Auth Guide: Added clearer instructions for authentication and build dependencies.
Installation
Cargo
cargo install --git https://github.com/linuxmobile/oxicord --tag v0.1.7Nix
nix profile install github:linuxmobile/oxicord
# or run directly
nix run github:linuxmobile/oxicordWhat's Next
- Navigation:
Ctrl+Kfuzzy finder for channels and DM users. - Configuration: Full
config.tomlsupport for custom keybinds and behavior. - Privacy: Option to hide messages from blocked users.
- Media Interaction:
- 'Y' keybinding to copy images to clipboard.
- 'o' keybinding to open images in a High-Res modal.
v0.1.6
Overview
Focus: Stability and Visual Fidelity
Oxicord v0.1.6 represents a significant leap in visual presentation and network resilience. This release transitions the rendering pipeline to a high-fidelity architecture using ratatui-image and chafa, enabling inline image previews with proper aspect ratio preservation. On the backend, we have hardened the "Stealth Transport" layer, ensuring that gateway identification and HTTP headers perfectly mimic official client behavior to prevent fingerprinting.
Detailed Changelog
Visuals
- Inline Image Rendering: Replaced the legacy rendering with a robust integration of
ratatui-image.- Chafa ANSI Previews: Leverages
chafafor high-resolution ANSI image approximations in terminals that lack native graphical protocols. - Protocol Support: Automatic detection and support for Sixel, Kitty, and iTerm2 protocols where available.
- Chafa ANSI Previews: Leverages
- Message Pane Refinements:
- Message Grouping: Consecutive messages from the same author (within a 7-minute window) are now visually grouped, reducing clutter.
- Reply Resolution: Replies now correctly resolve and display the referenced username instead of raw user IDs.
- Rich Embeds: Added support for rendering rich embeds with Markdown fidelity.
- Theming & Identity:
- User Coloring: Implemented role-based coloring for usernames, with deterministic fallback for consistency.
- Native Sidebar: A custom native tree implementation for the Guild/Channel list, removing reliance on emoji hacks.
Networking
- Stealth Transport: Implemented
ClientIdentityto strictly enforce User-Agent, Referer, and Locale headers across all HTTP and Gateway requests. - Gateway Stability:
- Heartbeat ACK: Resolved deadlocks in the heartbeat loop to prevent phantom disconnections.
- DM-to-Guild Transitions: Fixed navigation state persistence to ensure channel lists load correctly when switching between contexts.
- Header Sync: Gateway IDENTIFY payloads are now perfectly synchronized with HTTP client properties.
Performance
- Image Caching: Introduced a three-tier cache architecture (Memory LRU → Disk → Network) to minimize bandwidth and eliminate flickering.
- Resource Usage: Significant reduction in CPU overhead during image rendering and scrolling.
- Build Optimization: Pruned heavy dependencies and optimized the build graph, resulting in faster compile times.
Technical Improvements
- Architecture: Enforced a strict Domain/Infrastructure split.
ImageLoaderandClientIdentityare now isolated infrastructure services. - Dependencies: Integrated
ratatui-imagev1.0.2 for superior terminal graphics handling.
Installation
Cargo
cargo install --git https://github.com/linuxmobile/oxicord --tag v0.1.6Nix
nix profile install github:linuxmobile/oxicord
# or run directly
nix run github:linuxmobile/oxicordWhat's Next
- Navigation:
Ctrl+Kfuzzy finder for channels and DM users. - Configuration: Full
config.tomlsupport for custom keybinds and behavior. - Privacy: Option to hide messages from blocked users.
- Media Interaction:
- 'Y' keybinding to copy images to clipboard.
- 'o' keybinding to open images in a High-Res modal.
- Bot Support: Native support for slash commands and bot interactions.
- Performance: Targeting a further +20% improvement in API response parsing.
v0.1.5 - Oxicord: The Rust Rewrite
Oxicord v0.1.5 - Complete Rust Rewrite
This is the first release of Oxicord, a complete rewrite of Discordo in Rust. This represents a ground-up reimplementation with improved performance, safety, and a modern architecture.
Highlights
- Complete rewrite from Go to Rust using Clean Architecture principles
- Async runtime with Tokio for superior performance
- Modern TUI built with Ratatui
- Secure token storage via system keyring
Features
UI & Navigation
- Animated splash screen with async data loading
- Concurrent event loop with render throttling for smooth performance
- Context-aware @mention autocompletion system
- Dynamic command registry and help popup (
/commands) - Modal file explorer with multipart file upload support
- Smart focus transitions and escape flow navigation
- Horizontal scrolling and improved keyboard handling
- Robust unread notification system with eager data loading
- Server tree view with guild navigation
Messages
- Real-time message rendering with WebSocket gateway
- Message editing with TUI navigation
- Smart scroll with sticky bottom logic
- Contextual external editing (open in $EDITOR)
- Reply UI with proper threading
- Markdown parser with syntax highlighting
- Local timezone for timestamps
- Direct message support
Typing & Presence
- Typing indicators with LazyRequest subscription
- Connection state management with status indicator
Developer Experience
- Nix flake for reproducible builds
- Rust release workflow for CI/CD
Bug Fixes
- Gateway heartbeat deadlock resolved
- DM-to-Guild navigation state handling
- Guild-channel navigation desync and state reset
- Scrollbar overlap with dynamic visibility
- Image preview stability and performance improvements
- Horizontal scroll issues in message view
- Various warnings and dead code cleanup
Architecture
This release implements Clean Architecture with:
- Domain layer: Core entities (Token, Message, Guild, Channel)
- Application layer: Use cases and DTOs
- Infrastructure layer: Discord API, WebSocket gateway, keyring storage
- Presentation layer: Ratatui-based TUI
Breaking Changes
- This is a complete rewrite - no migration path from the Go version
- Configuration format may differ from the original Discordo
- The Go codebase is preserved in the
discordo-gobranch
Installation
From Source
git clone https://github.com/linuxmobile/oxicord
cd oxicord
cargo build --releaseWith Nix
nix run github:linuxmobile/oxicordWhat's Next
- Voice channel support
- Image/media preview in terminal
- Plugin system
- Improved theming
Full Changelog: https://github.com/linuxmobile/oxicord/commits/v0.1.5