Back to blog
BlogUpdatesEngineeringbug fixes

FlowDesk v1.7.1: Global Activity Tracking & Critical Bug Fixes

KD
Kharis D M (Founder FlowDesk)
6 min read
5 views
FlowDesk v1.7.1: Global Activity Tracking & Critical Bug Fixes

Welcome to FlowDesk v1.7.1! Following the massive architectural shift in v1.7.0—which introduced our revolutionary Local-First Collaboration model over LAN—we have spent the last few weeks listening to your feedback, monitoring stability, and diving deep into the codebase.

While v1.7.0 laid the groundwork for seamless, offline-first teamwork, v1.7.1 is all about refinement, stability, and situational awareness. We didn’t just want to fix bugs; we wanted to fundamentally improve how you and your team experience the application.

In this epic update, we are thrilled to introduce a highly requested feature: Global Activity Tracking with Real-Time Toasts, alongside critical fixes that ensure FlowDesk runs smoother and consumes less memory than ever before.

Let’s dive into exactly what’s new, why we built it, and how it improves your daily workflow.


The Headliner: Global Activity Tracking & Real-Time Toasts

When collaborating in a Local Workspace over a local area network (LAN), the biggest challenge is maintaining a shared sense of context. Before v1.7.1, if a team member created a new project or deleted a task, you wouldn't necessarily know it happened unless you manually refreshed your view or navigated to that specific page.

Collaboration should feel alive. It should feel like you are sitting in the same room, working on the same desk. To achieve this, we engineered a brand new Global Activity Tracking System.

How We Built It

Instead of placing logging logic inside the User Interface or the ViewModels (which can be messy and prone to missing events), we implemented an interception layer directly inside our Data Access Layer (LocalSqliteDataSource.cs).

Now, every single Create, Update, and Delete (CUD) operation—whether it’s for a Project, a Task, a Document, a File, or even a Tag—automatically triggers an internal LogInternalActivityAsync routine before the data is committed to the SQLite database.

The Real-Time Magic

Logging data is only half the battle; surfacing it to the user is where the magic happens. When an activity is logged, the FlowDesk Host (the machine running the Local Workspace) instantly captures this event and broadcasts a SignalR payload ("ReceiveActivity") to all connected client machines on the network.

Smart Toast Notifications

We knew that broadcasting every single action could quickly turn into a nightmare of notification spam. To prevent this, we implemented a smart filtering system on the client side:

  1. Identity Verification: When a toast notification payload arrives, your FlowDesk client checks the ActorName (the person who performed the action).
  2. Self-Silencing: If the ActorName matches your own username, the system stays silent. You already know what you just did; you don't need a toast telling you about it!
  3. Awareness: If someone else performs the action, a sleek, non-intrusive Toast Notification slides into your screen. For example: "Kharis created a new project (Project)." or "Budi updated a task (Task)."

This creates a beautiful, ambient awareness of your team's progress without disrupting your focus.


Deep Dive: Critical Bug Fixes & Stability

Behind the scenes, we’ve tackled some of the most persistent architectural bugs that affected long-term usage and user experience. Here is a transparent look at what we fixed and how we did it.

1. Slaying the Memory Leaks

The Problem: During extensive testing, we noticed that FlowDesk’s RAM usage would slowly creep up over time, especially for users who frequently switched between Private and Local Workspaces. The Cause: The culprit was our MainViewModel. When a user left a Local Workspace, the application successfully disconnected from the SignalR server, but the event listeners (such as OnReceiveTaskUpdate and OnLocalApiTaskCommentCreated) were never detached. This caused "zombie" ViewModels to remain trapped in memory, as the garbage collector could not dispose of them due to the active event subscriptions. The Fix: We implemented a rigorous ClearAllEvents() cleanup cycle. Now, whenever you leave a workspace or the local server is shut down, every single static event and SignalR listener is explicitly set to null and detached. The result? A remarkably lighter application that reclaims memory instantly when changing environments.

2. The "Ghost Menu" Workspace Upgrade Fix

The Problem: FlowDesk is designed to be distraction-free. When you are in a Private Workspace (solo mode), we intentionally hide collaboration-specific sidebar menus (like the Member Management or Network settings) to keep your interface clean. However, if you clicked "Upgrade to Local Workspace," the server would start, but those hidden menus would stubbornly remain hidden until you restarted the entire app. The Fix: We completely re-wired the state management during the upgrade process. We introduced a reactive trigger inside the transition logic. Now, the moment your workspace successfully upgrades to Local mode, the sidebar dynamically re-renders and instantly unlocks all collaboration menus. No app restarts required.

3. Graceful Async Exception Handling

The Problem: Desktop applications rely heavily on asynchronous operations. In previous versions, if you attempted to delete a project or a document while a background data-load was still in progress, the resulting race condition could throw an unhandled System.Exception, causing the app to silently fail or crash. The Fix: We went through DocsViewModel, ProjectsViewModel, and RequestsViewModel and wrapped critical database transactions in robust try-catch blocks. More importantly, instead of failing silently, these exceptions are now routed through our WeakReferenceMessenger and presented to you as a friendly error toast (e.g., "Error deleting request: Database is locked"). This ensures you always know what’s happening without the app crashing.

4. UI Polish & Omnibar Isolation

We believe that software should not only work well but look and feel premium. In v1.7.1, we focused on several UI touch-ups:

  • Settings Header: Fixed an embarrassing typo where the word "Settings" appeared twice consecutively in the Settings view header.
  • Version Cleanliness: Cleaned up the app version string in the "About" section to properly display 1.7.1 instead of an awkward trailing zero (1.7.1.0).
  • Omnibar Isolation: The Global Search Omnibar (Ctrl+K) is one of our most loved features. However, we found that its internal state could sometimes bleed into the main dashboard view. We improved its isolation, ensuring that invoking the Omnibar operates in a completely sandboxed UI layer.

Looking Ahead

FlowDesk v1.7.1 represents a massive leap in stability and user experience. With Global Activity Tracking, you can finally feel the heartbeat of your team's workflow, and with our aggressive memory management fixes, the app will run smoothly for days on end without a hiccup.

But we are not stopping here. As we look towards v1.8 and eventually v2.0 (Server Workspace), the architectural cleanup we did in this update paves the way for much larger features, including advanced role-based permissions and cloud synchronization.

How to Update

FlowDesk v1.7.1 is available right now for macOS, Windows, and Linux. Because FlowDesk is local-first, updating is entirely manual and safe for your data. Simply head over to our Website Download Page FlowDesk, download the latest binary for your operating system (.dmg for Mac, .exe for Windows, or .tar.gz for Linux), and replace your old executable.

Your FlowDeskData folder will remain completely untouched.

Thank you for your continued support, bug reports, and feature requests. Let’s keep building the ultimate offline productivity haven!

Happy collaborating!
— The FlowDesk Team

Share this article: