## 4D Maze

# Revision History

1.8.2 | 6 Dec 2025 | Slider responds to touches in a larger area around it, making it easier to move the slider without accidentally rotating the whole maze. Slider gradually coasts to a stop when you let go of it. Switch to enable/disable rotational inertia. Minor changes for better legibility on iOS/iPadOS/macOS 26.
1.8.1 | 26 May 2025 | In macOS App Sandbox settings, added read/write permission for user-selected files.
1.8 | 23 May 2025 | Runs on macOS as well as iOS and iPadOS. Exports PNG images as Mail, Messages, AirDrop, Save to Files, Copy, etc Updated for iOS 17+
| 15 Nov 2024 | Full Swift 6 Concurrency.
1.7 | 31 Aug 2023 | Entire app re-written in Swift and SwiftUI.
1.6.2 | 23 Jan 2023 | Added Polish translation, thanks to Marcin Pilarski.
1.6.1 | 23 May 2022 | Added Turkish translation, thanks to Süleyman Saltuk Güngör.
| 19 Dec 2021 | (legacy iOS) Changed iOS Deployment Target to iOS 14, because Apple has stopped supporting iOS 12. Thus, in particular, I no longer have a maintainable iOS 12 device to test on. (legacy iOS) Added UINavigationBarAppearance so that navigation bars will have an opaque background when running on iOS 15.
1.6 | 20 Jan 2021 | (macOS) Runs natively on both Apple Silicon and Intel Macs.
| 22 Nov 2020 | Changed various GPU uniforms, colors in buffers, etc. to half-precision (__fp16 and faux_simd_half4) where appropriate.
| 5 Nov 2020 | Removed workaround for bug that function-constant assignments like constant bool gFoo [[ function_constant(0) ]]; constant bool gBar = ! gFoo; used to work as expected on iOS but fail on macOS. They now work correctly on both OS’s.
1.5.5 | 31 Jul 2020 | Added Portuguese translation, thanks to Nuno Fernandes
| 1 Jul 2020 | Renders Maze colors as fully-saturated Display P3, when available.
| 16 Apr 2020 | Renders to Wide Color (Display P3) when available. Some of the shared code that won't be needed in the upcoming SwiftUI versions of the Geometry Games apps has been migrated to "-LEGACY" files, to allow the SwiftUI versions to include desired utilities without including legacy cruft like PixelRGBA, ImageRGBA, etc.
1.5.4 | 31 Mar 2020 | (iOS) Converted launch screen format from .xib to .storyboard to comply with new App Store requirements. (iOS) Toolbar self-adjusts at runtime to default height for device (iPad or iPhone). (iOS) Made toolbar opaque to make it brighter.
1.5.3 | 8 Nov 2019 | Replaced functions deprecated in iOS 13 or macOS 10.15 with non-deprecated alternatives.
1.5.2 | 10 Oct 2019 | (iOS) Updated for compatibility with iOS 13. In particular, it delays the presentation of the initial popover until after the base view controller has finished setting up.
1.5.1 | 11 Nov 2018 | (macOS) Enabled Hardened Runtime to allow Notarization by Apple.
| 31 Oct 2018 | (iOS) Added screenshots for iPad Pro (3rd Gen).
1.5 | 28 Oct 2018 | (iOS) Enabled Extra Hard mazes on iPhones, primarily for use on newer, larger phones.
| 17 Oct 2018 | (iOS) Table images, toolbar icons and other images re-created at @1x, @2x and @3x. Source files for those images all simplified and tidied up (now mostly as iDraw files). (iOS) Toolbar icons resized to 24pt, which is the new recommended size.
| 16 Sep 2018 | (iOS) Now Metal-only. Removed all OpenGL ES code.
| 30 Apr 2018 | (macOS) On multi-GPU systems, selects the GPU that's already running the displays attached to the main computer (but ignores any externally attached removable GPUs). If the system switches to a different GPU, this app switches to that GPU as well. (macOS) No longer calls [[NSNotificationCenter defaultCenter] removeObserver:self] because it's no longer necessary.
| 14 Apr 2018 | (macOS) Main content view is now layer-backed. When going fullscreen, avoids macOS 10.13.4 bug.
| 28 Sep 2017 | CPU code consistently uses "double" (rather than "float") for essentially everything.
1.4 | 12 Jun 2017 | (Mac) Completed Metal version for macOS.
| 6 Dec 2016 | (Mac) Mac version is now Metal-only. Reason: The Mac OpenGL version of the Geometry Games uses an older approach that would have been very time-consuming to rewrite using a CAOpenGLLayer to bring it into line with iOS OpenGL, iOS Metal and Mac Metal versions. It hardly seemed worth investing that much time into OpenGL code that would soon get phased out anyhow. In any case, users of older Macs will always be able to download an older, OpenGL-compatible version of each app. (Mac) Given that the Mac version is now Metal-only, it now requires macOS 10.12 or later. Reason: macOS 10.12 is the only version I can test the apps on, and I prefer not to release an app for earlier versions of the operating system, on which it's never been tested.
| 30 Nov 2016 | Created a single project document with targets for iOS and macOS. Created that single project document from scratch, to get rid of years of legacy cruft. Retired the Android code.
| 24 Aug 2016 | (iOS) 4D Maze is now "device-assignable" for easy installation on school iPads via MDM.
1.3.2 | 15 Jul 2016 | (iOS) Rewrote graphics using Metal. Falls back to OpenGL ES on older devices (pre-A7).
| 15 May 2016 | Separated OpenGL(ES)-specific data and code from graphics-system-independent data and code, in preparation for a migration from OpenGL(ES) to Metal on iOS and Mac (and maybe eventually to Vulkan on Android and to DX12 on Windows).
1.3.1 | 5 Apr 2016 | (Android) Disabled COMPILE_ANDROID_FOR_GLES2, so app now requires OpenGL ES 3 on Android.
1.3 | 12 Jan 2016 | (iOS) Updated for iOS 8/9. Extensive internal changes.
1.2 | 17 Nov 2015 | (Mac) Updated code for Mac OS X 10.10, replacing all deprecated method calls. Requires OpenGL 3.3.
| 12 Nov 2015 | (iOS, Mac) Converted memory management from Manual Retain-Release (MRR) to Automatic Reference Counting (ARC).
| 16 Oct 2015 | Suppressed the Language menu to avoid displaying UniHan characters incorrectly (and also because the Language menu wasn't really useful except in the Torus Games).
| 28 Sep 2015 | (iOS) Updated to require iOS 6. Removed -viewDidUnload and -shouldAutorotateToInterfaceOrientation.
1.1.1 | 27 May 2015 | (iOS) Improved German Help file (Mac, Win and Android versions already have it)
1.1 | 24 Apr 2015 | (Mac) Added 4D Shear slider (Android) Added 4D Shear slider Italian translation added, thanks to Daniela Bigatti German translation added, thanks to Bernd Macheleidt and Sascha Gritzbach (with some help from Frank Lutz and Sonja Meyr)
| 23 Mar 2015 | (iOS) Added 4D Shear slider
1.0.2 | 12 Feb 2015 | Russian translation added, thanks to Maria Trnkova iOS version added Android version added Windows version added
1.0.1 | 31 Jan 2015 | Japanese translation added, thanks to Tatsu Takeuchi
1.0.0 | 28 Jan 2015 | Initial public release