Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4402790
Version bump
dzenbot Jul 14, 2026
faac383
Displaying the pilot limit in a race detail view, if enabled
dzenbot Jul 16, 2026
a03d9a8
Fixing being able to update the pilot limit from within the app
dzenbot Jul 16, 2026
e429048
Updating release notes
dzenbot Jul 16, 2026
b55e315
Fixing a retain cycle issue
dzenbot Jul 16, 2026
f2f1e4c
Optimizing ZippyQ polling mechanism
dzenbot Jul 16, 2026
864700f
Fixing potential retain cycle during an animation
dzenbot Jul 16, 2026
bf04ad7
Deduplicating missing pilot IDs before requesting users and caching f…
dzenbot Jul 16, 2026
118ddaf
Mapping and sorting responses on a separate thread now, instead of us…
dzenbot Jul 16, 2026
fa5eba4
Moving the copy-credentials script to its own file. To be tested duri…
dzenbot Jul 16, 2026
9fedd0f
Adding dark mode support
dzenbot Jul 21, 2026
302b9bb
Manual tweaks
dzenbot Jul 26, 2026
9c0c8f7
Putting dark mode behind a feature flag for now
dzenbot Jul 26, 2026
1c22588
Adding latest screenshots
dzenbot Jul 27, 2026
93e9481
Mapping the new ZippyQ API endpoints
dzenbot Jul 27, 2026
7871892
Adding new ZippyQ view controller and basic API interactions
dzenbot Jul 28, 2026
8e8cd5e
iOS26 appearance changes, notably the profile view with transparent n…
dzenbot Jul 28, 2026
cc5356d
Extending a race's map all the way to the top of the screen on iOS26 …
dzenbot Jul 29, 2026
7a7a415
Flag on the location name instead of the pilot's
dzenbot Jul 29, 2026
aea5c75
Initial UI implementation of the ZippyQ support
dzenbot Jul 29, 2026
6b13e95
Customizing the ZippyQ layout for rounds and frequency slots. Mostly …
dzenbot Jul 30, 2026
afd69d5
Fine tuning the ZippyQ action buttons
dzenbot Jul 30, 2026
16372d9
Wiring the frequency actions with the API and handling different uses…
dzenbot Jul 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,18 @@

---

## 2.1.3

### New Features:
* Displaying the pilot limit of a race, if available, on the race detail view
* Allowing to update the pilot limit from within the app (race organizers only)

### Fixes and Enhancements:
* Optimized network calls to make the UI feel faster.
* General bug fixes.

---

## 2.1

