June 22, 2026

This Week in Slashwork

Major visual design, quietly started building a real desktop app, and unified five different attachment types. Lots of plumbing that just makes everything after this week faster. Read on for the full rundown.

A sexy line art graphic next to a list of features that shipped: - New design polish -Desktop app upgrades SSO & SCIM provisioning -Smarter @mentions -Fixed voice messages -Tuned notifications -Link reliability fixes -Search overhaul

It's been a loud week around here. The kind where you open the git log and it looks less like a changelog and more like a crime scene, in the best possible way.

We tore the paint off the web app and started over. We quietly began building an actual desktop app. We did a bunch of unglamorous plumbing work that, because we did a great job, you will never see. Let's get into it.

🎨 Product Redesign, Phase 1

Okay, this is the big one. Alex and I have been hard at work for weeks on a ground-up redesign of the product. This week, we shipped the first phase of it. Not a button color here, an icon there, but the whole thing: the left nav rail, the group headers, the button system, the admin panel, the works.

As with any big product overhaul, landing it is just the beginning. We landed the initial change and then spent the rest of the week, and I mean every single day of it, refining and refining and refining. It’s a labor of love and, I have to, looks 100x better than the very very spartan UI we had before. It’s elevated.

🖥️ Sneak Peek: Desktop App

We don't normally tease things this early, but a native desktop app has been quietly taking shape this week thanks to Josh rolling up his sleeves and pushing hard. I'm too excited to sit on it. This isn't a browser tab pretending to be an app. It's a real desktop app that runs on Mac OS and Windows. We also spent real effort on the boring-but-load-bearing stuff up front: auto-update, so you're never stuck running last month's build, and a Windows signing pipeline, so your OS doesn't scream at you for installing it. Nobody claps for a code-signing shim. I'm clapping for it anyway. Nothing to download yet, but consider this your advance notice.

🧵 Chat Groups Now Behave Like Chat Groups

We fixed some long-standing weirdness in how posts are ordered inside chat-style groups, sorting them by creation time instead of an activity-based "sort time" that occasionally made messages arrive out of order. We also laid the groundwork for posts to properly reference the message they're replying to. On its own that sounds like a rounding error. It isn't. It's the difference between a chat that reads top-to-bottom like a conversation and one that reads like a shuffled deck of cards. More visible reply features are coming; this is the foundation they're standing on.

📥 Smarter, Sturdier Imports

If you've brought a team over from another tool, you've felt the pain of an importer that half-works. This week the import pipeline got noticeably more trustworthy: URLs in imported messages now actually render as links instead of dead text, matched groups get a little icon so you can see at a glance what's about to happen before you commit to it, and error messages during import now tell you something useful instead of shrugging at you.

We also moved import input parsing onto a stricter schema, which is a very unglamorous way of saying "imports fail loudly and immediately instead of quietly corrupting your data three steps later." The net result is a much more battle hardened and reliably importer for Slack, WhatsApp, and Google Chat conversations.

🌏 Translation Buffs

Small feature, real impact: our automatic translation now correctly distinguishes Traditional from Simplified Chinese instead of treating "Chinese" as one monolithic bucket. We tuned the underlying translation logic to preserve meaning better across languages generally. If you've ever gotten a translation that was technically words but not actually the sentence someone meant to send, this is for you.

🧱 Attachment Buffs

This is the section where I ask you to care about something you will never directly see, so bear with me. Up until this week, Slashwork had five separate database tables for attachments: one for images, one for videos, one for audio, one for documents, one for link previews. Classic case of the product getting richer and us building what we needed at the time, each time.

But this is also “code by accretion” and leads to gnarly bugs. This is because each attachment type had its own loader, its own edge cases, its own opportunities to be subtly, infuriatingly different from its siblings. This week we finished collapsing all five into a single, unified Attachment pipeline, migrated all the existing data, and deleted the old tables entirely. That last part matters. This wasn't an "add a new system and let the old one linger forever" job, it was a real migration, start to finish, old tables dropped and everything. Why do this at all? Because every new feature that touches attachments (search, previews, whatever we build next) was going to need to be built five times, once per table, forever, if we didn't. Now it gets built once. This is the kind of work that produces zero user-visible change the week it ships and makes every subsequent week faster. We'll take that trade every time.

That's the week. A new coat of paint you're already living in, a desktop app you'll be living in soon, and a pile of infrastructure work you'll never think about again — which, if we did our jobs right, is exactly the point.