You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a470363
Browse filesBrowse the repository at this point in the historyBrowse files
feat: selectable sound themes with a preview picker
## Summary
Selectable sound themes. Each theme is a complete set covering every moment, so switching never leaves a gap by accident.
| Moment | Classic (default) | Glass | Wood | Singing bowl | Soft | Silent |
| --- | --- | --- | --- | --- | --- | --- |
| Start focus | E5→A5 chime | E6 ping | C–E–G marimba | C4 bowl | A5 blip | — |
| Finish focus | G5–E5–C5 bell | A6–E6–A5 pings | G–E–C–G…C phrase | two G3 strikes | 3 blips | — |
| Start break | chime | falling pings | falling E→C | low F3 strike | falling blips | — |
| Back to work | bell | rising pings | rising C–E–G–C | rising A3→D4 | rising blips | — |
| Pause / resume | — / chime | quiet low / high ping | soft G4 / C5 | — | tiny blips | — |
| Button tap | — | 3.2 kHz tick | woodblock | — | — | — |
Design rules applied:
- **Start and finish are easy to tell apart without looking**; finish is the most noticeable sound in every theme, since it pulls you back after 25 minutes.
- **Breaks get their own direction**: falling pitch to relax, rising pitch for back to work.
- **Soft attacks and a gain ceiling of 0.15**, so nothing startles mid-focus; "Soft" stays at about a third of that for shared spaces.
- **Taps are near-subliminal**, play on any button or link, and are skipped on timer buttons that already make their own sound (`data-own-sound`).
- **Classic reproduces today's sounds exactly**, including silent pause and taps, so nothing changes for existing users.
- All sounds are synthesized with Web Audio: no audio files, nothing to license.
**Menu → Settings → Sounds** opens a picker styled like the shortcuts panel: a radio card per theme with a one-line character description and a preview chip for every moment (moments a theme keeps silent are struck through). Choosing a theme plays its start sound; the choice is stored in `localStorage`.
## Testing
- Lint, typecheck, unit tests and build pass.
- Instrumented `OscillatorNode.start` in the browser with Wood selected: a nav button plays the woodblock tap; Start Focus plays only the C–E–G phrase (no extra tap); Pause plays G4; Resume plays C5; the session end plays the finish phrase.
- Picker renders all six themes, previews play, and the selection persists.
Copy file name to clipboardExpand all lines: README.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,6 +20,7 @@ Runs as a web app or as a browser extension, and keeps every bit of data in your
20
20
21
21
-**Focus timer** with pause, resume, breaks, extend-on-complete and goal history (press <kbd>↑</kbd>/<kbd>↓</kbd> in the goal field).
22
22
-**Notifications** when a focus session or break runs out. The app asks for permission with Chrome's own prompt the first time you open it; **Menu → Settings → Notifications** shows the current state and asks again if you dismissed the prompt. If nothing appears, allow notifications for your browser in your system settings and turn off Do Not Disturb / Focus.
23
+
-**Sound themes**: Classic (default), Glass, Wood, Singing bowl, Soft or Silent, each covering start, finish, break, back to work, pause, resume and button taps. Preview and pick them in **Menu → Settings → Sounds**. All sounds are synthesized in the browser.
23
24
-**Pixel-art progress animations** — a coffee cup that fills, a battery that charges, a rocket that lifts off — plus an auto-shuffle option.
24
25
-**To-dos** with time estimates, notes, drag-and-drop ordering, a backlog and archive; start a focus session straight from a to-do.
25
26
-**Habits** with 7- and 30-day grids and notes per day.
0 commit comments