2f85c334cb
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-09 22:15:36 -06:00
be3131ad7c
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-09 22:15:22 -06:00
9a0a48d889
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-09 22:14:58 -06:00
ec61a76602
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-09 22:12:29 -06:00
772cb6e437
added screenshot view
...
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-09 21:56:17 -06:00
8f01d78146
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-09 17:03:33 -06:00
499889d373
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 19:54:19 -06:00
8ad199893a
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 17:29:47 -06:00
4537a40cea
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 17:27:39 -06:00
ac35666208
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 17:25:43 -06:00
c153b16593
using loal swift paywall
...
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 16:11:12 -06:00
d62cc6e88e
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 15:57:01 -06:00
7fff295913
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 15:05:33 -06:00
a94404d93d
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 14:51:54 -06:00
3c7f8a39db
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 13:16:01 -06:00
658423ee16
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 11:57:39 -06:00
fb9a810262
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 09:12:23 -06:00
ab8ef49ddb
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-03 08:51:24 -06:00
052e4715dc
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-01 18:43:07 -06:00
4979bd629a
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-02-01 18:36:53 -06:00
dd84ffdfe6
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-12 17:29:40 -06:00
ae7ba030a2
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-12 17:23:11 -06:00
648ef44e4d
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-12 17:09:38 -06:00
609ed970c5
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-12 14:51:37 -06:00
09e3e8abc5
k
...
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-10 15:48:53 -06:00
fa8ef4ca1a
Remove unused camera components and refresh translations
2026-01-05 09:38:02 -06:00
1907ce773d
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-05 08:30:33 -06:00
d1814500a7
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-04 19:16:33 -06:00
84b565cbb5
Reorganize folder structure with consistent Views/ViewModels/Components pattern
...
Camera:
- Views/: ContentView, CustomCameraScreen, PhotoReviewView
- Components/: All UI components (buttons, overlays, controls)
Settings:
- Views/: SettingsView, AppLicensesView
- ViewModels/: SettingsViewModel + extensions
- Components/: ColorPresetButton, CustomColorPickerButton
Paywall:
- Views/: ProPaywallView
Shared:
- Theme/: SelfieCamTheme, DesignConstants, BrandingConfig
- Extensions/: Color extensions (moved Color+Extensions here)
2026-01-04 18:39:59 -06:00
60ea419a5b
Split SettingsViewModel into logical extensions
...
- TimerOption.swift - Timer enum moved to Models/
- SettingsViewModel+RingLight.swift - Ring light settings
- SettingsViewModel+Camera.swift - Camera, flash, HDR, timer, quality
- SettingsViewModel+Premium.swift - Debug toggle and premium reset
- SettingsViewModel+CloudSync.swift - iCloud sync conformance
- SettingsViewModel.swift - Core class with display/capture settings
2026-01-04 18:23:12 -06:00
a3d7370f32
Use premiumToggle helper for Center Stage, remove dead premiumSectionHeader code
2026-01-04 18:20:58 -06:00
5cab79f426
Rename LicensesView.swift to AppLicensesView.swift
2026-01-04 18:18:15 -06:00
5275289e67
Simplify AppLicensesView - remove extension pattern
2026-01-04 18:17:48 -06:00
d0e541910b
Refactor to use Bedrock's LicensesView with License model
2026-01-04 18:15:20 -06:00
44512e923c
Refactor LicensesView to use SettingsCard from Bedrock
2026-01-04 18:12:47 -06:00
845367fa87
Refactor to use Bedrock's iCloudSyncSettingsView and CloudSyncable protocol
2026-01-04 18:11:28 -06:00
db27e50b08
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-04 18:09:10 -06:00
d3dac86de4
Refactor camera/flash/HDR pickers to use SettingsSegmentedPicker
2026-01-04 18:03:52 -06:00
83b03f269f
Fix: Only reset timer when disabling debug premium if it was a premium option (5s/10s)
2026-01-04 17:55:19 -06:00
ac3b9459b4
Wrap About section in SettingsCard for consistency
2026-01-04 17:53:53 -06:00
1b92467ec3
Refactor SettingsView to use Bedrock components: SettingsCard, SettingsNavigationRow, SettingsSlider, and titleAccessory
2026-01-04 17:50:28 -06:00
003d933521
Add SelfieCamTheme with branded colors and settings card containers
...
- Create SelfieCamTheme.swift with rose/magenta-tinted surface colors
- Add AppSurface, AppAccent, AppStatus, AppBorder typealiases to avoid conflicts
- Wrap settings sections in SettingsCard containers for visual grouping
- Add accentColor parameter to all SegmentedPicker and SettingsToggle usages
- Update all color references to use App-prefixed typealiases
- Background uses AppSurface.primary, cards use AppSurface.card
2026-01-04 16:55:12 -06:00
255f3c2d68
Add branded SelfieCamTheme with visual improvements to settings
...
- Create SelfieCamTheme.swift with rose/magenta-tinted surface colors matching app branding
- Add App-prefixed typealiases (AppSurface, AppAccent, AppStatus, etc.) to avoid Bedrock conflicts
- Add SettingsCard container for visual grouping of related settings
- Update SettingsView with card containers and accent-colored section headers
- Update all settings-related files to use new theme colors
- Pro section uses warning color, Debug section uses error color for visual distinction
2026-01-04 16:54:23 -06:00
66736d39f9
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-04 16:21:41 -06:00
f7c554d018
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-04 16:04:18 -06:00
fe7ab135af
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-04 16:03:50 -06:00
5499b10b2a
Remove dead code and add free UX features
...
REMOVED (dead code):
- CaptureMode enum (photo/video/boomerang) - never used
- selectedCaptureMode property
- CaptureControlling protocol file
- CenterStageControlling protocol
- SettingsViewModel CaptureControlling conformance
ADDED (free features):
- Double-tap to flip camera (front/back)
- Tap to focus (already built into MijickCamera)
- Volume button shutter (hardware shutter capture)
- Haptic feedback on capture, countdown ticks, and camera flip
NEW FILES:
- VolumeButtonObserver.swift - observes hardware volume buttons
- HiddenVolumeView - prevents system volume HUD
2026-01-04 15:39:44 -06:00
52eed458f4
Fix grid visibility crash - delay camera settings until initialized
...
MijickCamera's cameraGridView is nil in onAppear, causing a crash when
setGridVisibility() is called immediately. Added 100ms delay for grid,
HDR, and skin smoothing settings to let MijickCamera fully initialize.
2026-01-04 15:29:27 -06:00
564d2107ea
Fix Center Stage crash - set control mode to .app before enabling
...
AVCaptureDevice.centerStageControlMode must be .app (not .user) before
we can programmatically set isCenterStageEnabled. When mode is .user,
only the user can toggle it via Control Center.
2026-01-04 15:27:11 -06:00
56890cb519
Implement orphaned settings and delete unused files
...
IMPLEMENTED:
- HDR Mode: Now calls setHDRMode() on camera in onAppear and onChange
- Skin Smoothing: Applies CIGaussianBlur filter when enabled (premium)
- Center Stage: Enables/disables AVCaptureDevice.isCenterStageEnabled
- Zoom Factor Persistence: Saves and restores zoom level across sessions
DELETED:
- GridOverlay.swift: MijickCamera's built-in grid is used
- PostCapturePreviewView.swift: PhotoReviewView is used instead
Also:
- Added CoreImage import for CIFilter usage
- Clamp zoom to saved value on restore
2026-01-04 15:24:13 -06:00