๐น RoseWire TUI Client Progress Report

Hello RoseWire community! As part of our ongoing mission to make decentralized file sharing and chat accessible everywhere, weโre thrilled to share progress on the RoseWire TUI clientโour terminal-based interface for connecting to modern RoseWire servers. ๐๐ฅ๏ธ
โจ What is the TUI Client?
The RoseWire TUI client is a lightweight, cross-platform terminal app built with Go, Bubble Tea, and Lip Gloss. It lets you:
- ๐๏ธ Manage identities and keys
- ๐ Connect securely via SSH
- ๐ฌ Chat in real time
- ๐ Search for files and users
- ๐ See whoโs online across the federated network
All from a beautiful, responsive text-based UIโno mouse required!
๐ Recent Milestones
1. Robust Identity & Config Management
- Profile Manager: Create, store, and select identities (nicknames + SSH keys) with ease.
- Persistent Server Config: Your last-used server is remembered for quick reconnections.
2. Seamless SSH Integration
- Secure Logins: Automatically test your credentials before entering the network.
- Automatic Reconnection: If disconnected, the client retries gracefully with exponential backoff and friendly status updates.
3. Dynamic Multi-Panel UI
Switch between major views using Tab/Shift+Tab:
- Chat Panel: Live group chat with system and user broadcasts.
- Search Panel: Find files or users instantly; results grouped and sorted for clarity.
- Network Panel: Visualize the networkโsee users, relays, and transfer stats at a glance.
All panels resize dynamically to fit your terminal window, with thoughtful keyboard navigation throughout. ๐น
4. Modern UX in the Terminal
- Bubble Tea & Lip Gloss: Crisp borders, color-coded messages, and styled buttons bring modern UI polish to the CLI.
- Spinners, Status Bars: Loading states and errors are clearly communicated.
- Focused/Blurred States: Inputs and selections are visually distinct, reducing mistakes.
5. Extensible Architecture
- Command-Based Messaging: Panels communicate via structured message types, making new features easy to add.
- Async Operations: Profile loading, key generation, and network requests are all non-blocking for snappy performance.
๐ ๏ธ Under the Hood
Hereโs a peek at how it all fits together:
- Modular Codebase: Clean separation of config, profile, SSH, and TUI logic.
- Panels as Models: Each view (chat, search, network, etc.) is its own Bubble Tea model.
- Network Awareness: The client parses and displays federated user lists, relay counts, and live transfer activity.
๐ก Whatโs Next?
- File Sharing & Transfers: Upload, download, and manage files directly from the TUI.
- Library & Transfer Panels: Coming soon for browsing your own shared files and monitoring transfer progress.
- Improved Theming: Customizable styles for accessibility and personal taste.
- Federation Insights: See not just whoโs online, but which servers theyโre connected to.
๐ How to Try It
If youโre comfortable with Go and the command line, clone the repo and run the TUI client today!
(Instructions and binaries coming soonโwatch this space.)
๐ Thanks for Your Feedback!
This project is driven by community ideas and real-world needs.
If you have suggestions, want to test, or just want to say hi, join us on RoseWire or open an issue!
Happy Sharing,
โ The RoseWire Team ๐น
RoseWire Release 1.0.5
Hello RoseWire community! ๐น
Weโve made a bunch of exciting improvements between versions 1.0.3 and 1.0.5. Hereโs a friendly breakdown of whatโs new and improved.
๐ฅ๏ธ Client (Flutter App): Smoother, Smarter, Friendlier!
๐ Reliability Boosts
- Library Path Persistence: Your shared library folder now stays setโeven after reconnects! No more resetting after a dropped connection.
- Automatic Refresh: Your library files update every minute. No manual refreshes needed. ๐๐
๐จ UI Upgrades
- Open Library Folder: Instantly open your shared folder from the appโjust tap the new button! ๐๏ธโจ
- Smarter Search: Long-press or right-click search results to see files from a specific user. Great for hunting down those elusive files! ๐๐ค
- Transfer Retry: Failed downloads now show a โRetryโ button. No more frustration when a transfer hiccups! ๐๐ค
- Real Version Info: The appโs status bar now shows the actual client versionโno guesswork.
๐ ๏ธ Under the Hood
- Improved Change Detection: The app is smarter about detecting file changes, so you always see the latest.
- Better Error Handling: Clearer messages guide you when something goes wrong.
- Dependency Added:
url_launcher
now powers folder opening.
๐ง Server (Go): Federation Power-Up! ๐ฆ
๐ค Federation & Gossip Logic
- Improved Gossip: Servers now contact multiple peers per cycle, shuffling connections for a healthier, more robust federated network. ๐๐
- Opportunistic Federation: New trusted peers are auto-added as soon as theyโre discovered, making networks grow faster. ๐ฑ๐ค
๐ Search & Stats Supercharged
- Deduplicated Search Results: No more duplicate files when searching across federated serversโresults are smarter and cleaner.
- Unified User Search: Direct username searches and keyword searches are now combined. Just enter a user or a keyword!
- User Sorting: Local users are shown first, with federated users sorted alphabetically.
- Status Pages: Both API and web status show federated users, making network health more visible.
๐ Bugfixes & Refactoring
- Improved error handling, peer discovery, config management.
- Cleaner code, better comments, and more robust federation logic.
๐ What Do These Changes Mean for You?
- More Reliable File Sharing: Less manual work, more automation.
- Better Federation: Networks grow organically and stay healthy.
- Friendlier UX: Smarter search, easy retry, clearer feedback.
- Future-Proofing: New dependencies set the stage for upcoming features.
๐ฆ Ready to Try It?
Update to the latest version of RoseWire and tell us what you think!
Questions or feedback? Drop by our issues page or chat with us on the RoseWire network! ๐๐ฌ
Happy sharing,
โ The RoseWire Team ๐น
RoseWire v1.0.3
Trust Your Transfers with File Integrity Checks ๐
We’re thrilled to announce the release of RoseWire v1.0.3, an update focused squarely on reliability, stability, and polish. This release introduces a critical feature to ensure your files arrive exactly as they were sent, alongside some welcome visual improvements and important bug fixes.
Let’s dive in!
๐ก๏ธ Trust Every Byte: Introducing SHA256 Integrity Checks
Have you ever downloaded a large fileโan album, a video, or an archiveโonly to find it’s corrupted and won’t open? A single flipped bit during a transfer can render a file useless. With v1.0.3, this is a problem of the past.
Weโve integrated SHA256 hash verification into the core of RoseWire’s file transfer process.
So, what does that mean for you?
Think of a hash as a unique, unforgeable digital fingerprint for a file. If even a single byte of the file is altered, the fingerprint changes completely.
Hereโs how it works now:
- Fingerprint on Upload: When you share files from your library, the RoseWire client now generates a unique SHA256 hash (the fingerprint) for each one.
- Verification on Download: When a friend starts downloading your file, the server tells their client what the original fingerprint should be.
- Automatic Check: Once the download is complete, their client generates a new fingerprint from the received file and compares it to the original.
If the fingerprints match, the file is perfect. If they don’t, RoseWire automatically deletes the corrupted file and marks the transfer as “Failed” with an error message. This protects you from saving and attempting to use broken files, saving you time and frustration.
๐จ A Fresh Coat of Paint: Theme Improvements
We believe your tools should look and feel good to use. This update brings a few nice quality-of-life improvements to the client’s theming engine:
- Consistent Colors: The secondary accent color now always matches your primary choice, creating a more unified and polished look across the app.
- Better Visibility: Selected icons in the navigation rail now use a high-contrast color (white or black), ensuring they are always easy to see, even if you choose a very light accent color like white.
Happy Sharing!
๐ RoseWire v1.0.2
Enhanced Moderation and More!
We’re thrilled to announce the release of RoseWire v1.0.2, a major update that delivers powerful new moderation tools, essential client fixes, and a streamlined first-time setup for server administrators. Whether you run a bustling federated community or are just spinning up your first instance, this release makes managing your RoseWire server easier, safer, and more intuitive.
๐ข First-Time Setup: Security & Simplicity
One of the standout improvements in v1.0.2 is the brand-new onboarding process for server hosts. Setting up your RoseWire instance is now clearer and more secure:
- Step 1: Create a Web Admin Password
- When you start your server for the first time, you’ll be prompted in your console to create a secure password for the SYSTEM user. This password unlocks the web admin panel, giving you full control over your instance.
- Step 2: Claim Your SYSTEM Account In-App
- After your web password is set, the server continues running. To gain in-app admin privileges (like issuing moderation commands in chat), simply log in from any RoseWire client (desktop or mobile) using the username
SYSTEM
. The first public key used to log in as SYSTEM will be permanently registered as your server’s administrator.
- After your web password is set, the server continues running. To gain in-app admin privileges (like issuing moderation commands in chat), simply log in from any RoseWire client (desktop or mobile) using the username
This two-step process ensures your instance is both secure and easy to manage from day one.
โจ New Features: Local Blocking for Federated Users
Federated communities are dynamicโbut sometimes require strong moderation. RoseWire v1.0.2 introduces local blocking for federated users:
- Soft Ban with
!ban @user@domain.com
- As SYSTEM, you can now locally block users from other federated instances. This command adds the user to your blocklistโno need to rely on remote admins.
- Content Hiding
- Blocked federated users will have all future chat messages and file-sharing updates silently ignored by your server. Your local community stays clean and focused.
- Immediate File Purge
- Any files shared by the blocked user are instantly removed from your local search index, making their content invisible to your users.
These new tools help you manage your instance’s safety and culture, even in a federated environment.
๐ Bug Fixes
- Desktop Federated Search Restored
- Resolved a critical timing bug where the desktop client failed to fetch initial federated file listings. Now, the desktop app populates with all federated search results on startup, just like the mobile app.
- Unified Ban List in Admin Panel
- Fixed a UI issue where users banned via
!ban
didnโt appear in the admin web panel. Both local and federated bans now show up seamlessly.
- Fixed a UI issue where users banned via
โ๏ธ Interface & Usability Improvements
- Consistent Chat UI
- The desktop chat panel now always displays the full federated username (
@user@domain.com
) for every participant, providing clear context and matching the mobile experience.
- The desktop chat panel now always displays the full federated username (
- Clearer Admin Commands
- The
!kick
and!ban
commands now provide better feedback. If you try to moderate a remote user, RoseWire will let you know that only admins on that userโs home instance can take action.
- The
- Reliable Client Identity
- Upon connection, the server confirms each user’s full federated name. Clients use this source of truth to identify their own messages, ironing out potential UI inconsistencies.
๐ Ready to Try RoseWire v1.0.2?
Whether you’re upgrading an existing RoseWire instance or starting fresh, v1.0.2 brings vital improvements for admins and users alike.
Enjoy enhanced moderation, robust federated search, and a setup process that puts you in control from the start.
Download RoseWire v1.0.2 today and experience the difference!
More Resilient Than Ever โจ
Hey RoseWire community!
We’re incredibly excited to roll out a new client update focused entirely on improving your day-to-day experience. We’ve been listening to your feedback, and this release tackles some major quality-of-life improvements that make the app smarter, more intuitive, and incredibly resilient to real-world network hiccups.
Let’s dive into what’s new!
See Your Files, Instantly ๐
We’ve all been there: you search for a file and get a long list of results, but every single one has the same generic music note icon. ๐ต Was that file an album, a PDF, or a ZIP archive? You had to guess based on the filename alone.
Well, not anymore!
Our new update introduces dynamic file type icons! Now, the icon next to each file in your search results accurately reflects what it is.
- Audio Files (.mp3, .flac): Still get the classic music note! ๐ต
- Documents (.pdf, .docx): Show up as proper documents! ๐
- Archives (.zip, .rar): Are now clearly identifiable archives! ๐ฆ
- Videos & Images (.mp4, .jpg): Have their own distinct icons! ๐ฌ
This is a small change that makes a huge difference. You can now spot the exact file you’re looking for in a fraction of the time. It’s a smarter search for a smarter you.
Never Lose Your Connection Again ๐
This one is a game-changer. What happens when you close your laptop, walk to another room, and open it back up? Or when your Wi-Fi momentarily drops? Previously, the app would lose connection and just… stop. You’d have to manually restart it. It was frustrating, and we knew we could do better.
Introducing Automatic Re-connection & a Dynamic Status Bar!
RoseWire is now intelligent enough to know when it has lost its connection to the network. More importantly, it knows how to fix it.
Hereโs how it works:
- Instant Detection ๐ก: The moment your device goes offline, the status bar at the bottom of the app will immediately change from green to red, letting you know you’re Offline. There’s no more guesswork.
- Automatic Reconnecting ๐ : The app will then instantly start trying to reconnect in the background. The status bar will turn orange and display a “Reconnecting…” message so you know it’s working on it.
- Seamless Return ๐ข: As soon as your network is available again, RoseWire will re-establish the connection, re-share your library, and the status bar will turn green. You don’t have to do a thing.
This means you can move between networks, come back from your computer being asleep, or survive a brief network outage without ever having to touch the app. It just works. It’s the seamless, resilient experience you deserve.
What This Means for You
These aren’t just minor tweaks; they’re fundamental improvements to how RoseWire feels. The app is now more intuitive, provides clearer feedback, and is robust enough to handle the realities of everyday network conditions.
Weโre committed to making RoseWire the best peer-to-peer file-sharing experience out there, and this is another big step on that journey.
Update your client today to get these fantastic new features!
Happy sharing, The RoseWire Team ๐
๐ข A New Server Joins the Fold! ๐
Hey RoseWire Community! ๐
We have some fantastic news on the decentralization front! I’m thrilled to announce that a new RoseWire instance is officially online and federating with the network over at sarahsforge.dev! ๐ฅณ
For those of you following the project, you know our core mission is to build a truly decentralized and federated network. Instead of relying on a single, central server that could be a single point of failure, RoseWire is built on a web of interconnected, independent servers that communicate with each other. ๐ธ๏ธ
Why This Matters
This isn’t just about adding more capacity; it’s about making the entire network stronger, more resilient, and genuinely distributed. Hereโs what the new sarahsforge.dev
instance brings to the table:
- Enhanced Resilience: With multiple servers in the federation, the network is no longer dependent on a single machine. If one instance goes down for maintenance or experiences issues, the rest of the network continues to operate, federating chats and file lists seamlessly. ๐ช
- Improved Bootstrapping: The new server acts as another major entry point for the network. New instances can now peer with
sarahsforge.dev
to discover other nodes and quickly integrate into the federation. ๐ฑ - True Decentralization: Every new, independent instance is a massive step towards our goal. A healthy federated network is one where control and data are distributed, ensuring longevity and censorship resistance. ๐
๐ RoseWire Just Got a Major Security Boost
S2S Communication Now Encrypted with TLS! ๐ก๏ธ
Hey RoseWire community! ๐
We’re thrilled to announce a significant upgrade that makes our federated network even more secure and robust: all Server-to-Server (S2S) communication on RoseWire now exclusively uses TLS (Transport Layer Security)! ๐
What Does This Mean for You?
While you might not see a drastic change in your daily RoseWire experience, this under-the-hood improvement is crucial for the privacy and integrity of your data. Think of it as building a stronger, invisible fortress around all the conversations and file transfers happening between RoseWire instances. ๐ฐ
Here’s the breakdown of what TLS for S2S brings:
- ๐ Enhanced Privacy: All data exchanged between RoseWire servers โ like shared posts, file transfer initiation, and peer discovery โ is now encrypted end-to-end. This means eavesdroppers can’t snoop on the content as it travels across the internet. Your conversations stay private, as they should be! ๐คซ
- ๐ค Increased Trust & Authentication: TLS doesn’t just encrypt; it also verifies identities. Each RoseWire server now presents a trusted certificate (typically from a recognized authority like Let’s Encrypt ๐ฑ) to other servers. This ensures that when your server communicates with another, it’s not leaking data in plain text. No more “man-in-the-middle” attacks! ๐ต๏ธโโ๏ธโก๏ธโ
- ๐ช Data Integrity: Beyond privacy and authentication, TLS also guarantees that the data hasn’t been tampered with during transit. If even a single bit of information is altered, the receiving server will detect it and reject the communication. Your data arrives exactly as it was sent! โ
What’s Changed Under the Hood?
For the technically curious, we’ve transitioned our S2S endpoints to enforce HTTPS. This involved a few key changes:
- No More Plain HTTP for S2S: All peer-to-peer communication, including fetching public keys (
/actor
), inbox messages (/api/s2s/inbox
), and peer lists (/api/s2s/peers
), now requires a secure HTTPS connection. - Certificate Validation: Servers now perform strict validation of TLS certificates. If a peer server presents an untrusted (e.g., self-signed) or invalid certificate, the connection is immediately rejected. This is why you might have seen some
tls: bad certificate
errors during the upgrade process if your servers weren’t all on trusted certificates. ๐ - Flexible Certificate Management: We’ve also updated the server configuration to allow administrators to provide paths to their own TLS certificate and private key files. This means instances can use certificates from various sources, including manually obtained Let’s Encrypt certificates (via DNS challenges, for example), giving admins more control. ๐๐
Our Commitment to Security ๐
This TLS upgrade is part of our ongoing commitment to making RoseWire a secure, private, and resilient platform for federated communication. We believe that strong encryption is not an option, but a fundamental requirement for any modern online service.
We’re excited for you to experience a more secure RoseWire. As always, if you have any questions or feedback, feel free to reach out!
Stay secure, The RoseWire Team ๐น
Smarter Search, Stable Transfers & Version Sync!
Hey RoseWire community! ๐ฅณ
We’ve just rolled out a significant update packed with new features and a crucial bug fix to make your file-sharing experience smoother and more powerful than ever. Your feedback has been invaluable in shaping these improvements, and we’re excited to share what’s new. Let’s dive in!
๐ Find Exactly What You’re Looking For: User-Specific Search
Previously, searching the RoseWire network was limited to keywords. While great for discovery, it wasn’t ideal when you wanted to browse files from a specific person. Not anymore!
We’ve supercharged the search functionality with two key enhancements:
- Search by Username: You can now type a user’s full federated name (e.g.,
@rose@rosewire.rosevines.network
) directly into the search bar. RoseWire will return a complete list of all the files that user is currently sharing. It’s the perfect way to find that file a friend told you about! - Cleaner Keyword Results: We’ve tweaked the general search so that it no longer shows your own files in the results. This de-clutters your search view and helps you focus on discovering new files from others on the network.
โ Squashing a Pesky Bug: The Fake 100% Download
We heard your reports about a frustrating and confusing bug: sometimes, when you tried to download a file from a user who had just gone offline, the transfer would instantly “complete” at 100% but result in an empty, unusable file. ๐
That bug is now fixed!
We’ve overhauled the transfer initiation logic. Here’s how it works now:
- Before a download begins, the server first confirms that the uploading user is online and ready to send the file.
- If the uploader is offline, your client will now receive an immediate and clear “User is offline” error.
- The
transfer_start
message is only sent after a successful connection is confirmed, completely eliminating the “fake success” scenario.
This change makes file transfers far more reliable and predictable. No more guessing if your download actually worked!
๐ Keeping the Network in Sync: Server Version Checking
In a federated network, it’s possible for different servers to be running different versions of the software. To help everyone stay up-to-date and ensure all features work correctly, we’ve introduced a simple and transparent versioning system.
- For Users: When you connect to a RoseWire server, your client will now check its version. If the server is running an older version than your client expects, a warning banner will appear in the app. This lets you know that some new features might not be available.
- For Server Admins: The server now has its version hardcoded directly in the
main.go
file (we’re on v1.0.0!). Please update your instance to the latest version from our repository to ensure your users get the best experience and don’t see the warning message.
This feature promotes a healthier, more consistent network for everyone.
This update is all about making RoseWire smarter, more stable, and more transparent. Make sure you’ve updated your client to take advantage of these new features.
As always, thank you for being part of the community. Your feedback and bug reports are what help us move forward.
Happy sharing! โ The RoseWire Team
Accountability is Important
๐ก๏ธ Which is why we give you the ability to control how your instance is used.

๐ Introducing the RoseWire Admin Panel!
Hey RoseWire operators and fans! ๐ We’ve just rolled out a massive update that puts you firmly in the driver’s seat of your instance. Running a server is a big responsibility, and we believe you should have the best tools to manage your community and keep things running smoothly.
This latest commit introduces a powerful new Admin Dashboard, giving you the ultimate control over user access, content, and federation. Let’s dive into what’s new!
๐ก๏ธ Your New Command Center: The Admin Dashboard
First things first, security is key! The very first time you launch your updated RoseWire server, you’ll be prompted to create a secure password right in the console. ๐ Once that’s set, you can log in to your brand-new web dashboard at /admin
. This is your one-stop shop for all the new moderation tools.
๐ซ User Management Made Easy
Got a user causing trouble? No problem. The new dashboard makes it simple to manage your user base.
- Ban Hammer – Ready! โ๏ธ You can now ban local users by their nickname. Once banned, they won’t be able to log in via SSH. If they’re already online when you bring down the hammer, they’ll be disconnected immediately. Peace and quiet restored!
๐ค Control Your Connections: Peer Federation Control
RoseWire is all about connecting communities, but you should always be in control of who you connect with.
- Block Unwanted Peers! ๐ช Don’t want to federate with a specific instance? Just add it to your blocklist. This will stop all server-to-server communication, including chat federation, file searches, and network gossip. You curate your own corner of the fediverse.
๐ Fine-Grained File Control
Sharing is caring, but some files are better left unshared. To keep your instance safe and on-topic, we’ve introduced filetype blocking.
- Block Risky Filetypes! ์ํ You can now create a custom blocklist of file extensions (like
.exe
,.zip
, or anything you choose). The server will then prevent anyone from sharing or downloading files with those extensions. Itโs a simple but powerful way to protect your users and your server.
We’re incredibly excited to get these tools into your hands. This update is all about empowering instance administrators and making RoseWire a safer, more customizable platform for everyone.
Check out the full details in the commit on GitHub!
Happy hosting! โจ
Welcome to RoseWire!
A New Branch of Communication
In a world where our digital conversations and shared files are often held in centralized silos, we believe there’s a better wayโa way that puts privacy, security, and community control back where they belong. Today, we’re excited to introduce you to RoseWire, the application that connects you to the Rosevines network.
What is RoseWire?
RoseWire is a modern, secure application for chat and file-sharing. It’s the software you install on your computer or phone. At its core, RoseWire is designed to be simple and intuitive, but its true power lies in the network it connects to. Using the robust security of SSH for all communication with your home server, RoseWire ensures that your initial connection is always encrypted and authenticated.
What is the Rosevines Network?
The Rosevines network is the backbone of our project. It’s not a single place or a central server owned by one company. Instead, it’s a federated network of interconnected servers, or “instances,” that all speak the same language. Think of it like emailโyou can have a Gmail account and send a message to someone with a Yahoo account, and it just works.
In the same way, the Rosevines network allows a user on one instance to seamlessly chat and share files with users on any other instance. Each server in the network is a “vine,” and together they form the interconnected Rosevines.
Privacy First: The Trusted Proxy Model
Our core commitment is to user privacy. In many peer-to-peer systems, downloading a file means exposing your personal IP address directly to another user. We believe this is an unacceptable compromise.
RoseWire solves this with our Trusted Proxy Model. When you download a file from another user, the data is relayed through your respective home servers. The data path looks like this:
Uploader's Client -> Uploader's Server -> Your Server -> Your Client
The result is simple but powerful: no user’s IP address is ever directly exposed to another user. This is a fundamental design choice that sets the Rosevines network apart.
A Network That Grows Itself
To ensure the network remains truly decentralized, we’ve implemented a gossip protocol. Instead of relying on a central directory, servers automatically discover each other by asking their peers, “Who else do you know?” This allows the Rosevines network to grow organically and resiliently, without a single point of failure.
Join Us
RoseWire and the Rosevines network are more than just an app; they are a statement. A statement that we can build communication tools that are both powerful and private. We invite you to download the RoseWire client, connect to an instance, and help us grow this new branch of communication.