Good evening 😴
In every customer call, when someone was about to interact with our entry’s time keyboard, I would take a deep breath. To be clear, it had a clever design — arguably too clever for its own good. On the few occasions it worked in these calls, it scored an A+. But unfortunately, on most calls, it fell apart. This was the week to stitch it up. It however became quickly apparent that the design in its current fit won’t work. Maybe it’s us, maybe it’s SwiftUI, maybe both — whatever the reason(s), we knew in the time available between now and release, something had to give.
We decided to strip the ability to set the time by simply scrolling (admittedly — execution aside — it wasn’t a perfect design because it removed the ability to scroll time without committing to a time). So, we went with a more conventional scrollview that requires you to explicitly set the time. To soften the loss, we made a series of improvements that should hopefully make the experience just as good as the previous when it worked, except it works all the time (and will continue to get better in future drops).
That aside, this was one of those weeks when we had legitimite struggles with SwiftUI. On a recent call, someone distinguished between apps they use vs rely on. Reluctant changes like the aforementioned demonstrate how seriously we take reliability. Performance is another critical charactertistic that is a high priority to us, because you’re unlikely to depend on something that doesn’t perform best-in-class. In an even earlier call, someone understandbly made a comment that it won’t be possible to compete with the Apple’s and Google’s. That was challenge accepted.
However, after the last week, we’re feeling less confident that we can accomplish this due to limitations with SwiftUI: we’ve been aware scrolling has a case of the jitters without needing to go too far into the future. Such a fundamental interaction in a record-heavy app is a red flag. We dedicated generous time to the task this week, but have almost nothing to show for it in terms of speed gains. We know it’s possible, but we’ve also now concluded that we won’t get this for free. Fortunately, we’ve got some promising leads for next week. Fingers crossed.
Have a great week!
- On the calendar pulldown, as you scroll the Stream, the selected date (the one with a yellow outline) auto-updates to whatever day is the first visible on the Stream.
- Visual affordances to switch states between week, month and year, as well as to collapse it again (if you remember we took this out a few drops ago, but minimalism at the expense of discoverability isn’t the way to go).
- “What’s happening?” placeholder text replaced with boringly clear “Add...” — (this should hopefully stop people on customer calls putting in status updates!).
(And a number of time keyboard improvements...)
- To activate/set a time, text (“Press to confirm”) makes it explicit (it was implied before through not-so-clear icon and reduced opacity). Keep in mind, even if you don’t press it, any interaction with the card such as dragging handles will implicitly activate it.
- More discoverable pull up/down handles on top right/bottom left corners that should be possible to interact with even when card minimised to a 15-minute slot (they won’t intercept each other because the target area are now on opposite sides).
- Can extend a top/bottom drag beyond the vertical edges (it will auto-scroll earlier/later time into view).
- Can change time in 15-minute intervals through the drag handles.
- Can now drag/drop into 15-minute slots.
- Can now scroll up/down the day to see what’s going on without changing the time.
- Can tap on any free slot to move time to there (top half of empty slot is for top of the hour, whereas bottom for a half-past start).
- Search automatically queries 30 days in the past now. Results are automatically scrolled to first day in present/future with a match, otherwise defaults to first result.
- In split-screen mode (i.e. calendar pulled down from top), Stream becomes responsive to the changes by switching to more compact layouts for days, weeks, months etc.
- When going back in time, this is clarified via an immediately collapsed bottom strip, consistent with how it’s displayed when moving forward in time.
- Week card doesn’t unnecessarily repeat the month when the week starts and finishes in the same month.
- If you missed any of your tasks from yesterday, will now show it always (even when you have nothing set for today).
- Shorter string when you missed something from yesterday to reduce possibility of it running over two lines.
- Nothing to do icon aligned consistently compared to other icons used when you have things to do.
- When pulling down the calendar from top, you shouldn’t see an “Earlier today” string incorrectly appear.
- When you drag down top bar, date on calendar clip should be consistently offset correctly (and not exceed the expected boundaries by jumping out beyond where the pulldown ends).
- The header day row should animate in sync with the dates when coming down for the first time.
- Selected date text colour should always be legible (yes this one again, but this should be the final fix!).
- When swiping between months, Stream should auto-scroll to first of the swiped-to-month more reliably.
- Cannot get the time set to be zero or less minutes when dragging card by top/bottom handles (potentially resulting in the card disappearing).
- Cannot get the time to go earlier than 12am today or tomorrow, i.e. must stay within today’s boundaries (we’ll be adding a way to add a multi-day event in a future update).
- Removing [All Day] should change it to [Anytime].
- When adding a date, it will consistently default to “Anytime” and will only change if/when a time is set.
- Sometimes applying a perspective was not registering and so the week’s contents was remaining the same — this shouldn’t happen anymore.
- Opening up a week into fullscreen Hero mode will not result in its collapsed bottom bar being replaced with the app’s after the view loads.
- Choosing between 30 minutes and 1 hour length perspectives should work fine.
- When a search is active, search box should continue to show what was searched for even after scrolling.
- If today is the second/last day of the weekend, then appearance of the top of its card will seamlessly blend with the previous (yesterday’s).