Home

sk8logic > Ice Time for Mac

Version History

prev   up
Version Date Notes

2.0.8

12/3/15

The app has been completely rewritten in Swift.

Today's schedule has been moved to its own dedicated window. This is similar to how it once was (prior to Development 15), but with better information for tracking the day in progress.

2.0.9

12/4/15

Fixed a bug which could crash the app in some circumstances when choosing a week in the Main window Calendar sidebar.

2.0.10

12/8/15

Fixed a bug which could crash the app in additional circumstances when choosing a week in the Main window Calendar sidebar.

2.0.11

12/9/15

Fixed a bug which could crash the app at launch for some users who had used an early (unreleased) version which left the cache files in an invalid state. The app will now recover from this condition.

2.0.12

12/10/15

Fixed bugs in the window which announces the availability of new releases. The message now will be more informative and the “Learn More” button will function correctly.

2.1.0

12/27/15

Rewrote all the code which handles downloading files via the Internet. These are largely “under the hood” improvements using modern APIs which are cleaner and more efficient. However, there are some changes (mostly in the handling of error situations) which you may notice in the user interface.

Added Refresh buttons to both the Main and Today windows. These show detailed status info in popovers rather than separate windows.

2.2.0

1/14/16

Added a Version History window. This information can now be viewed directly in the app without having to open a web browser to visit the site.

The Locate on Map button in the Rink Info pane now locates the rink using Apple’s Maps application rather than using Google Maps in your web browser.

2.2.1

1/17/16

Fixed a bug which prevented the app from properly updating weekly schedules in some circumstances when changes were posted. An out-of-date schedule would persist in the caches and continue to be displayed until the app was quit and re-launched..

2.2.2

1/26/16

Fixed a bug which caused inconsistent time displays for users located in a time zone different from the rink time zone.

The intent is to show all times in the rink time zone to correspond to what is happening “now”. The implementation was incomplete and showed the rink time zone in some places and the user’s local time zone in others.

2.2.3

1/31/16

Fixed a bug which caused inadvertent clicks in the weekly schedule to sometimes result in jumping to a different week. This was happening because the calendar was still responding to clicks even when it was hidden from view.

2.3.1

4/6/16

Added “notices” — a way for the rink to draw your attention to important announcements.

When a new notice is posted for the rink you are viewing in the main window, it is displayed in a banner at the top. If the notice is too long to fit in the available space, it will end in an ellipsis. Click the notice to view the entire notice in the Notices tab, or simply click the X to dismiss it.

You can view the entire collection of current notices at any time by visiting the Notices tab.

2.4.0

4/14/16

The former Schedule tab in the main window has now been split into two alternatives: Weekly and Daily.

The Show Now button in these tabs will jump back to the current week or day and scroll as needed to bring the time marker into view.

2.4.1

4/16/16

Fixed a bug which sometimes caused problems if a window was closed while displaying a popover (such as refresh status info).

This is an excellent example of the kind of bug that only occurs in an odd combination of circumstances, making it hard to detect. And even after seeing it occur, it remains difficult make it occur again.

If you’re curious, it turns out three things were required to get this problem to occur:
1. Open a popover.
2. Close the window by clicking the red close button. (i.e. not a keyboard equivalent)
3. The click must be rapid — very little delay between the downstroke and upstroke of the click.

A window gets a notification when a popover contained within it has closed. In normal situations this works perfectly. Clicking outside the popover closes it. The window gets notified and disconnects properly.

However, in this combination of circumstances the following occurred:
1. The downstroke of the click triggered closing the popover.
2. The upstroke triggered closing the window as well.
3. The notification that the popover had closed could not be delivered because the window was already closed.

This was a timing problem which depended on the rapidity of the click. Closing the popover takes a bit of time as it is removed from the screen with a brief animation. But if the window was closed (in response to the upstroke of the click) before the animation had completed, then the popover closed notification could not be delivered and the app was left in an invalid state.

2.4.2

5/18/16

Fixed a bug which sometimes caused the app to display notices in a banner even though they had already been seen. It was an annoyance to get the same notices repeatedly.

2.4.3

5/23/16

Fixed two bugs related to date ranges:

1. In some circumstances the range of dates shown in the calendar sidebar was displayed incorrectly.

