Introducing Screener
Hey! Few weeks ago I wrote my thoughts and early mockups about bringing Screener from HEY to Lotus and I'm so happy to tell you it's shipped!
Screener
Quick refresher, Screener is a feature in HEY that blocks never seen before emails from your inbox until you explicitly say "Yes" to receiving them. I loved that idea and was thinking for a long time about adding it to Lotus. Now it's finally here! I still kept the name "Screener", because I just couldn't come up with anything better and cooler. If you have an alternative, please reach out!
Screener in Lotus works in a similar fashion. When you receive a notification from a thread you haven't seen before, it will not land in your Inbox. Instead, you'll see this silent and friendly alert in the top right corner of the Inbox:
This behavior only applies to repositories where you're not an owner and not a collaborator. So if someone creates a new issue in one of your own repositories, don't worry, notifications will bypass Screener and arrive in your Inbox right away.
If that's not the case, you can click on that alert which will take you to the Screener itself.
You can see the notifications that Screener caught and quickly look through the thread to understand whether you're interested in participating in that discussion or not. If you do, clicking on "Add To Inbox" will do exactly what it says - Lotus will add that notification to Inbox and make sure future notifications from that thread will skip Screener. If you're not interested, feel free to mute that thread and Lotus will never show notifications from it again.
Simple yet brilliant. Hats off to Basecamp team for inventing this feature!
Fresh notifications
This week I also tackled one of the oldest items on my todo list - refreshing notifications. Previously Lotus fetched all your notifications on launch and there was no way to receive new ones if app was left open. There are some significant issues with that:
- Obviously, no way to get fresh notifications unless you restart the app
- If you have a lot of notifications, the process of refetching all of them on startup can take a long time and result in terrible startup times
- Features like Screener require even more API requests to GitHub, which could theoretically eat up a big chunk of the rate limiting quota per hour
Fortunately, GitHub API accepts a since
parameter, which Lotus can use to fetch all new notifications since the last time it did that. All I had to do is remember the date when Lotus fetches data and pass that date in the next API request. Neat!
Refreshing notifications while the app is open was a trickier problem. Should I have a "Refresh" button? Automatically refresh when user switches to Lotus' window? Maybe when it goes to the background?
Neither of these ideas sounded right to me. They didn't align with what Lotus promised to deliver - a calm environment for maintaining your work. I don't want users to push "Refresh" all the time to get the latest updates and I really don't want new notifications to arrive in the Inbox suddenly when you focus the app. There's also no way to stream new updates with GitHub's API either and even if there were, that would definitely be my last choice.
Instead of all that, I went with automatic refreshing once per 30 minutes. I think it fits my flow as a GitHub user quite nicely. GitHub is not Slack, I don't need to see what's going on in realtime. I don't want Lotus to distract me, but I also don't want to miss new replies in my threads too. Adding new stuff to my Inbox only twice per hour seemed like a good way out. I think this solution definitely fits the Lotus manifesto (maybe I should actually write one).
However, I still want to leave an escape hatch for those who really need to quickly monitor the state of some issue or a pull request. For them, I'm planning to add a ⌘R keyboard shortcut to refresh notifications manually. It won't be displayed anywhere in the UI though for reasons mentioned above.
Sounds like a good compromise to me!
Roadmap
This week I thought I'd share what's on the roadmap to give you a sense of where things are:
- Force refresh via ⌘R
- Mute threads that are already in the Inbox
- Ignore "+1" and "Any update?" comments and alike
- Ignore Dependabot pull requests
- Undo any action
- Add keyboard shortcuts
- Show notifications by repository on a separate page
There are a lot of other things, but these are the ones I've committed to build.
I'm not going to promise or announce an estimated launch date, because in my experience it's just never possible to ship in time. And when it doesn't happen, people get frustrated.
There's one more item on my todo list that I've been going back and forth on - an app icon. I'm tempted to work with a professional designer to have a beautiful icon created for Lotus. However, I think I'm going to hold off on this one just for a bit, until there's more interest in Lotus and I can justify investing more than my time into it. Sometimes I still dream of a gorgeous icon and how awesome would it look in the Dock, which is why I just can't get this idea out of my head :)
Thank you for checking out this week's newsletter!
I'm curious to hear what you think about Screener or Lotus in general. Feel free to hit "Reply" to this email or reach out to me at vadimdemedes@hey.com or on Twitter.
See you next week!
Vadim.