~lts20050703/e5y-final

2025.01.29.0: TailwindCSS 4 and DaisyUI 5 Beta
- Upgraded to TailwindCSS 4 and DaisyUI 5 Beta
2024.10.29.0: Switch to Bun
- Update template
- Switch back to prettier and eslint
2024.10.08.0 (1.0 Pre-release 60): Authentication

- Removed Lucia and re-implemented authentication (Lucia is planned to be deprecated next year - https://github.com/lucia-auth/lucia/discussions/1707)

Implements: https://todo.sr.ht/~lts20050703/e5y_final/52
2024.09.27.0 (1.0 Pre-release 59): The Vz61 Update (WIP)
- Obstacle: Implemented the new redesign layout.
  - The most notable change is that the progress bar has been replaced with a stamina wheel
  - The score change delta animation has been replaced with orbs dropping animation, similar to the new contestant score change orbs dropping animation
  - Viewer: The order of intro animation has been changed to match the new layout
- Audio/Obstacle: Implemented background music (Starfruit Supernova phase 3 and 4) that will temporarily mute when Vz61's 15s countdown music start playing.
- Bells: Bell signal now get reset when switching to a new obstacle question.
- Types/Obstacle: Implemented Zod.
- Fixed some bugs relating to marking contestants' answers as correct or incorrect
- Fixed some bugs relating to the right sfx not being played when at least one contestant got the answer correct.
- Fixed some bugs relating to auto scoring

Redesign progress:
- Start: ✅
- Obstacle: ✅
- Accelerate: ❌
- Finish: ❌
- Final: ❌
- Score Recap/Overview/History/Summary Screen: ❌
- Overlay: ❌
2024.09.25.0 / 1.0 Pre-release 58: (WIP) The Vz61's Update
Note: Semantic versioning is just an alias for the calendar versioning.
- Audio:
  - Start:
	  - Removed the 5s music in favor of background music.
    - Implemented a custom fork of Adaptive Music.
    - Background Music: Starfruit Supernova (Phase 1 and 2).
    - Warning sound has been changed from b2b deficit/surge warning to garbage incoming warning.
  - Contestant bell call sound is now a tiktok tts placeholder.
  - Redesigned the UI to use more screen real estate.
- Start:
  - The 5s countdown no longer hide the contestant's score if there's only the stamina wheel.
  - The contestant's score is now show after their answer has been marked as correct or incorrect.
2024.09.12.0 / 1.0 Pre-Release 57: The Vz61 Update
Note: Semantic versioning is just an alias for the calendar versioning.
- Audio: Aside from some tetr.io new sfx as placeholders, all of the background music and sound effects is now composed by Vz61 (@krvz61 on Discord).
  - They're doing this for free so there's no way I'm going to ask them to make 5 sets of sound effects for 5 different rounds, so for now all sound effects are the same between rounds.
  - Most notable feature is that there are a total of 14 right sound effects, split into 2 sets of 7 and 7 respectively. For now, the sfx rises accordingly to the current number of right answers streak, similar to TETR.IO combo sound effects.
- Question images are no longer served statically. The server now send the base64 encoded image to the client.
- Types: Switch from menthod shorthand syntax to object property syntax
- Types/Start: Implemented Zod.
- Socket.io: Properly implemented authentication.
- Users: Path to contestant's call sound effect is no longer stored in the database. Now it can be changed in the src/lib/const.ts file.
- Viewer: The viewer can now see if any contestant is disconnected from the server.
- Start: Implemented the new redesign layout.
  - The most notable change is that the progress bar has been replaced with a stamina wheel
  - Each contestant is also given their own stamina wheel to track their 5 seconds timeout.
  - The warning icon has been changed to TETR.IO new quickplay garbage windup icon. This icon is not actually ripped from TETR.IO because it's not an image placed on top of the board but rather drawn on the canvas, so thank you @zyrixia for making them from scratch.
		- A new sound effect now plays if the contestant hit the bell before the 5 seconds countdown.
- Score: Fixed the score increase animation not stopping when the score already reached its destination.
- Socket.io: Implemented futher restrictions based on roles. Now only control and contestant can send events given one is not sending an event belonging to the other.
- Server: Moved database and question files to the src/server/ folder
- .gitignore: Ignore the new src/server/ folder, to avoid leaking the database and question files.

Redesign progress:
- Start (Viewer): ✅
- Start (Overlay): ❌
- Obstacle, Accelerate, Finish, Final: ❌
- Score Recap/Overview/History/Summary: ❌

Closes: https://todo.sr.ht/~lts20050703/e5y_final/44
Implements: https://todo.sr.ht/~lts20050703/e5y_final/45
Implements: https://todo.sr.ht/~lts20050703/e5y_final/46
Fixes: https://todo.sr.ht/~lts20050703/e5y_final/47
2024.09.01.1: Decouple audio from viewer.
2024.09.01.0: BiomeJS, TS-Reset, and Refactor
- Switch from ESLint and Prettier to BiomeJS. Prettier is still kept for now because BiomeJS doesn't fully support Svelte yet.
- Added TS-Reset to the project.
- Dedupe / Semantic Compression (https://caseymuratori.com/blog_0015): Implemented an animate function with the following features:
  - Set the duration of the animation (if the duration is set to something not 0)
		- If the duration is set to 0, call `animation.finish()` instead of `animation.play()`
		- Set the speed of the animation, defaults to 1
		- Play the animation in reverse, defaults to false
		- Optionally force replay the animation by calling `animation.cancel()`
		- Wait for the animation to complete before playing the next animation.
		- If the animation playback rate is the same as the speed passed to the function (and force replay is not set to true), skip and don't play that animation.
Switch to pnpm
Formatting changes
Fix eslint errors
Update dependencies and README
Update dependencies and vscode settings
Update README link and nest config files.
Thank you Matt Pocock for the nest config files thing, source: https://x.com/mattpocockuk/status/1806326048583295252
2024.06.13.0: Upgrade eslint to v9.
- Remove unused dependencies.
2024.06.06.4: Accelerate: Stamina wheel subdivisions
- The extra progress bar used to indicate when the next clue will show up has been replaced with stamina wheel subdivisions.
- Indirectly closes https://todo.sr.ht/~lts20050703/e5y_final/15
2024.06.06.3: Accelerate / Da de: Only highlight new clues.
2024.06.06.2: Fixed voice lines and question audio
2024.06.06.1: Implemented bell voice lines and start questions audios
- Closes https://todo.sr.ht/~lts20050703/e5y_final/12
- Closes https://todo.sr.ht/~lts20050703/e5y_final/13
2024.06.06.0: Fix orb color not always the same as the score background color.
2024.06.05.1: Tweaked the orb animations.
2024.06.05.0: Implemented new score changing and stealing animation.
- Closes https://todo.sr.ht/~lts20050703/e5y_final/2
- Closes https://todo.sr.ht/~lts20050703/e5y_final/3
Next
Do not follow this link