2. The app could crash on launch if it had been more than 10 weeks since the previous launch in a particular user account. An incorrect calculation sometimes resulted in a date range that ended before it began.

2.5.4

1/4/17

The app is now built using Swift 3.

Note that versions 2.5.0 thru 2.5.3 were used in-house but not published to a wider audience.

2.5.5

2/27/17

Fixed a bug in the photo gallery. This was a timing issue. Data was requested from the server, but in some circumstances was accessed before the response was received. This caused the app to crash. Bad enough, but this left the caches in a state from which the app could not easily recover, leading to further problems on subsequent launches.

2.5.6

3/11/17

Fixed a crashing bug which could occur when changes to a rink’s collection of PDF documents are received from the server.

This bug only occurs in a specific set of circumstances, but if you have encountered it, the app is likely to crash shortly after every re-launch. Upgrading to the new version will be your only chance for recovery.

2.5.8

6/12/17

Fixed a bug encountered in the first developer preview of Mac OS 10.13 High Sierra. When turning pages in the main window, the schedule was sometimes drawn upside down. While this appears to be a bug in the pre-release OS, it was easy to work around with code that is actually more efficient for all users.

Note that version 2.5.7 was used in-house but the changes were too minor to be worth publishing.

2.7.5

4/21/18

The app is now built using Swift 4.1.

Fixed backward compatibility for Mac OS 10.9 (Mavericks) — the oldest OS version which supports code written in Swift. Differences in the way that version handles memory allocation and deallocation for certain types of objects resulted in crashes in the app.

Improved the handling of swipe gestures for turning pages. These worked adequately, but the display was jittery in some cases — particularly in Mac OS 10.13 (High Sierra). Swiping is now much smoother and easier to use.

Fixed a bug which caused the old version to crash when a new version was announced as available to download. The fix was simple to make in the new version, but leads to a quandary — how to get the word out about the new version when the very act of announcing it will crash the app for the recipients. The update announcement must be delivered through some other mechanism. A notice will be posted instead, encouraging Mac users to install the update as soon as possible. For a few weeks, version 2.5.8 will be left as the "current" version and 2.7.5 will show as "pre-release".

Note that several versions between 2.5.8 and 2.7.5 were tested in-house but the changes were minor. Wider distribution was considered unnecessary.

3.0.0

6/22/18

This is the most significant release in several years, with two major changes:

1. The format of data files transmitted via the internet has been changed from XML to JSON. These files are more compact by a factor of 3. They are also easier to cache locally and convert to internal data structures. The result is a significant performance boost while reducing internet data usage.

2. Instead of posting photos on the server in just two sizes (a thumbnail for viewing in albums and a larger version for viewing one at a time), photos are now posted in a variety of sizes (currently up to 4 versions). The app will request the best version for the current view, based on the dimensions of the view and the resolution of the screen. This makes it possible to post larger versions of photos for optimal viewing by those who have larger and/or higher resolution (Retina) displays, without incurring a performance and data usage penalty for everyone else.

3.1.0

9/24/18

Support for Dark Mode in MacOS 10.14 Mojave

This version drops support for MacOS 10.9 Mavericks. This is the price for moving forward.

Additional minor fixes and improvements

3.2.0

11/29/18

Fixed a bug which deleted one small cache file when quitting the app. This caused the file to be downloaded again on the next launch — an unnecessary bit of extra work.

Modified the layout of the “Today” window to better support full-screen mode on a display in portrait orientation. This now works very well as a signboard at the rink showing the day‘s schedule — updated live as the day progresses.

3.2.1

3/9/19

Further refinements for the Today window. Specifically, rather than using “Full Screen” mode (activated by clicking the green window control), the Today window now uses “Kiosk” mode. Kiosk mode is stronger, keeping the window title and menu bar hidden, even if the mouse cursor points near the top of the screen. This is better when using the Today window as a signboard display.

Enable Kiosk mode by checking the option for it in the “Options” menu.

3.3.0

11/25/19

Added support for the improved security in Mac OS 10.15 Catalina. The app has been submitted for checking by Apple’s “Notarization” service, which scans the app for any malicious code and issues a notarization certificate which is then attached to the app and also stored on Apple servers.

