mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
5.3 KiB
5.3 KiB
Onboarding Enhancement - User Profile Selection
Overview
Added comprehensive user profile selection to the onboarding flow, allowing users to customize their DynamicIsland experience based on their work type.
What Was Changed
1. New Files Created
ProfileSelectionView.swift
- Location:
DynamicIsland/components/Onboarding/ProfileSelectionView.swift - Features:
- Multi-select card interface with 4 user profiles
- Beautiful gradient cards with hover effects
- Profile-specific settings configuration
- At least one profile must be selected to continue
reset_app_defaults.sh
- Location: Root directory
- Purpose: Reset app to factory defaults for testing
- Usage:
./reset_app_defaults.sh
2. Modified Files
OnboardingView.swift
- Added
profileSelectionstep toOnboardingStepenum - Integrated
ProfileSelectionViewbefore finish screen - Added profile settings application logic
WelcomeView.swift
- Added "Privacy Policy" link button
- Links to:
https://ebullioscopic.github.io/DynamicIsland/privacy-policy
OnboardingFinishView.swift
- Added "Privacy Policy" link button
User Profiles
🔧 Developer
For: Developers and programmers Enables:
- ✅ Color Picker
- ✅ Stats Monitoring
- ✅ Timer
- ✅ Screen Assistant
- ❌ Mirror (disabled)
- ❌ Minimalistic UI (disabled)
Note: Clipboard is always enabled for all profiles
🎨 Designer
For: Graphic designers and creatives Enables:
- ✅ Color Picker
- ✅ Mirror
- ✅ Lighting Effects
- ✅ Inline HUD
- ❌ Stats (disabled)
- ❌ Timer (disabled)
- ❌ Screen Assistant (disabled)
- ❌ Minimalistic UI (disabled)
Note: Clipboard is always enabled for all profiles
✨ Light Use
For: Minimal everyday use Enables:
- ✅ Minimalistic UI (simplified interface)
- ✅ Timer
- ❌ All other advanced features disabled
Note: Clipboard is always enabled for all profiles
📚 Student
For: Students and learners Enables:
- ✅ Timer
- ✅ Calendar
- ✅ Battery Monitoring
- ❌ Color Picker (disabled)
- ❌ Mirror (disabled)
- ❌ Stats (disabled)
- ❌ Screen Assistant (disabled)
- ❌ Minimalistic UI (disabled)
Note: Clipboard is always enabled for all profiles
Multi-Select Logic
- Users can select one or more profiles
- Settings use OR logic: If ANY selected profile enables a feature, it's enabled
- Exception: Minimalistic UI is only enabled if "Light Use" is selected AND no other profiles are selected
- Common settings (menubar icon, haptics) enabled for all profiles
Privacy Policy Integration
- Links added to Welcome and Finish screens
- Opens in default browser
- URL:
https://ebullioscopic.github.io/DynamicIsland/privacy-policy - Note: You need to create this page on GitHub Pages
Reset Script Usage
To test the onboarding flow fresh:
# Run the reset script
./reset_app_defaults.sh
# The script will:
# 1. Kill the app if running
# 2. Clear UserDefaults
# 3. Remove Application Support files
# 4. Remove caches
# 5. Remove preference files
# 6. Remove saved state
# Then launch the app
open -a DynamicIsland
Updated Onboarding Flow
New Flow:
- Welcome Screen (with Privacy Policy link)
- Camera Permission
- Calendar Permission
- Music Controller Selection
- ✨ Profile Selection (NEW!)
- Finish Screen (with Privacy Policy link)
Testing Checklist
- Profile cards display correctly
- Multi-select works (can select/deselect profiles)
- Cannot continue without selecting at least one profile
- Hover effects work on profile cards
- Settings are applied correctly for each profile combination
- Privacy Policy links open correct URL
- Reset script clears all app data
- Onboarding shows on fresh launch after reset
- Selected profile settings persist after closing onboarding
Profile Settings Matrix
| Setting | Developer | Designer | Light Use | Student | Always Enabled |
|---|---|---|---|---|---|
| Clipboard | ✅ | ✅ | ✅ | ✅ | YES |
| Minimalistic UI | OFF | OFF | ON | OFF | - |
| Color Picker | ON | ON | OFF | OFF | - |
| Mirror | OFF | ON | OFF | OFF | - |
| Stats | ON | OFF | OFF | OFF | - |
| Timer | ON | OFF | ON | ON | - |
| Screen Assistant | ON | OFF | OFF | OFF | - |
| Lighting Effects | - | ON | - | - | - |
| Inline HUD | - | ON | OFF | - | - |
| Calendar | - | - | - | ON | - |
Note: Clipboard Manager is always enabled regardless of profile selection.
Next Steps
-
Create GitHub Pages Privacy Policy:
- Create
docs/privacy-policy.mdin the repository - Enable GitHub Pages for the repo
- Add actual privacy policy content
- Create
-
Test All Profile Combinations:
- Single profiles (4 tests)
- Common combinations (Developer+Designer, etc.)
- All profiles selected
-
Verify Settings Integration:
- Check that disabled features don't appear in UI
- Verify minimalistic mode works correctly
- Test feature toggles in settings
Implementation Notes
- Profile selection is required (cannot skip)
- Settings are applied immediately when continuing
- Profile data is stored in UserDefaults
- Reset script is safe - only clears app-specific data
- All UI uses SwiftUI with proper transitions and animations