Engineering Blog

SyncWatcher Devlog: Polishing for Reliability

The core features were technically “done,” but the UX was rough enough to scare off any paying customer. I spent the day smoothing out those edges. I need this thing to be solid, not just functional.

Here’s what I tackled today:

  • Fixed macOS Volume Detection: The disk space calculation was off. It’s a minor detail, but if a user sees wrong numbers, they lose trust. I swapped out the API calls for something more reliable.
  • App Lifecycle & Menu Bar: Refined how it behaves when you close the window. It now minimizes to the system tray (menu bar) and hides from the Dock. Standard behavior for background utilities. Personally, I hate a cluttered menu bar, so I might add an option to hide it completely later. But for now, visibility is safer.
  • Log Hygiene: Separated “Sync Task” logs (file operations) from “Activity” logs (system events). When—not if—something breaks in production, I need clear logs to diagnose it quickly without wading through noise.
  • Tests & Documentation Cleanup: Big changes bring regression risks, so I beefed up the Rust and frontend tests. Also did some spring cleaning on my Architecture Decision Records (ADRs). I trashed the outdated phase documents. If it’s not a relevant decision, it’s just distraction.

Using AI for this workflow has been a lesson in itself. It’s not magic; it’s a constant process of refining tiny details to keep the AI on track.

I’m getting close. It’s almost at the stage where I wouldn’t be embarrassed to let a stranger install it.

One thing keeps bothering me though: the “Delete in Source = Delete in Target” option. It feels too dangerous for a background process. I’m thinking of changing it to a concise “Trash” or “Confirm” model. One accidental data wipe could kill this project before it starts.

Next up: Auto-updates and bug reporting. The boring, unsexy plumbing that makes a product viable.


Note: I’m a solo developer based in Korea. To share my journey with a wider audience, I used AI to help translate my thoughts into English. If any phrasing feels a bit “too AI” or unnatural, please bear with me.

Join the Investigation

Get the latest updates on my projects and indie hacking journey directly in your inbox.

No spam. Unsubscribe anytime.