MC-Timer

Version History

Version 1.5

February 2022

  • Adds 11 new Science Fiction sounds.
  • Now shows the first exercise suggestion before the session is started. To support this, the session title is shown in a separate label.
  • Changed the pre-start message to show how many songs where loaded to the playlist.
  • Adds volume sliders to the in-app settings screen with which the relative volume levels of the beep and alert sounds can be adjusted. The recommended default settings are: beep volume 50%, and alert volume 80%.
  • Updated the Apple Music search view.
  • Items in the Apple Music search results will be checked when they are already in the playlist.
  • Tapping an item in the Apple Music search results will play them, making it easier to decide which item should be added.
  • Added a "Load more…" button to retrieve the next page of search results from Apple Music.
  • Adjust some internal timings to keep the Reset button from flashing up at the start of a workout.
  • Add special debug messages that can be made visible in the app.
  • Added a switch to the settings bundle, shown in the Settings app, with which the in-app debug messages can be enabled.
  • Updates internal debug logging functions.

Version 1.4

January 2022

  • Adds a list of exercise suggestions. During playback, these will be shown instead of the session title. On iPad or Apple TV, the exercise will be shown on the left-hand side.
  • Added an option to shuffle the exercise suggestions.
  • Enhanced the exercise suggestions to support paired exercises like "left/right lunges" can be expanded to two steps: "left lunges" followed by "right lunges". To support this, paired exercises need to contain names in the style of word-slash-word. Example: "side plank, left/right".
  • Exercise pairs are kept together, even when all exercises are shuffled.
  • The exercise suggestions are shown in green prior to the next set.
  • New sounds: electric buzzer, chapel bell, church bell, Big Ben, vinyl scratch, and Edgar the raven.
  • Adds a new countdown beep alternative: a single beep, 5-seconds before the next step.
  • Doubled the size of the reset button to increase its visibility.
  • Increased the space for the total session seconds test.
  • Created a new CoreData database version to support generic list items.
  • Now requires iOS 15.1 or later. Or tvOS 15.1 or later.
  • On Apple TV, resolved an iCloud synchronization issue.
  • Removed the output route picker view.
  • Reworked animations to work again with iOS 15.
  • Fixes the backwards button when in the middle of a set.
  • Hides the list separator in the main list.
  • Replaced UITextField wrappers with SwiftUI TextFields. Likewise, replaces the keyboard toolbar with a SwiftUI implementation.
  • Adds multiple retries for cases where the AVAudioPlayer failed to load the next sound.
  • Experimented using a circular progress text; later discarded.
  • Revised aspects of the playback mechanism.
  • Diverse stability enhancements.

Version 1.3

June 2021

  • When you mark a workout as a favourite, it will be listed before your other workouts in the list. Select the heart-styled Like button on the main screen of a workout to mark it as a favourite.
  • Adds an option to run a workout without playing any music. To disable music playback, deselect 'Play Music' in the playlist screen. You can still play countdown beeps or sound effects as usual.
  • No-music workouts are given a crossed-out music cover art.
  • Repositions the set-skip-buttons on Apple TV to make them easier to reach even when the workout has not been started yet.
  • On Apple TV, you can mark a workout as a favourite by selecting 'Like' in the context menu of a workout.
  • Added a delete command to the context menu on Apple TV.
  • Adjusted the music playback handling when receiving a phone call in the middle of an ongoing workout. Music should now continue to play after the call is finished.
  • Adds a guard condition to avoid loading new cover artworks when those that had been loaded previously are still available.

Version 1.2

March 2021

  • Adds a track preview player to the playlist view. Tap a song or playlist to play it. Tap again to stop.
  • Resetting the playback of the current workout is now also possible when the playback is paused during the initial 5-second-countdown.
  • Fixes an issue with selecting _personal_ Apple Music playlists. However, due to playback issues, rather than adding clumsy workarounds for undocumented features, these playlists have now been hidden. Note that you can still use _curated_ Apple Music playlists as well as your playlists from your (iTunes) media library. Also, you can still add any number of individual songs.
  • Refines playlist (re)assembly, making sure that the playlist is changed when a different workout is selected. Also, changes made to the playlist prior to starting a session should also be incorporated.
  • Instead of a song title, you may now see "no music selected" when your playlist is empty or when your media library items cannot be found.
  • Adds a circular progress indicator to give better feedback while the playlist is assembled.
  • At the end of a session, when shuffling is enabled, the playlist will be reloaded. This is not new, but I added a "Shuffling Playlist…" message to make it more prominent.
  • Optimizes access checks on startup. Playlist can only be loaded once all required access to your music is determined.
  • Eliminates some duplicate API requests for Apple Music.

Version 1.1

