Zmina
Get Zmina

← Blog

How Zmina started

Zmina started with a mistake. I pasted something I shouldn’t have into a public issue.

From time to time I have to file issues, mostly on GitHub. A good issue includes a log. The problem is that real logs often contain information that shouldn’t be public. My username appears in every file path, the occasional IP address… For a long time, I would clean that up by hand, using a few find-and-replace actions before submitting.

One day, I missed some details. I pasted a log into an issue and later noticed that some information I’d rather keep private was included. It wasn’t anything dramatic, but it was public, and I had shared it myself. I edited it, but of course, the internet doesn’t have an undo button.

So, I did what any developer would do: I created a regular expression. Then I made a few more: one to remove my username from file paths, another to hide IP addresses, and one for emails that kept appearing. The list was growing fast. I saved these and ran them on logs before pasting. It was a rough solution and still involved manual effort, but it worked.

Then a second annoyance emerged. Pasting code into Discord is messy unless you remember to wrap it in a codeblock first (```). And it’s nice if you also put the language name to have a good looking code block (```typescript). Half the time when I pasted it, I watched it get distorted, deleted (or edited) it, added the backticks with language name, and pasted again. So, I created another pattern: match the entire code and wrap it in backticks.

At some point, I sat there with a collection of clipboard regexes. The patterns weren’t the main issue. The point was that the right thing to do with whatever I’d copied depended on where I was about to paste it. A log pasted into a public issue and a code snippet pasted into a chat serve different purposes, and I was sorting them out manually every time. That’s when the idea came to me:

An app that recognizes what’s on the clipboard and where it’s going, then offers the correct option.

I prototyped it in TypeScript with Electron because that’s my go-to when I want to develop an idea quickly. It worked, and the concept held up well. Over time, Electron seemed like the wrong choice. A clipboard tool should run quietly in the background all day. It needs to be small and unobtrusive, without consuming memory while idle. That’s not really what Electron is for.

So, I rebuilt it in Rust using Tauri. It took more effort upfront, and I doubted my decision a couple of times, but it was the right move. The app is compact (v1.0 is ~11MB for Apple Silicon and ~20MB universal build), it starts quickly, and it stays out of the way until you need it.

That mistake also led to another key point, which shaped the entire project. A tool that can see everything you copy must be trustworthy. So, Zmina operates offline. There’s no account, no tracking, and nothing you copy leaves your machine.

That’s how it started. A mistake, a few regexes, and understanding that the paste itself was the main feature.

If you want to follow along as it ships, the changelog has an RSS feed, and there’s no email to hand over.