A Quiet Terminal is a Better Terminal
Retiring custom notification sounds and downloadable sound packs.
Hey folks,
A small but impactful change — the type that I like.
I’ve effectively removed the custom notification sounds and the really fun sound packs that I had originally designed.
Yeah, I know. That probably sounds like a small change. Pun intended. But, that stuff was never headline feature. It is not a big new surface. It is not the kind of thing that gets a splashy screenshot.
But it is one of those product decisions I care about a lot because it says something about what YEN is trying to become.
I want YEN to feel powerful without feeling busy. I want the terminal to pick up the things that help me move faster, and I want it to drop the things that mostly create maintenance weight, settings weight, release weight, and cognitive weight.
Custom audio notifications started as a fun idea. I liked the personality of it. A terminal can be serious and still have taste. It can have little moments of delight. That is why I shipped the original sound work in **Making Your Terminal Sound Like Fun**.
Over time, though, the honest version became clearer. The system was bigger than the value it created.
There were custom imports. There were official downloadable sound packs. There were bundled sound identifiers. There was a manifest. There were checksums. There were signatures. There was release-pipeline logic to package, upload, validate, and prune the audio artifacts. There was Settings UI for downloading and removing packs. There was public documentation that had to explain all of it.
And for what?
Most people need notification sounds to do one job: tell them that something happened. Well, macOS already has system sounds for that. They are familiar, local, accessible, and boring in exactly the right way. If YEN can let me choose None, choose a system sound, control the volume, decide whether banners appear, and decide what happens while the app is focused, then the product need is covered.
Everything beyond that has to earn its cost.
The sound packs stopped earning it. So, a few versions ago, I killed it. Now, notification sounds are just system-only. The current model is simple:
None means silence.
System sounds come from macOS.
General and Build notification streams keep their own routing.
Each stream still has delivery mode, volume, and focused-window behavior.
Old custom or bundled sound selections load safely and fall back to silence.
The old audio files are not deleted from anyone’s Mac. YEN just stops scanning them, surfacing them, or depending on them. That part matters.
I do not want cleanup work to punish existing users. If someone has an old settings export or old app-support files, the next version should load cleanly. The app should not crash. The Settings panel should not show broken rows. The release pipeline should not look for artifacts that no longer exist.
Retirement should be boring. Or, at least in the case of good software.
Ok, So, Why? The Real Reason…
The real reason is not disk space. The real reason is product clarity.
Every feature creates a shadow. The visible part is the button, picker, or setting. The shadow is everything behind it: validation, tests, docs, release automation, support burden, stale copy, edge cases, and the quiet fear that a rarely used path will break during a release.
It’s about focus.
When a feature is central, that shadow is worth it. When a feature is peripheral, the shadow gets expensive.
YEN has already gone through this kind of pruning before. Chat, mail, and calendar were removed from the active product, but I kept the historical engineering packets so they can be understood or restored later without leaving compatibility code in the shipped app.
That is the pattern I want for a great Terminal:
Remove the runtime surface when it no longer belongs
Preserve enough history to understand the decision
Keep old user data safe
Keep the release pipeline honest
Keep public documentation aligned with what actually ships
That is different from pretending the feature never existed. It did exist. It taught me things. Some of the notification routing work still matters. The focused-window behavior still matters. Per-service delivery still matters. The Settings shape still matters.
The custom sound library just does not need to be part of the product anymore. Shipping as a solo developer means saying no even after saying yes once. It’s hard because I want to build everything.
But that just doesn’t make sense. Sometimes the best feature work is subtraction.
And in this case, we all just get a better product.
— 8





