# Brew Timer / Multi-timer ![[coffee-setup.jpeg]] A multi-timer designed to get your attention when brewing pour-over coffee, but potentially has other uses. ## Features - [x] Set multiple timers that build on each other - timer keeps running! - [x] Each time a timer goes off we should get some audio - Remember my settings on a device - Very quick to go from zero to starting a timer - Needs to have as little friction as using "stopwatch" on my phone or I'll just use that - Ideally, we might want to wrap this webapp in a native wrapper, deploy to the app store, and set up a homescreen shortcut - That _might_ be something it's hard to pull off in replit, so we'll start with the webapp ## 2023-03-30 - [x] Make sure the sound plays right at the appropriate time - [x] Show time in min:sec format in the timers - [x] Have the sound continue until dismissed - [ ] Sort the timers in ascending order - we are using `bind:value` to update the timer's `time` field, but that update happens while editing is happening. - If we re-draw the list while editing, it swaps out the input field from underneath us. - we will need to move to calling a function to update the timer's `time` field and execute that function `on:blur` or when `on:keypress` when return is pressed, or something like that. - [x] Get prettier and eslint working in replit - They're running on-demand using `npm run lint` and `npm run format` - [ ] Style it up - [ ] Show which timers have already elapsed - [ ] Turn stop into Pause and, when paused, change Start to Resume and Pause to Clear - [ ] BUG: When changing the time for a timer and the timer is running, may need to reset the elapsed status - We will need to call a function when the timer value updates so that we can reset `elapsed` and `acknowledged` - [x] BUG: Adding a new timer when the largest timer has a decimal point causes string addition - Improve the UX on mobile - [ ] Show the numeral keypad instead of the letters - [ ] Make it "dismiss" on "return" (maybe even rename the return key) - [ ] Lock the zoom to prevent accidental zooms - [ ] Look into a bounty to create an iOS wrapper ## 2023-03-22 - [x] Timer on the screen counting up from zero - [x] Start the timer when we click a button - [x] Stop the timer when we click another button - [x] Play a sound when the timer hits a certain point - [x] Create a new timer - [x] Play a sound when any timer expires - [x] Remove an existing timer - [x] Update the time of an existing timer