Skip to content

Conversation

@crystall1nedev
Copy link
Owner

@crystall1nedev crystall1nedev commented Aug 15, 2025

mlchtCamera's code is all over the place, and I'm dealing with the affects of this months after I've written it. I'd like to make it cleaner and more organized - and will need to in order to prepare for mlchtKit.

More details on mlchtKit and its purpose will be available once dev/mlchtkit is pushed to this repository.

- Removed various files from Copy Bundle Resources step
- Added Embed Build Information to the watchOS target
- Add CFBuildBran to show what branch Malachite is built from
- Add experimental DeveloperView from the DeveloperView/ folder
- Refactor MalachiteSettingsView into SettingsView/ folder
- Remove unnecessary code and comments
@crystall1nedev crystall1nedev self-assigned this Aug 15, 2025
@crystall1nedev crystall1nedev marked this pull request as draft August 15, 2025 09:12
- Refactor SettingsView into multiple files
- Refactor SettingsView+Help into QuickHelpView/
- Refactor SettingsView into multiple files
- Refactor SettingsView+Help into QuickHelpView/
- Move internal settings to DeveloperView+Internal
- Add Quick Help entries for Compatibility and Developer
So the availability clause isn't working... what.

(cherry picked from commit 4bf97b9)
- Added a few things to the DeveloperView
- Rename some localizations and functions
- Put CompatibilityView into sections for more clarity
- Switch to isFlashAvailable from hasFlash
- Remove some unnecessary code, formatting changes
Camera Control support for focus and zoom have been disabled for everyone as I work on keeping Camera Control + gestures synched.
Internal builds still have it force enabled
Took care of most of the setupView() function, updated PhotoPreviewView
use the functions I created there as well.

This commit also fixes generating iOS 18 and older app icons using an
(obviously undocumented) asset catalog compiler flag, and switches
NSLog a bit to show proper debug information.
These aren't stale, Xcode just can't find them anymore.
- Move initialization to its own class and out of viewDidLoad()
- Move preview layer building into CameraView+Preview.swift
- Move bringup to Camera+Bringup.swift
- Move UI hide/show to MalachiteViewUtils.swift
- Created a UIGestureRecognizer array for rewritten UI hide/show funcs
- Move various functions out of CameraView into classes that they fit into
- Move Camera Control init + delegate to CameraView+Controls
- Move Darwin notification init to CameraView+Notifications
- Moved overriden funcs to CameraView+Overrides

Other changes included in this commit:
- Create a .name property on UIGestureRecognizer to more easily manage them
- Rewrite dimensions argument for button building to generate corner radius
- Add option to block accidental gestures (swiping from the bottom), currently requires a restart
- Add option to disable Camera Control, currently requires a restart
- Add preference for Camera Control options + order, currently not customizable
- Rename localizations for internal options
- Fixed the game kit button logic in Preferences+Extension (intentionally broken elsewhere)
- Fixed various force unwrapping in bringup code to fix iOS simulator support
- Fixed crash on launch on (at least) iOS 17, probably fixes other versions too
Also some fixes in the Embed build information scripts
I'm committing this before what I am about to do breaks it. Currently,
everything is still working fine. If you are installing Malachite for the first
time, install the previous build first and then update. This build does not
have working requests for camera access or photo library additions, so the
app will die.
This should also fix any other permissions issues that I forgot to account for in the past.
- Moved deviceModel and deviceModelHasChanged into compatibilityPreferences
- Removed prefsVersion key, it was unused after the migratePreferences() rewrite
- Call compatibility.checkDeviceForHEICCompatibility() from Init
So this is awkward... I forgot that Apple's been using HEIC the entire time...
I guess it makes sense that isVideoHDREnabled = false fails...
- Buttons, sliders, and recognizers are now in the ControlLayer
   - TODO: Update DocC for them, rethink buttonBuilder.constraints...
- Flashlight level adjustment is now available outside of Camera Control
- Major changes to manual slider adjustments:
   - Only one slider can be active on the screen at a time
   - The lock button has been relocated to above the flashlight on/off toggle
   - This implementation fixes smaller displays having clipping issues
Will be moving these out later, just fixing up watermarking first...then will
finish CameraView.swift refactor, and finally get to this file fully.
Well, bug. Fixed the issue on <=iOS 17 where the buttons would fail to switch
Also fix a crash that should theoretically have never been possible to reach but would still have crashed the app.
The name stays unique and serves as the final change to Malachite for App Store Connect.
@crystall1nedev crystall1nedev changed the title Refactoring Malachite's Views Refactoring mlchtCamera's Views Jan 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants