-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.todo
259 lines (201 loc) · 8.92 KB
/
.todo
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
Countdown:
0.1.0 — Countdown and basic presets:
+ Basic countdown in seconds
+ Show minutes and seconds
+ Style
+ fix: Show Settings smoothly
+ fix: Remove leading zero when < 10 sec
+ fix: Autoclose Settings
+ feat: Change bg when time is over
+ fix: Close Settings on click outside
+ refactor: Store autoclose timeout in App
+ fix: Break time over text on xs screens
+ fix: Hide timer behind settings
+ fix: Don't autoclose settings, if there was interaction
0.2.0 — Customize duration (in seconds) via URL query:
+ chore: Autoupdate lockfile to v2
+ docs: Plan 0.2.0 changes
+ chore: Update project name
+ chore: Autobump vulnerable dependencies
+ chore: Setup ESLint Airbnb base config
+ style: Fix linting errors
+ feat: Accept seconds via URL query
+ fix: Limit accepted time by 45 minutes
+ refactor: Separate contexts
+ chore: Bump project version
0.2.1 — Upgrade to React 18:
Separate config and timer contexts
Move query and timer effects to custom hooks
Upgrade to React 18
+ refactor: Use SidebarContext to avoid ambiguity
It is indented to work with settings sidebar in UI.
However, its previous name (SettingsContext) led to misinterpretation —
this context was seen as a suitable place for app configs, when it isn't.
+ refactor: Use ConfigContext to provide app configs
+ refactor: Separate timer effects to custom hooks
+ chore: Upgrade to React 18
+ chore: Update CRA-related packages and React Spring
Generate new CRA project, copy files, adjust package.json.
0.2.2 — Sort out project dependencies:
+ docs: Add scope for 0.2.2
+ style: Use .jsx for files with heavy JSX usage
If you need JSX syntax for context providers only, feel free to use .js extension for such files.
+ chore: Remove unused Fade.jsx and Rotate.jsx
+ chore: Omit build tools from NPM audit
Use `npm audit --omit=dev` or custom `npm run audit`.
https://github.com/facebook/create-react-app/issues/11174
+ chore: Use Sass, not deprecated vulnerable Node Sass
Node Sass developers deprecate it and recommend moving to Dart Sass,
which was renamed to Sass. Source: https://sass-lang.com/blog/libsass-is-deprecated
+ style: Mark CSS pseudo-elements with double colons ::
+ chore: Remove commented out CSS
+ chore: Move testing library packages to devDependencies
+ chore: Bump project version to 0.2.2
0.2.3 — Protect against invalid input via URL query:
+ refactor: Move presets to hardcoded array
+ fix(SettingsButton): Accept 1s as minimum duration
+ refactor: Simplify name for useTimerEffect
+ fix(useTimerEffect): Stop timer if provided duration is less than 1s
+ refactor: Encapsulate logic for changing timer value
+ style: Allow nested ternary operators
+ fix(timerReducer): Protect from invalid action payload
+ refactor: Simplify name for useQueryInputEffect
+ chore: Leave only 5 and 10 minute presets
+ refactor: Remove maximum duration limit from config
+ fix: Redirect to URL with proper query if limit is exceeded
+ refactor: DRY minimum/maximum checks
+ refactor(timerReducer): Write obvious conditions
+ style: Break down object property list by lines
+ refactor: Move timer stuff to features/timer
+ refactor: Move settings stuff to features/settings
+ refactor: Finalize project organization by features
+ refactor: Separate timer stuff by files
+ feat: Warn user about duration limits
+ refactor(timer): Unify setting/clearing timeouts
+ refactor: Rename setTime to setDuration
+ chore: Bump project version to 0.2.3
0.2.4 — Style TimerAlert text:
+ fix(TimerAlert): Add spacing and centralize text
+ fix(TimerAlert): Break by new line
+ chore: Bump project version to 0.2.4
0.3.0 — Customize preset durations via local storage:
+ feat: Accept presets via localStorage
Title and duration in _seconds_ only.
Add to default presets
5 min break (dark blue / yellow)
10 min break (dark blue / yellow)
+ chore: Bump project version to 0.3.0
0.4.0 — Export/import presets via JSON:
+ refactor: Use SettingsButton for non-preset items
+ feat: Export presets to JSON file
[{"title":"5 мин","duration":300},{"title":"10 мин","duration":600},{"title":"15 мин","duration":900},{"title":"25 мин","duration":1500}]
+ refactor: Separate ExportButton to own file
+ refactor: Separate closeSidebar function
+ refactor: Separate isInverted to TimerContext
+ fix: Keep settings open unless closed manually
+ feat: Import presets from JSON file
+ docs: Add instructions to README
+ chore: Bump project version to 0.4.0
0.5.0:
+ feat: Accept minutes via URL query parameters
Артём Бахарев: Было бы круто иметь возможность написать m=7
+ docs: Update README
+ chore: Bump project version to 0.5.0
0.5.1:
+ fix: Update branding
0.5.2:
- refactor: Add Typescript?
1.0.0:
- feat: Share countdowns
- chore: Bump project version to 1.0.0
1.0.1:
- feat: Add ?boom query parameter to finish with explosion?
0.4.x:
- fix: Stop extra rerenders for Settings and SettingsButton
- fix: Render feedback message conditionally but avoid jumping via CSS @low
- fix(SettingsButton): Limit height by one line
- ? style: Use arrow functions saved to const instead of function definitions
Settings.jsx
- fix(SettingsButton): Do not select text on touch
Fix bug on touch screens — tap on button leads to text controls (copy/select) appearing.
- feat: Occupy full screen with Settings
- fix: Leave error message when closing Settings sidebar
Closing Settings sidebar hides error message immediately
- refactor: Simplify second-ms conversions
x fix: Avoid text overlap on mobile screens:
https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
https://github.com/w3c/csswg-drafts/issues/4329
- feat Fullscreen (Юра)
0.3.x — Feature driven development:
+ research
GitHub experience
production - toggle flags via query string
development - toggle from command line
automated tests - toggle in code
CI - one build with all flags disabled, another with all flags enabled
https://github.blog/2021-04-27-ship-code-faster-safer-feature-flags/
Feature flag driven development
https://featureflags.io
Post by Pete Hodgson
https://martinfowler.com/articles/feature-toggles.html
- refactor: Organize project by features
Feature list
1. countdown
2. basic presets (duration)
2. custom duration — customize countdown duration (in seconds) by URL query
3. presets (duration + colors + message) — choose, start, create, edit, delete
4. shareable countdown — share link to specific running instance of that countdown
improvement of existing feature
- chore: Install React Feature Toggles by ParallelDrive
https://www.npmjs.com/package/@paralleldrive/react-feature-toggles
- refactor: Setup feature flags
0.4.0 — Custom presets:
- feat: Store title, colors, final message in presets
Add to default presets
25 min work (yellow / dark blue)
5 sec DEBUG MODE (red / yellow)
0.5.0 — Select preset with UI:
- feat: Select preset with UI
0.6.0 — Edit preset with UI:
- feat: Edit preset
0.7.0 — Create preset with UI:
- feat: Create preset
0.8.0 — Delete preset with UI:
- feat: Delete preset
1.0.0 — Presets release:
Customize message, colors, time and save in local storage.
Feature flag
- feat: Add design for presets
Backlog:
- refactor: Pass isInverted via context
- fix: Add leave animation for TimeOver
- fix: Switch digits smoothly
- Add supporting font for buttons?
- Advanced animations (final countdown)
- Credits
- Pause/resume
x Switch from SCSS to CSS:
x refactor: Use CSS custom properties, not SCSS variables
x refactor: Stop using SCSS nesting
x style: Use CSS files instead of SCSS
x chore: Remove dependency from Sass
Milestones:
+ Countdown for lecture breaks — 0.1.0
+ Customize countdown time - 0.2.0
+ Upgrade to React 18 — 0.2.1
- Presets release - 1.0.0
- Shareable countdowns? - 2.0.0
Backend. DB?
Editor can edit and share timer.
Reader can share timer.
Unauthorized visitor can add up to 5 presets, each 25 min max.
- Popular countdowns? — 2.1.0
Дашборд Эльбруса перерывы
Например
Лекция Лены
Лекция Артема
Лекция Леши
etc.
- Presets in DB?
Backend and DB
- Websocket room for each countdown?