Skip to content

feat: Focus mode — landscape flip clock + Pomodoro - #1

Merged
eddiegulay merged 1 commit into
mainfrom
develop
Jun 28, 2026
Merged

feat: Focus mode — landscape flip clock + Pomodoro#1
eddiegulay merged 1 commit into
mainfrom
develop

Conversation

@eddiegulay

Copy link
Copy Markdown
Owner

Summary

Adds Focus mode: a full-screen, landscape flip clock that doubles as a Pomodoro timer, reached deliberately by long-pressing the Home clock.

Access

  • Long-press the Home clock → confirmation dialog (FocusConfirmDialog, styled like BlockConfirmDialog) → enters Focus.
  • On enter, the Activity locks to landscape and hides the system bars; Back or the HOME key returns to a clean Home and restores the previous orientation (handled via a DisposableEffect and resetToHome()).

Inside Focus

Mode Tap Long-press
Clock toggle seconds → Pomodoro
Pomodoro start / pause → Clock
  • Flip clock: split-flap FlipClock/FlipDigit cards in the sumi-e style; HH:MM with a tap-to-reveal seconds, driven by a new rememberSecondTime() ticker.
  • Pomodoro: 25 min focus / 5 min short break / 15 min long break (every 4th focus), with reset/skip, four cycle dots, and a kanji phase label (集中 / 休憩 / 長休憩). Auto-pauses between phases.

Implementation notes

  • New Screen.Focus value; rendered full-bleed outside the dock layer in TempoApp.kt.
  • Navigation + confirmation state added to LauncherViewModel (requestFocus/confirmFocus/cancelFocus/goFocus).
  • Home clock long-press uses pointerInput/detectTapGestures (no ripple) plus an accessibility onLongClick label.

Verification

  • ./gradlew assembleDebug lintDebug testDebugUnitTest — all green locally (mirrors CI).
  • Changelog updated with a ## [0.0.7] section for the release notes.

Out of scope (v1)

Configurable durations, persisting the Pomodoro across app death, sound/notification on phase end, keeping the timer alive while backgrounded.

Long-pressing the Home clock confirms into a full-screen, landscape
flip clock that hides the system bars. A tap toggles seconds; a
long-press switches between the plain clock and a 25/5/15 Pomodoro
timer with start/pause, reset, skip, and a kanji phase label.

- New Screen.Focus, rendered outside the dock layer, with orientation
  and immersive bars locked/restored via a DisposableEffect.
- FlipClock/FlipDigit split-flap digits; rememberSecondTime() ticker.
- FocusConfirmDialog gate, matching the BlockConfirmDialog style.
@eddiegulay
eddiegulay merged commit 008806b into main Jun 28, 2026
1 check passed
@eddiegulay
eddiegulay deleted the develop branch June 28, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant