-
Notifications
You must be signed in to change notification settings - Fork 0
/
next.txt
111 lines (107 loc) · 5.1 KB
/
next.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Done:
Move everything to /serve directory for later cleanup.
Move copyright to serve dir
Note field.
Note field should actually be title field.
Next:
Add selenium test.
Interface for setting audio etc. looks kinda garbo
Why doesn't timer ring when window is not focused/interacted with on Edge, even with "autoplay" turned on?
Add checkbox for "stop playing after one cycle"
Make checkbox part of saveable url
Make title part of saveable url
More sounds somehow
Jellyfin integration
YouTube integration
Point to any exposed mp3/whatever file on the internet
Add error message for if user opens url for running timer and does not have autoplay enabled.
Proper e2e testing
Some kind of configurable interface with a "sound server" idk
Add sound rename sound should drop the .ogg/.mp3/whatever by default.
And any leading numbers, artist name, album name if present in .mp3 metadata.
Add "choose random" sound.
This is a static site ("web app"). Route /server/ dir through nginx instead of custom node.js server.
Problem is I don't want to set up nginx instances locally. Or maybe that's easy? nginx -c local.conf
Remove .ogg from git; replace with .wav.
I'm using git for both deployment and versioning; that's bad
FIX THE URL PARAMS THING
make the page pretty
ribbon along bottom: current time, copyright, github link
ribbon along top: home > webtimer
make timer edit boxes expand if there's a ton of text in them
center, larger text
Make error messages nice (not just alerts)
Put the sound managment stuff in a dialogue or box or something
colors?
get T's feedback
ribbon?
instead of zero-padded two digits display, just one digit?
make minutes, seconds, hours singular as appropriate
remove console.log stuff again
add sound bird song, bugs/meadow noise
warn user on making a url for state=ringing that autoplay may be forbidden
CentOS best practices email
Forbid .. "directory traversal attack"
non-reused password
Run tests:
With debug flag
Start new window with no database. Expect "Upgrade needed", "Creating store"
compress that horrible long WET state test
duplicate sounds names are apparently permitted somehow? E.g. add "Alarm (digital)". weird.
Add button to copy url for timer
Add button to "copy url for running timer"
More sensible tab behavior for note field, somehow? idk how to make things better.
Later:
Hook up with music server/spotify somehow so people can have easier choice for playing music than just "upload everything manually". Maybe also allow fetching mp3s from the web?
don't be a purist. Just use mp3s. I'm sorry, ogg...
misc. accessibility?
aria roles - label button-start-pause as switch functionality.
option to clear indexedDB all at once
tests
all state transitions:
wait_for_entry -> running
running -> wait_for_entry
running -> paused
running -> ringing
etc.
add a sound
remove a sound
automated unit testing
Test cross platform
fail gracefully on Safari wrt indexeddb
looks bad on older firefox I guess?
apple?
android!!!
chromium, chrome
do browsers honor preload requirements?
Maybe:
for testState() e2e test, consider checking that timeLeft decreases monotonically through button clicks and does not get "reset" at any point.
convert to typescript
Persist discarded default sounds.
Add button to reset discarded default sounds
preserve order across page loads
option to reorder/rename the sounds
show less sounds initially? A little overwhelming.
handle when people add songs in multiple tabs (should propogate, or at least raise appropriate alert/error)
handle having indexedDB open in multiple tabs with version update
lazy loading for audio files in indexeddb
Multiple timers
Button add a timer
Button delete a timer
Long term alarms
Save alarms for next time (local storage or whatevs)
Animations
"Rebuild" static pages via python script or something
Flask templating?
Names of sounds, for example.
Tick speed is slightly imprecise. Occasionally, clock will appear to double a tick or skip a tick. Consider fixing that (heavy machinery):
Optimal solution is probably to tick once per second, centered on the half second mark, with a negative feedback loop to fps-style adjust sleep time to remain there.
Almost certainly not worth the effort.
Proper solution for detecting when the user is trying to change the inputs for the anything->wait_for_input state change.
Specifically, we now listen specifically for digit keypresses and delete or backspace keydowns.
But you can change the timer other ways! E.g. pasting. So it would be best to listen for true changes. For every keydown, record the state of the entry. Then when keyup, if entry.value is different, we know the user is inputing something somehow, and we should pause.
test debian copyright notice (get linter?)
handle when quota is exceeded
can't trigger the error; ignore for now
why am I mucking around with firing events e.g. comboSounds.selectedIndex = 12; comboSounds.disaptchEvent("change");. Waste of code. Just call onComboSoundsChange directly.
rename "wait-for-entry" something descriptive