Catalina’s “Gatekeeper” looks for this notarization certificate when installing and running the app, compares it against the stored certificate, and only approves the app for execution if everything checks out satisfactorily. This provides strong protection against malware problems.

Simultaneously with this release, version 3.0.0 has been marked as the “minimum” version. Any versions earlier than that are now considered obsolete. If you have an older version, you must update to continue using the app.

3.3.2

3/16/20

Fixed a bug which prevented the deletion of cached files for past weeks. This did not cause any visible problems, but those cached files occupied storage space long after they could serve any useful purpose. Now the schedule files for past weeks will be deleted on the first update cycle of a new week.

3.4.0

5/17/20

Added capabilities which will be needed when the rinks begin to reopen following the COVID-19 shutdown. There will likely be new types of sessions which previous versions of the app are not equipped to display properly. Sessions may be described as “Resurface” where this is obviously incorrect.

4.0.0

7/15/20

The major change in this release is support for multiple venues for each rink. That means the app can now display schedules for multiple ice sheets and for any other rooms or facilities at the rink.

In the sidebar for the Schedule view, look for the control for selecting either a Weekly or a Daily view. And below that is a list of venues. The Weekly view supports choosing one venue at a time. The Daily view allows multiple venues to be chosen at once. These will be shown in side by side columns.

Also in this release are changes to the Today window. This window serves a very specific use as a fully automated information screen visible to everyone coming into the rink. It has been further refined for this purpose. If you use it, be sure to click the gear icon in the upper right corner to bring up controls for selecting a rink and venue and adjusting the display options to suit the size and orientation of the screen you’re using. You may also want to set Kiosk mode as described in section 3.2.1 above. Note that this works best with a display screen in portrait mode.

And finally, this release also contains changes to the underlying mechanism for refreshing data from the server. The process is now even more efficient than ever.

4.0.1

7/24/20

Refinements in the layout of daily and weekly schedules. There have lately been many occurrences of session descriptions with more lines of text than previously seen. These were causing the text to overflow the bounds of session rectangles. This version takes more aggressive action to eliminate line breaks in daily views. Also, in both daily and weekly views, overflowing text will be truncated to fit, with an elipsis (…) added to indicate that there is more text than is being shown. Try expanding the size of the view, make the font size smaller, or simply hover the mouse over the session to see the full text in the sidebar.

4.1.1

9/3/20

Prepares for the upcoming release of MacOS 11.0 Big Sur. Mostly this has been a matter of adjusting the layout of on-screen elements to accomodate the visual changes Big Sur is introducing. No issues of any great significance

Also begins preparation for the upcoming Macs with Apple Silicon. I have started building the app as a "universal binary" — that is, including native code for both Intel and Apple Silicon. However, compatibility can not be confirmed until those new machines start shipping near the end of 2020.

Plus, there are some changes to the automatic checks for software updates. The messages presented when a new version is available have been tweaked for clarity. You can also perform a check manually by choosing the new “Check for App Update” command in the application menu.

4.1.2

9/5/20

Added another new command to the application menu: “Visit App Website”. Choose this to visit the website at any time.

Removed the Version History window. That window served a useful purpose some years ago, but the combination of the new “Check for App Update” and “Visit App Website” commands make it superfluous. The complete version history is available here on this page and can be easily reached from the app.

4.1.3

9/24/20

In preparation for the upcoming release of Big Sur, the chime sound is now built-in rather than relying on a system sound. Big Sur updates the system sounds to newly recorded versions. The new sounds are very nice for personal use, but none of them is quite right for amplifying on a rink sound system to chime sessions (in school bell fashion). The old chime had enough distinctive clarity to be heard above all of the other noise in the rink. So I've brought it directly into the app. It will continue to sound the same as it has in prior OS releases.

4.1.4

11/3/20

Fixes a crashing bug in the Schedule pane of the main window. If the Rinks sidebar was open and the mouse was clicked below the listed rinks, the app would crash instead of showing “No Rink Selected”. I should have caught this one sooner. The bug was introduced in version 4.0.0 — a failure to handle the no rink selected case when setting up the window for multiple venues.

Also, the process of opening the Today window has been improved. It now does a better job of choosing the rink and venue to display in some circumstances which depend on what’s been viewed previously.

