diff --git a/replica/uhr/features.csv b/replica/uhr/features.csv new file mode 100644 index 0000000..dfa3574 --- /dev/null +++ b/replica/uhr/features.csv @@ -0,0 +1,57 @@ +feature,area,priority,original,clone,notes +Alarm list with on/off switch and next-ring text,alarm,must,yes,no, +Add alarm with time picker (dial and keyboard),alarm,must,yes,no, +Expandable alarm card (edit in place),alarm,must,yes,no, +Repeat days chips,alarm,must,yes,no, +Alarm label,alarm,must,yes,no, +Delete alarm with undo,alarm,must,yes,no, +Vibrate toggle,alarm,must,yes,no, +Alarm sound picker with preview (system ringtones),alarm,must,yes,no, +Own audio file as alarm sound,alarm,should,yes,no, +Pause alarm until date,alarm,should,yes,no, +Skip next occurrence (dismiss early),alarm,should,yes,no,from notification +Exact scheduling that survives reboot time change and Doze,alarm,must,yes,no,AlarmManager.setAlarmClock +Full-screen ringing screen over lock screen,ringing,must,yes,no, +Slide control snooze/stop,ringing,must,yes,no, +Snooze length setting,settings,must,yes,no, +Silence after setting,settings,must,yes,no, +Gradually increase volume,settings,should,yes,no, +Alarm volume setting,settings,should,yes,no, +Volume buttons behaviour (snooze/stop/volume/none),settings,should,yes,no, +Start week on,settings,could,yes,no, +Upcoming alarm notification with dismiss now,notifications,should,yes,no, +Missed alarm notification,notifications,should,yes,no, +Snoozed notification with dismiss,notifications,must,yes,no, +World clock: local time and date,clock,must,yes,no, +World clock: add city via search,clock,must,yes,no, +World clock: reorder and swipe to delete,clock,should,yes,no, +Analog or digital clock style,clock,should,yes,no, +Show seconds,clock,could,yes,no, +Automatic home clock when travelling,clock,could,yes,no, +Timer keypad h m s,timer,must,yes,no, +Run several timers at once,timer,must,yes,no, +Timer ring progress +1:00 pause reset delete,timer,must,yes,no, +Timer labels,timer,could,yes,no, +Timer runs in background with notification,timer,must,yes,no, +Timer ringing screen,timer,must,yes,no, +Timer sound and vibrate settings,settings,should,yes,no, +Stopwatch start stop reset,stopwatch,must,yes,no, +Stopwatch laps,stopwatch,must,yes,no, +Stopwatch running notification,stopwatch,should,yes,no, +Bedtime schedule with wake-up alarm,bedtime,should,yes,no, +Bedtime reminder notification,bedtime,should,yes,no, +Sunrise alarm (brightening screen),bedtime,could,yes,no, +Sleep sounds with timer,bedtime,could,yes,no,own CC0 sounds +Screensaver / bedside clock with night mode,display,could,yes,no,DreamService +Digital clock widget,widgets,must,yes,no, +Analog clock widget,widgets,should,yes,no, +World clock widget,widgets,could,yes,no, +Next alarm widget,widgets,should,yes,no, +Widget style options (theme colours opacity),widgets,should,yes,no,like Wetter +Theme system/light/dark and dynamic colour,display,must,yes,no, +Expressive design (bottom bar pill cards shapes),display,must,yes,no, +Streaming alarm sounds (YouTube Music Spotify Calm),alarm,could,yes,skip,partner accounts +Google Assistant Routine,alarm,could,yes,skip,Google service +Bedtime mode greyscale and DND,bedtime,could,yes,skip,Digital Wellbeing privileges +Sleep tracking cough and snore,bedtime,could,yes,skip,system privileges + Pixel hardware +Calendar upcoming events card,bedtime,could,yes,skip,Google Calendar diff --git a/replica/uhr/recon.md b/replica/uhr/recon.md new file mode 100644 index 0000000..668f2ef --- /dev/null +++ b/replica/uhr/recon.md @@ -0,0 +1,141 @@ +# Recon map: Google Clock / Pixel Clock (Android) + +Scope: the whole app: alarms, world clock, timer, stopwatch, bedtime, alarm ringing screen, settings, screensaver, home-screen widgets +For: personal use, a clock and alarm app without Google services (project NoGooleApps) +Date: 2026-10-17 + +## Sources + +| # | source | URL | notes | +| --- | --- | --- | --- | +| 1 | help center | https://support.google.com/clock/?hl=en | full settings list (alarms, time and date, display), world clock, timer, widget | +| 2 | help center | https://support.google.com/clock/answer/9887159?hl=en | bedtime schedule, reminder, bedtime mode, sunrise alarm, sleep sounds | +| 3 | review | https://www.slashgear.com/1540180/android-clock-app-features-you-dont-know | sounds, pause alarm, volume buttons, snooze range, alarm duration, screensaver | +| 4 | app store listing | https://play.google.com/store/apps/details?id=com.google.android.deskclock | pitch only, no screenshots saved | +| 5 | screenshots | replica/uhr/screens/ref-01..07.png | supplied by user: alarm list (dark), world clock + settings, timer/alarm expanded/alarm sound, missed-alarm notification, ringing screen, launcher icon, stopwatch. Reference only, never shipped | + +## Core loop + +Set an alarm in a few taps and be woken reliably at that time, every time, even with battery saver and Do Not Disturb. + +## Screens + +| ID | screen | route / how to reach | purpose | key components | states seen | +| --- | --- | --- | --- | --- | --- | +| S01 | Alarm list | tab "Alarm" (default) | all alarms, on/off | top bar + overflow, alarm cards (label, big time + AM/PM, next-ring text, switch, expand chevron), FAB "+" | empty, filled, alarm off (dimmed time), section headers ("Wake up" = bedtime alarm, "Other") (ref-01, ref-03) | +| S02 | Alarm expanded | tap a card | edit one alarm in place | label field, time, day chips S M T W T F S, switch, rows: pause alarm, sound, vibrate, delete | expanded (ref-03) | +| S03 | Time picker | tap time / FAB | pick hour and minute | M3 clock dial / keyboard input toggle | dial, input | +| S04 | Alarm sound | S02 → sound row | choose ringtone | tabs (sounds; streaming partners in original), list with play preview, "add new" (own file) | playing, selected (ref-03) | +| S05 | Pause alarm | S02 → pause row | skip until a date | date picker | | +| S06 | Clock (world clock) | tab "Clock" | local time + cities | big time with seconds option, date, next alarm, weather line, city cards (name, day offset, time) , FAB add | one city, many (ref-02) | +| S07 | Add city | S06 FAB | search a city | search field, result list | empty, results | +| S08 | Timer | tab "Timer" | set and run timers | keypad (h m s) + start; running cards: label, ring progress, remaining, +1:00, pause/play, reset, delete; FAB add | idle keypad, running, paused, ringing, several timers (ref-03) | +| S09 | Stopwatch | tab "Stopwatch" | measure time, laps | big 00:00.00, buttons start/stop, reset, lap (large pill buttons), lap list | idle, running, stopped, laps (ref-07) | +| S10 | Bedtime | tab "Bedtime" | sleep schedule | first-run "get started", bedtime + wake-up times, days, sleep duration, reminder, sunrise alarm, sleep sounds | empty, set | +| S11 | Alarm ringing | full screen when an alarm fires | snooze or stop | big time, label, swipe/slide control "Snooze ← ⏰ → Stop", optional weather after stop | ringing, snoozed (ref-05) | +| S12 | Timer ringing | full screen / notification | stop or +1:00 | | | +| S13 | Settings | overflow → Settings | alarm, time, display settings | rows (silence after, snooze length, alarm volume, gradually increase volume, volume buttons, start week on, home time zone, automatic home clock, style analog/digital, seconds, night mode, timer sound/vibrate) | (ref-02) | +| S14 | Screensaver / bedside | overflow → Screensaver; system dream | dim clock on dark screen | analog/digital clock, night mode (red, dim) | day, night | +| S15 | Notifications | system | upcoming alarm (dismiss early), snoozed, missed alarm, running timer/stopwatch | notification actions | missed (ref-04) | +| S16 | Widgets | launcher | time on home screen | digital, analog, world clock list, next alarm | sizes | +| S17 | Lock-screen / quick settings tile | system | next alarm, start timer | | guess | + +## Flows + +``` +F01 Set a new alarm + S01 -> FAB -> S03 pick time -> OK -> S01 (new card, "in 7 h 12 min" toast) + happy path clicks: 3 (FAB, dial hour+minute, OK) + edge: same time exists, exact-alarm permission revoked, notifications off, battery saver + +F02 Make an alarm repeat on weekdays and name it + S01 -> tap card -> S02 -> tap 5 day chips -> label -> collapse + happy path clicks: 8 + +F03 Wake up + S11 rings -> snooze (slide left) -> rings again after 10 min -> stop (slide right) + edge: volume buttons set to snooze/stop, phone locked, DND, silent mode, reboot before alarm + +F04 Skip tomorrow's alarm + S15 "upcoming alarm" notification -> "Dismiss now" or S02 -> pause until date (S05) + +F05 Run a timer + S08 keypad 5 0 0 -> start -> running card -> +1:00 -> rings (S12) -> stop + happy path clicks: 4 + edge: app closed, several timers at once, timer ends while screen off + +F06 Measure laps + S09 start -> lap ×n -> stop -> reset + +F07 Add a world clock + S06 -> FAB -> S07 search -> tap city -> S06 + edge: reorder by long press, delete by swipe + +F08 Set a bedtime schedule + S10 get started -> wake-up time + days -> bedtime -> reminder -> done (creates the "Wake up" alarm in S01) + +F09 Change alarm sound + S02 -> sound -> S04 -> preview -> select / add own file +``` + +## Components + +| component | variants | states | used on | +| --- | --- | --- | --- | +| Bottom navigation bar | 5 destinations with pill indicator | selected, unselected | all tabs | +| Top app bar | title + overflow menu | | all tabs | +| Alarm card | collapsed, expanded | on, off (dim), ringing soon, snoozed | S01, S02 | +| Big time text | alarm (56sp bold + small AM/PM), clock (very large), stopwatch (mono digits), ringing (huge) | | S01, S06, S09, S11 | +| Switch | M3 with thumb | on, off | S01, S02, S13 | +| Day chips | 7 round chips | selected (filled), unselected (outline) | S02, S10 | +| Settings row | icon + text + trailing (plus, check, chevron) | | S02 | +| FAB | large round "+" | | S01, S06, S08 | +| Timer card | ring progress, time, +1:00 pill, play/pause big pill, close | running, paused, ringing | S08 | +| Keypad | 0-9, 00, backspace, display h m s | empty, typing | S08 | +| Big pill buttons | primary (start/stop), secondary (reset, lap) | | S09, S08 | +| City card | name, offset text, time | dragging, swiping | S06 | +| Slide-to-act control | snooze ← → stop | idle, dragging | S11 | +| Time picker | dial, input | | S03, S10 | +| Notification | upcoming, snoozed, missed, timer running, stopwatch running | | S15 | +| Analog clock face | own design | | S06, S14, S16 | + +## Inferred data model + +``` +Alarm id, hour, minute, enabled, days (bitmask Mon..Sun), label, ringtone_uri, vibrate, + snooze_until (nullable), skip_until_date (pause), is_bedtime_wake, created_at + evidence: S01, S02, help "Set, cancel, or snooze alarms" confidence: high +AlarmInstance alarm_id, fire_at (UTC instant), state (scheduled | snoozed | ringing | missed | dismissed) + evidence: S11, S15 notifications confidence: medium (needed for snooze/missed) +Timer id, label, duration_ms, remaining_ms, state (idle | running | paused | ringing), end_at, created_at + evidence: S08 cards confidence: high +Stopwatch state, started_at, accumulated_ms, laps[] (lap_ms, total_ms) + evidence: S09 confidence: high (single instance) +City id, name, country, timezone, sort_order + evidence: S06, S07 confidence: high +Bedtime enabled, bed_hour, bed_minute, wake_alarm_id, days, reminder_minutes, sunrise (bool), sleep_sound + evidence: S10, help "Set a bedtime schedule" confidence: high +Settings silence_after_min, snooze_min, alarm_volume, gradual_volume_s, volume_buttons (snooze|stop|volume|none), + week_start, home_timezone, auto_home_clock, clock_style (analog|digital), show_seconds, + timer_sound, timer_vibrate, night_mode, theme + evidence: S13 confidence: high +``` + +Relationships: Alarm 1-n AlarmInstance, Bedtime 1-1 Alarm (wake-up). No accounts. + +## Feature matrix + +See `features.csv`. Must: 26, should: 17, could: 8, skip: 5. + +## Out of scope (cannot or should not be cloned) + +- Streaming alarm sounds (YouTube Music, Spotify, Pandora, Calm): partner deals and accounts. Own audio files from the device replace them. +- Google Assistant Routines: Google service. +- Bedtime mode (silence + greyscale), sleep tracking, cough/snore detection, recent bedtime activity: Digital Wellbeing and system privileges, not available to normal apps. +- Calendar "upcoming events" card: needs Google Calendar; could later read the local calendar provider. +- Weather after the alarm: possible later via the Wetter app's data, not part of the first build. +- Google's clock face, ringtones and icons: own designs and own/CC0 sounds. + +## Size + +Screens 17, flows 9, entities 7. Hard parts: (1) reliable alarms (exact alarms, full-screen intent, Doze, reboot, time zone and DST changes), (2) timer and stopwatch running correctly in the background with live notifications, (3) the expressive UI (expanding cards, ring progress, slide-to-act) and widgets. Size: M. diff --git a/replica/uhr/screens/ref-01.png b/replica/uhr/screens/ref-01.png new file mode 100644 index 0000000..b4a089c Binary files /dev/null and b/replica/uhr/screens/ref-01.png differ diff --git a/replica/uhr/screens/ref-02.png b/replica/uhr/screens/ref-02.png new file mode 100644 index 0000000..4e1ac5c Binary files /dev/null and b/replica/uhr/screens/ref-02.png differ diff --git a/replica/uhr/screens/ref-03.png b/replica/uhr/screens/ref-03.png new file mode 100644 index 0000000..2be3a28 Binary files /dev/null and b/replica/uhr/screens/ref-03.png differ diff --git a/replica/uhr/screens/ref-04.png b/replica/uhr/screens/ref-04.png new file mode 100644 index 0000000..e06c464 Binary files /dev/null and b/replica/uhr/screens/ref-04.png differ diff --git a/replica/uhr/screens/ref-05.png b/replica/uhr/screens/ref-05.png new file mode 100644 index 0000000..c312868 Binary files /dev/null and b/replica/uhr/screens/ref-05.png differ diff --git a/replica/uhr/screens/ref-06.png b/replica/uhr/screens/ref-06.png new file mode 100644 index 0000000..2c308ec Binary files /dev/null and b/replica/uhr/screens/ref-06.png differ diff --git a/replica/uhr/screens/ref-07.png b/replica/uhr/screens/ref-07.png new file mode 100644 index 0000000..4216755 Binary files /dev/null and b/replica/uhr/screens/ref-07.png differ