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).