This commit integrates all components to create a functional Slack-like interface: **Phase 1: API Fixes** - Fixed ChatView compilation errors (APIs match current codebase) - Proper BodyResponse, ProfilePic, and timeline access patterns **Phase 2: Integration** - ✅ ChannelSidebar integrated into main layout (240px sidebar) - ✅ Channel subscription logic implemented and working - ✅ RelayConfig applied to RelayPool on startup - ✅ Save triggers for channel modifications - Layout: [ChannelSidebar | DesktopSidePanel | Columns] **Key Features Now Working:** 1. Channel sidebar displays and is clickable 2. Channels subscribe to hashtag filters on app start 3. Relay configuration properly applied 4. Channel selection persists to disk 5. ChatView component compiles (ready for Phase 3 wiring) **Changes:** - app.rs: Added ChannelSidebar rendering, action handling, relay application - channels.rs: Added `subscribed` field, proper subscribe_all() logic - chat_view.rs: Fixed all API mismatches (compiles cleanly) **Next Steps (Phase 3):** - Wire ChatView to display selected channel's timeline - Add channel creation/edit dialog - Build thread side panel for Slack-style threading All code compiles successfully with zero errors!
NoteDeck Columns
A TweetDeck-style multi-column interface for Nostr built with Rust and egui.
Overview
NoteDeck Columns is a specialized UI component of the NoteDeck Nostr client that provides a TweetDeck-inspired multi-column layout for browsing Nostr content. It allows users to create customizable "decks" with multiple columns, each showing different types of Nostr content (home timeline, notifications, hashtags, profiles, etc.).
Features
- Multi-column layout: View different Nostr content types side by side
- Customizable decks: Create and customize multiple decks for different use cases
- Column types:
- Universe (global feed)
- Contact lists (follows)
- Profiles
- Notifications
- Hashtags
- Threads
- Search results
- Algorithmic feeds (e.g., last notes per pubkey)
- Interactions: Post, reply, quote, and zap notes
- Media support: View and upload images
- Multiple accounts: Switch between multiple Nostr accounts
Getting Started
NoteDeck Columns is part of the larger NoteDeck ecosystem. To use it:
- Clone the NoteDeck repository
- Build the project with Cargo
- Run NoteDeck and select the Columns interface
See the DEVELOPER.md file for detailed setup instructions.
Architecture
NoteDeck Columns is built using:
- Rust: For performance and type safety
- egui: For the UI rendering
- nostrdb: For Nostr data storage and retrieval
- enostr: For Nostr protocol communication
The codebase is organized around the concept of timelines, views, and decks, with a column-based UI architecture.
Contributing
Contributions are welcome! Please see DEVELOPER.md for information on how to set up your development environment and contribute to the project.
License
NoteDeck Columns is licensed under the GPL v3.