4.1.5

11/19/20

The app has been rebuilt with the final release of Apple’s developer tools for Big Sur.

The transition to Apple Silicon has gone incredibly smoothly. All of my apps are “Universal” — built to run natively on both Intel and Apple Silicon Macs.

4.2.0

1/24/21

Improves recovery from network errors or similar problems. A refresh operation, whether automatic or manual, now goes deeper than before to check for any data that was not updated successfully on the previous cycle. Note that this does not normally require any additional network traffic since the checking is totally local. Only if something was previously missed is it requested again from the server.

Also adds a refresh button to the rink list. This provides a way to manage the master refresh cycle, which updates the rink list and other top-level data. This button should seldom be needed, but is included for completeness. The other refresh button (to the right of the tab selector) is for updating the selected rink and is far more likely to be useful.

4.2.1

2/6/21

Fixes a bug introduced in 4.2.0 which prevented closing the main window (other than quitting the app).

5.0.0

3/4/21

No visible changes, but a significant performance boost. Schedule data is now published in an encoded binary format of my own design. This is something I’ve wanted to do for a long time, but there were numerous prerequisites which had to be accomplished first.

The files are smaller than the JSON files previously used by a factor of 3 to 4. This reduces both the amount of data transferred via the internet and the amount of local storage required for caches. And beyond the size reduction, the binary files are much faster to decode for use. A win all around.

You will get the benefit of these improvements if you update, but older versions will still function because the data is published in both old and new formats in two parallel tracks. This will give you a chance to update at your own pace.

5.0.2

9/7/21

Adds compatibility with the Broomball session kind. This was added to the planning app back in June, but the corresponding change in this app never got published.

5.0.3

10/14/21

Fixes a crashing bug which occurred in a specific combination of conditions — unusual, but very easy to reproduce. If the schedule was set to daily view, the main panel switched to something other than schedule, and the window closed, then after reopening the window the app would crash when switching back to the schedule view. The problem was that when the window was reopened, the daily schedule view was not fully configured (unnecessary at that point because it was not the chosen panel). But later, when switching to that panel, the assumptions about its configuration were invalid. The fix was easy, but what's surprising is that this problem escaped notice for so long.

5.0.4

11/9/21

Implements a workaround for what appears to be a bug in Monterey which caused the Today window to be shifted upward by about the height of the menu bar when using kiosk mode. This pushed the top of the window off the screen and exposed part of the desktop at the bottom. My solution is ad hoc and may need to be changed again if future Mac OS releases change the underlying behavior.

5.0.5

11/29/21

Proactively applies changes to avoid a potential crash on Quit problem that has been seen in various apps from time to time. The problem is that quitting an app causes closing of all windows and teardown of all data structures, but this process requires multiple steps and can result in consequences such as notifications that are executed in an undefined (i.e. unpredictable) order. That has the potential to trigger updates to views in the middle of the process — using data that has already been partially torn down. The solution is to mark every view with a boolean value "isClosing" before starting the Quit operation, and then to suppress any updates if the view is so marked. Many views already had this protective logic, but I have made the effort now to make sure it is implemented in all views in all windows.

5.0.6

12/9/21

Monterey release 12.1 has solved the problem I worked around in version 5.0.4. That problem was a consequence of Apple's attempts to accomodate the camera notch introduced for the first time on the 14 and 16 inch MacBook Pro computers. It's not a surprise that some of the edge cases (like kiosk mode) required a few tries to get the behavior right.

As expected, I have now had to make additional changes in this app to handle the revised behavior. The window now appears where it belongs without need for the previous workaround, so I removed it for systems running 12.1 or newer, but keeping it for 12.0.x. The window correctly fills the entire screen, which allows me to display content right up to the top. But if the computer is one of those with a notch, any content in the center will be obscured. In this case the rink name was getting slightly cropped at the top. I made a minor adjustment, moving it downward a few pixels. Problem solved.

In addition, I darkened the background color in dark mode from a very dark gray to pure black. If you combine dark mode with kiosk mode, the notch will blend with the window contents — making it completely invisible.

I have now added the option to specify dark mode for the Today window in Mac OS 10.14 (Mojave) or newer, even when light mode is chosen in System Preferences. This option was previously only offered on older systems (to simulate dark mode), while on newer systems the window always used the global setting.