### 2026 International Open's interactive schedule:
Expand Down
84 changes: 69 additions & 15 deletions RaceSync.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions RaceSync.xcworkspace/contents.xcworkspacedata

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions RaceSync/Assets.xcassets/launch_bkgd.imageset/Contents.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
{
"filename" : "launch_bkgd.jpg",
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"idiom" : "universal"
}
],
"info" : {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@
{
"filename" : "multigp_logo_splash.pdf",
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "multigp_logo_splash-dark.pdf",
"idiom" : "universal"
}
],
"info" : {
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "placeholder_shimmer_list.pdf"
"filename" : "placeholder_shimmer_list.pdf",
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "placeholder_shimmer_list_dark.pdf",
"idiom" : "universal"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}
}
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@
{
"filename" : "racesync_logo_header.pdf",
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "racesync_logo_header-dark.pdf",
"idiom" : "universal"
}
],
"info" : {
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@
{
"filename" : "racesync_logo_splash.pdf",
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "racesync_logo_splash-dark.pdf",
"idiom" : "universal"
}
],
"info" : {
Expand Down
Binary file not shown.
Binary file not shown.
33 changes: 18 additions & 15 deletions RaceSync/Base.lproj/LaunchScreen.storyboard
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="24765" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_12" orientation="portrait" appearance="dark"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="24743"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
Expand All @@ -16,36 +17,35 @@
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.25" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launch_bkgd" translatesAutoresizingMaskIntoConstraints="NO" id="dDa-EW-3R5">
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.20000000000000001" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launch_bkgd" translatesAutoresizingMaskIntoConstraints="NO" id="dDa-EW-3R5">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="multigp_logo_splash" translatesAutoresizingMaskIntoConstraints="NO" id="vTT-rp-wMx">
<rect key="frame" x="141" y="692" width="111" height="101"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="multigp_logo_splash" translatesAutoresizingMaskIntoConstraints="NO" id="vTT-rp-wMx">
<rect key="frame" x="141" y="658" width="111" height="101"/>
<constraints>
<constraint firstAttribute="height" constant="101" id="MLI-wI-1z0"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="POWERED BY" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Zbk-nJ-yB8">
<rect key="frame" x="157.66666666666666" y="667" width="78" height="15"/>
<label opaque="NO" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="POWERED BY" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Zbk-nJ-yB8">
<rect key="frame" x="157.66666666666666" y="633" width="78" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.80000000000000004" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="racesync_logo_splash" translatesAutoresizingMaskIntoConstraints="NO" id="pjL-zg-3Xr">
<rect key="frame" x="27" y="259" width="339" height="87"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="racesync_logo_splash" translatesAutoresizingMaskIntoConstraints="NO" id="pjL-zg-3Xr">
<rect key="frame" x="27" y="318" width="339" height="87"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="87" id="rq7-TJ-BTB"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" alpha="0.25" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Photo: Wayne Ho @ MultiGP IO 2024" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ntX-pQ-fve">
<rect key="frame" x="0.0" y="818" width="393" height="15"/>
<label opaque="NO" userInteractionEnabled="NO" alpha="0.40000000000000002" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Photo: Wayne Ho @ MultiGP IO 2024" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ntX-pQ-fve">
<rect key="frame" x="0.0" y="784" width="393" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="backgroundColor" systemColor="tertiarySystemBackgroundColor"/>
<constraints>
<constraint firstItem="vTT-rp-wMx" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="141" id="2uz-TR-eJF"/>
<constraint firstItem="dDa-EW-3R5" firstAttribute="bottom" relation="lessThanOrEqual" secondItem="Ze5-6b-2t3" secondAttribute="bottom" id="8aM-kR-Aps"/>
Expand Down Expand Up @@ -74,5 +74,8 @@
<image name="launch_bkgd" width="2082" height="2777"/>
<image name="multigp_logo_splash" width="220" height="220"/>
<image name="racesync_logo_splash" width="360" height="86"/>
<systemColor name="tertiarySystemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>
30 changes: 16 additions & 14 deletions RaceSync/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="xl9-lg-qP6">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="24765" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="xl9-lg-qP6">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="24743"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
Expand All @@ -16,36 +17,34 @@
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.25" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launch_bkgd" translatesAutoresizingMaskIntoConstraints="NO" id="tRQ-h2-aIV">
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.20000000000000001" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launch_bkgd" translatesAutoresizingMaskIntoConstraints="NO" id="tRQ-h2-aIV">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="multigp_logo_splash" translatesAutoresizingMaskIntoConstraints="NO" id="f4o-uc-HAl">
<rect key="frame" x="141" y="736" width="132" height="101"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="multigp_logo_splash" translatesAutoresizingMaskIntoConstraints="NO" id="f4o-uc-HAl">
<rect key="frame" x="141" y="702" width="132" height="101"/>
<constraints>
<constraint firstAttribute="height" constant="101" id="gJP-Ax-u2j"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="POWERED BY" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FDW-Yv-sbc">
<rect key="frame" x="168" y="711" width="78" height="15"/>
<label opaque="NO" userInteractionEnabled="NO" alpha="0.59999999999999998" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="POWERED BY" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FDW-Yv-sbc">
<rect key="frame" x="168" y="677" width="78" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.80000000000000004" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="racesync_logo_splash" translatesAutoresizingMaskIntoConstraints="NO" id="HUg-Wc-UcN">
<rect key="frame" x="27" y="248" width="360" height="87"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="racesync_logo_splash" translatesAutoresizingMaskIntoConstraints="NO" id="HUg-Wc-UcN">
<rect key="frame" x="27" y="296" width="360" height="87"/>
<constraints>
<constraint firstAttribute="height" constant="87" id="FVy-Do-BIx"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" alpha="0.25" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Photo: Wayne Ho @ MultiGP IO 2024" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hke-7r-Tfr">
<rect key="frame" x="0.0" y="862" width="414" height="15"/>
<label opaque="NO" userInteractionEnabled="NO" alpha="0.40000000000000002" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Photo: Wayne Ho @ MultiGP IO 2024" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hke-7r-Tfr">
<rect key="frame" x="0.0" y="828" width="414" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="IAM-58-XBf"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="backgroundColor" systemColor="tertiarySystemBackgroundColor"/>
<constraints>
<constraint firstAttribute="top" relation="lessThanOrEqual" secondItem="tRQ-h2-aIV" secondAttribute="top" id="20K-im-dI2"/>
<constraint firstItem="tRQ-h2-aIV" firstAttribute="leading" secondItem="H1y-xF-zMX" secondAttribute="leading" id="8Zb-dD-kSt"/>
Expand Down Expand Up @@ -81,5 +80,8 @@
<image name="launch_bkgd" width="2082" height="2777"/>
<image name="multigp_logo_splash" width="220" height="220"/>
<image name="racesync_logo_splash" width="360" height="86"/>
<systemColor name="tertiarySystemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>
Loading