MC-Timer

Version History

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.