Some notes on the stack in case you're curious:
- Swift 6 with strict concurrency enabled, not the compatibility mode.
- MacOS 14 and later.
- Apple Silicon and Intel both supported.
- Developer ID signed
- SwiftUI throughout, with AppKit dropped in where SwiftUI can't perform the needed functionality
- SQLite via GRDB 7.11.1
- EXTRAs video snaps are encoded in H.264 High 4:4:4 Predictive, which macOS cannot decode by any native route, hardware or software so the app embeds FFmpeg (decode only, LGPL, dynamically linked as frameworks) and plays the clips live.
- ZIPFoundation 0.9.19 for writing collection exports, with a somewhat customized zip index for reading
- MAME runs as a detached subprocess with arguments passed as an array, not through a shell. The app composes MAME's full layered ini configuration itself and shows you the exact command line it will run.
If you'd like to try it out, I would be very interested in feedback and suggestions for improvements. Many thanks!
DJCJ Arcade
https://github.com/DJCJ-website/DJCJArcade