The overlayOpacity setting was being saved but not used. The TopOverlayView was incorrectly using clockOpacity instead of overlayOpacity, causing the "Overlay Opacity" slider in settings to have no effect. Changed ClockOverlayContainer to pass style.overlayOpacity to TopOverlayView, enabling independent control of overlay opacity separate from clock digit opacity. Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> |
||
|---|---|---|
| AudioPlaybackKit | ||
| TheNoiseClock | ||
| TheNoiseClock.xcodeproj | ||
| TheNoiseClock.xcworkspace | ||
| TheNoiseClockTests | ||
| TheNoiseClockUITests | ||
| .gitignore | ||
| AGENTS.md | ||
| AUDIO_MANAGEMENT_GUIDE.md | ||
| PRD.md | ||
| README.md | ||
TheNoiseClock
TheNoiseClock is a SwiftUI iOS app that blends a bold, full-screen digital clock with white noise playback and a rich alarm system. It is optimized for iOS 18+ with Swift 6, built on a modular architecture, and styled with the Bedrock design system.
App Store Information
App Name
TheNoiseClock
Subtitle (30 chars max)
Clock, noise, and alarms
Promotional Text (170 chars max)
A clean, full-screen clock with ambient soundscapes and a powerful alarm editor. Customize colors, fonts, and glow for a distraction-free display.
Keywords (100 chars max)
clock,alarm,white noise,ambient,sleep,timer,focus,night mode,bedside
Description
TheNoiseClock is a distraction-free digital clock with built-in white noise and a fully featured alarm system. Designed for late-night focus, bedside use, and calm environments, it fills the screen with bold, stable digits and lets you tune the look and sound to your space.
Clock
- Full-screen, orientation-aware clock with optional seconds and AM/PM
- Fixed-width digits prevent layout "jumping"
- Auto-fit sizing and manual scale control
- Custom fonts, weights, and designs with live preview
- Glow and opacity controls for low-light comfort
- Clock tab hides the status bar for a distraction-free display
- Selectable animation styles: None, Spring, Bounce, and Glitch
- Modern iOS 18+ animations: numeric transitions, phase-based bounces, glitch effects, and breathing colons
White Noise
- Multiple ambient categories and curated sound packs
- Seamless looping with background audio support
- Quick preview on long-press, instant play/stop controls
Alarms
- Unlimited alarms with labels, repeat schedules, and snooze options
- Alarm sound library with preview
- Vibration and volume controls per alarm
- Focus-mode aware scheduling
Display Mode
- Long-press to enter immersive display mode
- Auto-hides navigation and status bar
- Optional wake-lock to keep the screen on
What's New
- Branded launch experience with Bedrock theming
- Redesigned settings interface with cards, toggles, and sliders
- Centralized build identifiers via xcconfig
Features
- Real-time digital clock with full customization
- Full-screen display mode and Dynamic Island awareness
- White noise playback with categories and previews
- Rich alarm editor with scheduling and snooze controls
- Bedrock-based theming and branded launch
- iPhone and iPad support with adaptive layouts
Requirements
- iOS 18.0+
- Xcode 16+
- Swift 6
Build & Run
Open TheNoiseClock.xcodeproj and run the TheNoiseClock scheme.
Terminal Build
cd /Users/mattbruce/Documents/Projects/iPhone/TheNoiseClock
xcodebuild -project TheNoiseClock/TheNoiseClock.xcodeproj -scheme TheNoiseClock -destination 'platform=iOS Simulator,name=iPad mini (A17 Pro),OS=18.1' build
Branding & Theming
The app uses Bedrock for theme tokens, settings UI, and the launch experience.
- Theme:
TheNoiseClock/Shared/Design/NoiseClockTheme.swift - Branding config:
TheNoiseClock/Shared/Design/BrandingConfig.swift - Launch screen:
TheNoiseClock/Resources/LaunchScreen.storyboard
To generate an app icon in DEBUG:
- Open Clock Settings -> Debug
- Tap Icon Generator
- Export
AppIcon.pngand drop it intoAssets.xcassets/AppIcon
Build Configuration (xcconfig)
Identifiers are centralized in xcconfig files:
TheNoiseClock/Configuration/Base.xcconfigTheNoiseClock/Configuration/Debug.xcconfigTheNoiseClock/Configuration/Release.xcconfig
Update COMPANY_IDENTIFIER and DEVELOPMENT_TEAM in Base.xcconfig to migrate to a new account.
Swift access is provided via:
TheNoiseClock/Configuration/AppIdentifiers.swift
Architecture
TheNoiseClock follows a clean, modular structure:
TheNoiseClock/
├── AudioPlaybackKit/ # Reusable audio package
├── TheNoiseClock/ # Main app target
│ ├── App/ # App entry, TabView
│ ├── Configuration/ # xcconfig + AppIdentifiers
│ ├── Features/ # Clock, Alarms, Noise
│ ├── Shared/ # Theme, branding, utilities
│ └── Resources/ # Bundles, JSON, assets
└── TheNoiseClock.xcodeproj/
Support & Contact
For feedback, feature requests, or support: support@thenoiseclock.app