5.0.9

12/21/21

I discovered that Monterey release 12.1 has not solved the problems surrounding the use of kiosk mode quite as well as I had thought. On a computer with a camera notch the problem appears to be solved, but not on others. So I have re-enabled the work-around for those machines. As I have said previously, the work-around is an ad hoc solution and may need to be changed again if future Mac OS releases change the underlying behavior.

The color mode option for the Today window now uses radio buttons rather than a checkbox. On systems running Mac OS 10.14 (Mojave) or newer there are three choices: light, dark, and "use system preference". On older systems only the first two choices appear since there is no built in dark mode. (On those systems dark mode must be simulated within the app by using explicit color choices for all of the elements in the window.)

5.1.0

2/13/23

Modernizes the look of the app in subtle ways.

Drops support for Mac OS 10.11 and 10.12. The current version of Apple's developer tools can no longer build apps for systems that old.

Adds support for multiple app releases being available at any given time to support different versions of MacOS. A table of releases is now published with information that includes the minimum MacOS version required for each one. When checking for updates, the app is now smarter about comparing the MacOS it's running on against the requirements for the available app releases. It will only present a notice to the user if a newer version of the app is available which will run successfully on their OS.

Removes the "Documents" tab in the main window. The capability it supported has been moved to an app of its own.

5.1.1

2/17/23

Fixes a minor layout issue that caused a few pixels at the right edge of the schedule in the main window to be cropped off. It was hardly noticeable except in the case when viewing the daily schedule for the current day. The triangle at the right end of the time of day marker was missing.

5.1.2

2/28/23

Adds a new "Show Times" option to the weekly schedule. When this is turned on, the times are displayed at the bottom of each session. This option will be most useful when printing.

Also, the layout of the daily schedule now adapts automatically bassed on the width of the window and the number of venues being viewed side by side. When the width of each venue falls below a minumum threshold, the duration and time columns (normally visible) may be hidden from view, and if necessary, a more compact layout is used for the session description.

5.1.3

4/11/23

Apple recently released a new version of Xcode with two changes that impact nearly all of my apps. The changes I'm making in response are not immediately essential, but I prefer to keep up with the latest from Apple. It pays off in the long run.

1. The original method for creating keyed archive files has been replaced with an approach that is more secure. The old method is now deprecated. I have in recent years replaced most of my keyed archive files with binary files of my own design. All of my document storage is now binary, but there are still a few keyed archive files remaining — mostly for things like saving user preferences and settings. I am systematically going through all of the apps and converting these keyed archives to property lists. This is an alternative way to store data structured as "dictionaries". Making this switch avoids the issues with keyed archives, but is also simpler and more compact, so it's a worthwhile improvement.

2. When running under the debugger, Apple now generates warning messages to the console regarding windows that are opened while the application is not active. I typically open one or more windows when the system tells my application that it has completed launching, but this occurs just before the app is first activated. So I am now moving my code to open the initial window(s) to this later point in the sequence.

Also fixes a bug which prevented loading the schedule in the main window in certain cases for a rink which had not been viewed for more than 4 weeks and for which the caches had therefore been purged. The data was downloaded correctly, but the view was not being updated once that data was received.

5.2.0

7/31/23

Modernizes the app to take better advantage of macOS improvements which were introduced beginning with version 10.14 (Mojave). Drops support for prior versions.

This version was built with Xcode 15.0 (beta) and the SDK for macOS 14.0 Sonoma. Building for and testing with Sonoma betas will help flush out any compatibility issues before that release goes out in the fall. I've already encountered and fixed some issues.

5.2.1

4/11/24

Fixes an error when printing a daily schedule. It would always print the schedule for today's date rather than the chosen date. This was a simple variable name mistake.

5.2.2

4/13/24

Provides substitute images for the sidebar buttons in the main window. The system symbols require MacOS 11.0 or greater, so alternatives must be provided for earlier versions.

5.2.3

6/10/24

Fixes the time marker in the Daily schedule view when viewing it from a different time zone than the rink's. The marker was shown correctly in the Weekly schedule and in the Today window. However, in the Daily schedule the clock was correct, but the time marker indicated the time in the user's time zone.