Sometimes you have to change your release plans, especially when something like this happens: on September 15 Apple said during their annual September event that iOS 14 will be out next day! That was a challenge for a lot of us developers, and for me too. Because of timezones, I didn’t have enough time on September 15, so I had do everything on the next day before 2 pm to have a chance to get Timerange and Courset released in time with iOS 14.
My initial plan about Courset was to release v0.3 with new features like course notifications along with iOS 14 improvements. This I had to change, so I’ve split these updates into two: 0.2.1 and 0.3. The former is already in the App Store, so be sure to update as soon as you’re on iOS 14! The app also no longer supports iOS 13 because of all the new SwiftUI features that I have to get to continue developing Courset. Stay tuned to hear more about 0.3 and future updates of Courset — we’re going to make this a perfect courses tracker!
Time for the first Courset update! Now you can edit your courses, add schedules and manage them. New schedules list screen conveniently displays all schedules of a course on a timeline chart. The update also includes many small fixes throughout the app.
Of course the ability to edit courses you add and manage their schedules is most important, since it’s a course manager app, but it was not as fun to make as this little chart above. I think it’s the most important feature not only because it’s convenient for user, but also it gave me a lot of experience (insert Skyrim level up sound here) writing this kind of stuff in SwiftUI. It’s not interactive, it just visualizes schedule dates for you to make it easier to plan the schedule. But it was done using only SwiftUI, and it really shows me the power of the framework. It’s just a combination of a small amount of math, GeometryReader, Rectangle, Path, and some overlapping detection code so month names don’t appear if there’s no space for them.
So now we have an app in the App Store built 90% on SwiftUI that has already been updated once. I think now I can write some SwiftUI tutorials for you, and I will someday in the future! I’m thinking about these topics: SwiftUI app architecture, drawing using SwiftUI (like that chart), managing app (or view) state, Core Data and Swift UI, network requests using Combine and SwiftUI. If you want me to cover one of these topics or something else first, please let me know in the comments below or on Twitter.
It was pretty challenging to make an old project like Timerange look good in dark mode, but thanks to ability to define color sets in .xcassets files and dynamic colors like systemBackground it became a routine after a little while 🙂 It’s nice to see how Apple gives you as many things as they can so you can adopt new iOS technologies faster.
I’ve also fixed a lot of little bugs here and there, while also trying to make version release process easier and faster. One of the most tedious parts of it is of course making screenshots for every single required screen size and language. You can easily make a mistake here and then a set of screenshots for one screen will look different than for other screens. This time I tried to make it simpler for me by using fastlane. Their snapshot tool automates screenshotting using UI tests that you can write. The best source of knowledge about UI tests that I could find is this video from WWDC 2015, highly recommend. Unfortunately, some parts of Timerange like time range selector (yes, class that allows you to enter a number of days, weeks, months and years is called TimerangeSelector) are so old I couldn’t make it work with UI tests without rewriting the way it’s initialised, and I didn’t want to move my release date this time (I have a new app to make. More about that soon). So as before, I made screenshots manually, but this time also framed it using, well, frameit, fastlane’s tool for adding device frames and text to screenshots. I’ve also refreshed the app’s icon, made a little video showcasing main features and changed a lot in keywords, so yeah, you can call it a pretty serious App Store Optimization! 🙂 We’ll see how it pays off in the near future.
So that’s how’s it going with Timerange. My next project is being written entirely using SwiftUI framework and so far I love it! More on that later.
Full changelog is below:
This update brings you dark mode for iOS 13 and fresh new app icon! Also in this update:
Fixed sometimes incorrect calculation of the number of working and non-working days between dates.
Improved notifications planning algorithm for time counters. Now even if you change your time zone often, notification will be received after specified amount of time.
Fixed app crash when tapping on “Event in Calendar” button, if access to Calendar is denied.
Many more little fixes throughout the whole app and on the widget.
Fixed a problem with the Counters widget that everybody had and experimented with some new stuff for me: Dynamic Type. Awesome feature that enabled the support for Larger Text at every screen of my app. I know a few people who use Larger Text on their iPhones, so I think there are a lot of users whom this feature might help.
In order to use Dynamic Type, you have to use text styles in IB and code, so for example you now have to use UIFont.preferredFont(forTextStyle:) instead of UIFont.systemFont(ofSize:). These text styles have predefined size, that also becomes available for user’s control with Larger Text accessibility setting. This forced me to update the way I define fonts everywhere in my app. The result you can see above: all that font thinness that I was using was too old, like iOS 7 style. These days iOS uses bolder fonts, that are actually more readable, and thanks to this change, the interface of Timerange feels fresh!
Full changelog is below:
• Improved typography across all screens to better match latest iOS design trends • This also means that all the text in the app is now dynamic! Now, what THIS means?! Timerange now respects Larger Text setting in iOS Accessibility settings, so everything in the app is bigger for you if you use this setting • Fixed date inclusion setting not using value from Remembering App State if its corresponding date is not set • Fixed Counters widget showing setup tip even if you already have Counters on the widget • Fixed some counters incorrectly displaying on Counters screen
Yay! A new Timerange update have just hit the App Store. I changed the order of my releases to have more time for my next big project that I’m going to reveal soon.
Got a job a few years ago so I didn’t have time to keep my apps up-to-date, I’m sorry. But every single purchase of Timerange still means a lot to me, always thought that I should get back to iOS development as soon as possible, so thank you all very much for the support! I hope the app serves you well in your daily routine. Now I’m back, so please welcome Timerange 4.0.5!
This update brings the most important improvement: optimization for the latest screens! Yes, the app looks gorgeous on iPhone X and newer. Also in this update:
• Updated the whole codebase to use the latest internal iOS technologies and prepare the app for more updates in the future. A downside of this is that I had to increase the minimal iOS version to 11. Most of you are already on iOS 11, 12, or even 13, so it doesn’t mean much to you. • Added more colors to Counters. Let it shine in all of them! • A lot of little layout improvements across all possible iOS devices. • Fixed some English and Russian localization issues. • Visually updated the Counters widget. • Fixed a crash that occurred when trying to create a calendar event for the calculated date. Didn’t know about this feature, huh? Tap on the result on the first screen of the app, then tap on “Event in Calendar” button.
A new update for Timerange just reached the App Store, and it’s all about fixing and improving user experience. But at first, I’d like to thank you all for your emails (I’ve received a lot of them since the last update). They really help to find bugs and to understand what things need to be improved in the app.
So here’s the changelog:
• Timerange now calculates everything 30% faster and uses 32% less memory!
• Simplified Widget Editor.
• Added a few tips about how to use Timerange.
• Fixed a bug when you couldn’t move or delete any widget.
• Fixed a bug when Timerange didn’t remember last entered dates on the Intervals screen.
• Other fixes and stability improvements.
Enjoy the new update and let me know what do you think about it by opening up Timerange and going into Settings > About Timerange > Support & Suggestions. And don’t forget to update your reviews in the App Store!
Timerange now supports iOS 9! I’ve also fixed a crash on the Intervals screen, added landscape orientation for iPad, and made a few more improvements to the app. If you find a bug in Timerange or you have any questions or suggestions about the app, feel free to e-mail me using “Support & Suggestions” button on the “About Timerange” screen inside the app. And don’t forget to leave a review in the App Store — it helps a lot!
A little update for Timerange just reached the App Store.
• Added weeks, months, and years to counters that have All-day switch turned off.
• Fixed crash at startup that happened in rare cases.
• Fixed crash when you change your workweek in app settings.
• Fixed issue on iPad when you weren’t be able to reset a counter.
• Smaller fixes and stability improvements.
Meet the Timerange 4!
In this Timerange reincarnation the app got a massive design overhaul, date calculation made even easier and more convenient, counters got several new features, and a new Settings screen allows you to customize the app.
• New Timerange design look awesome on iOS devices and also have got a bunch of new animations!
• Updated Date Calculation screen allows you to add or subtract from a date not only days, but also weeks, months, and even years.
• New Settings screen provides features to customize Timerange: choose whether the app will remember last opened screen, or open the one by your choice.
• Now you can customize fields behavior on Date Calculation screen and Intervals Calculation screen: set them to remember last values, or select a value for every field.
• Set your own workweek, and Timerange will calculate working and non-working days for you on Intervals Calculation screen.
• Create counters with a single tap using new “Fast Counter” feature.
• Set a color for each counter and reorder them as you want.
• And finally, Notification Center widget for your counters! Select within the app which counters to display on the widget.