mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
184 lines
5.3 KiB
Markdown
184 lines
5.3 KiB
Markdown
# 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 `profileSelection` step to `OnboardingStep` enum
|
|
- Integrated `ProfileSelectionView` before 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:
|
|
|
|
```bash
|
|
# 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**:
|
|
1. Welcome Screen (with Privacy Policy link)
|
|
2. Camera Permission
|
|
3. Calendar Permission
|
|
4. Music Controller Selection
|
|
5. **✨ Profile Selection** (NEW!)
|
|
6. 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
|
|
|
|
1. **Create GitHub Pages Privacy Policy**:
|
|
- Create `docs/privacy-policy.md` in the repository
|
|
- Enable GitHub Pages for the repo
|
|
- Add actual privacy policy content
|
|
|
|
2. **Test All Profile Combinations**:
|
|
- Single profiles (4 tests)
|
|
- Common combinations (Developer+Designer, etc.)
|
|
- All profiles selected
|
|
|
|
3. **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
|