February 2021

  • Adds optional countdown beeps. Can be enabled for music start or stop sounds.
  • Revives background audio support.
  • Tries harder to stop music, e.g. over Bluetooth.
  • Unloads a deleted session from the playback screen.
  • Hopefully fixes a rarely seen view height issue.

Version 1.0

February 2021

  • Release version.
  • Requires iOS 14.

Version 0.4

February 2021

  • Beta-testing builds.
  • Product name is now "MC-Timer".
  • Adds a "Select for Playback" button to the session details screen.
  • Adds an alert when none of the chosen songs are available on a device.
  • Fixes playback of effect sounds when pressing the items in the list in quick succession. Also, random sounds now preview a different sound for each press.
  • Re-enables the access check for Apple Music.
  • Dims the background when the playback screen is open.

Version 0.3

January 2021

  • Integration with Apple Music. Adds the Apple Music subscription view. Curated playlists can now be chosen. User-defined playlists can be added. Individual songs can be added. All of these will be combined during playback.
  • Added MC-Timer app for Apple TV. Created a wide-screen-specific user interface. Added a background screen image.
  • Fixes some progress ring animation glitches. Stops animating the text strings.
  • Shows a progress spinner in place of the play button when the playlist is being downloaded and assembled.
  • Now increments the session's play count when having been active after the half-way point.
  • Adds a confirmation alert before deleting a session.
  • Another alert when trying to replace an ongoing session.
  • Uses a CoreData (iCloud) data model to facilitate across-device synchronization.
  • Uses SwiftUI for the windows and graphics. Discards animated marquee texts.
  • Adds wrappers for UIKit views like the media item selection controller and customized text fields.
  • Moves minimum deployment target to iOS 14.

Version 0.2

During 2020

  • Introduces a 3-second countdown when the first step starts with a music phase (as it normally would).
  • Adds album cover images and animations.
  • Streamlines code to display the title of the currently playing song.
  • Adds messages to the main welcome screen when access to the music library was denied.
  • Adds a message why a session may not be playable.
  • Adds emoji warning triangles to important messages strings.
  • Adds accessibility labels. Splits some buttons to avoid confusion for use with Voice-Over.
  • Adds timer countdown/up options to the settings. Links to the system settings from within the settings screen.
  • Preparations for Apple Music. Adds mandatory usage description. Adds handling of the MusicKit developer tokens; generation and texting via a Ruby script. Introduces code to download playlists and songs via the MusicKit API and an implementation of Future and Promises.
  • Introduces a music box to manage songs and playlist from both Apple Music and the on-device (iTunes) media library.
  • Improves background queue handling and table view updates.
  • Tracks modification date for sessions.
  • Corrects use count updating.
  • Core Spotlight indexing, Siri app intents.
  • Creates a QR code for sharing sessions between users.
  • Fine-tunes screenshot generation. Adds a mock music player and a mock volume view for use in the simulator. Uses example songs and artworks.
  • Fixes swiftlint warnings.

Version 0.1

During 2019

  • New app icon with gradient background.
  • Generic album cover icon.
  • Adds a welcome cell that is shown whenever there are no workouts in the list. Pressing it will create a new workout session.
  • Now using a musically inspired background image on the main screen.
  • Adds a new top-level controller to house the main play view screen. Allows play view to transition into a smaller view at the bottom of the screen.
  • Optimizes playlist to combine consecutive work or rest phases.
  • New progress ring view to animate the set and session progress. Updated to use a gradient. Changed the gradient to use an ease-in-ease-out transitions function rather than a linear gradient.
  • Adds now playing info support.
  • Migrates to iOS 13. Discards button icons in favour of new SF Symbols font icons.
  • Adds dark mode colour assets. Adds support for a user setting to override the system dark mode, allowing the app to be always light, or always dark.
  • Adds multiple bell sound resources. Designs support for random sound selections. Adds support for an additional finish sound, played when a workout has been played all the way through.
  • Disables landscape interface orientation. That just looked horrible, sorry.
  • Adds a long-press gesture recognizer to open an action sheet when a session is pressed in the main view. A session can now be deleted from that action menu.
  • Throws out the top-level collection view controller in favour of a simple and reliable table view controller. Adjusts the cells to make use of rounded corners and transparent padding.
  • Adds a watchOS target for a simple remote-control watch app. Tunes communication between MC-Timer and the watch app. A separate watch icon is needed.
  • Adds a Settings.bundle. Incorporates third-party license agreements into the bundle. Adds our own end user license agreement (EULA).

Version 0.0

February 2019

  • Created the iPhone project.
  • Chose product name 'MC Timer'.
  • First reasonably workable playback solution.
  • Sets up collection view layout and cells.
  • First set of app icons.