v0.3.0 Checkpoint
ATTENTION SELF HOSTERS: This release marks the latest version of OTT before the configuration changes in #849. These are possibly breaking changes, so this release is here to to help self hosters update on their own time. See #853.
What's Changed
- fix #423 by @dyc3 in #424
- allow joining rooms without a session cookie by @dyc3 in #425
- fix a bug that prevents room settings from being loaded correctly by @dyc3 in #427
- lint cleanup by @dyc3 in #428
- add an e2e test for video playback in a room by @dyc3 in #437
- misc fixes by @dyc3 in #440
- fix #439 by @dyc3 in #441
- add ClientNotFoundInRoomException by @dyc3 in #443
- attempted fix for #444 by @dyc3 in #445
- fix #446 by @dyc3 in #447
- adjust logging by @dyc3 in #448
- adjust logging by @dyc3 in #449
- add loop queue mode by @dyc3 in #451
- don't dequeue next video unless there is something to dequeue by @dyc3 in #455
- fix 456 by @dyc3 in #457
- update optic by @dyc3 in #458
- fixes #452 by @dyc3 in #459
- room settings request by @dyc3 in #462
- allow multiple lines for add preview by @dyc3 in #466
- Authentication overhaul by @dyc3 in #454
- pass redisclient to youtube adapter by @dyc3 in #467
- add some stat counters for videos watched by @dyc3 in #468
- fix #471 by @dyc3 in #472
- Bump ws from 7.4.5 to 7.4.6 by @dependabot in #422
- Bump dns-packet from 1.3.1 to 1.3.4 by @dependabot in #420
- remove dependency on redis for all unit tests by @dyc3 in #474
- Add play now button by @dyc3 in #475
- add link parsing for youtube shorts and youtube studio links by @dyc3 in #476
- Convert infoextractor to typescript by @dyc3 in #477
- permissions typescript by @dyc3 in #479
- fix add all button appearing in the wrong spot by @dyc3 in #480
- hack: fix permissions editor not parsing new RoleGrants format by @dyc3 in #481
- lots of linting related changes by @dyc3 in #482
- small logging fix by @dyc3 in #485
- update package lock by @dyc3 in #486
- node-sass is deprecated, move to dart sass by @dyc3 in #489
- dep updates2 by @dyc3 in #490
- add node 16 to ci by @dyc3 in #491
- Bump path-parse from 1.0.6 to 1.0.7 by @dependabot in #469
- switch docker images to node 14 by @dyc3 in #492
- youtube api error handling by @dyc3 in #493
- Bump tmpl from 1.0.4 to 1.0.5 by @dependabot in #494
- split room request metadata by @dyc3 in #496
- Fix docker health check by @dyc3 in #497
- Improve compliance with strictNullChecks for tests and youtube adapter by @dyc3 in #498
- Improve compliance with strict null checks by @dyc3 in #499
- Finally finish enabling strict null checks by @dyc3 in #500
- hotfix: join requests don't have the client id in the context by @dyc3 in #501
- add all UI for DJ queue mode, closes #450 by @dyc3 in #502
- use custom logging function for sequelize logs by @dyc3 in #503
- UI improvements by @dyc3 in #506
- fix for client ids missing from join request contexts by @dyc3 in #507
- add some logging around voting to help debug #508 by @dyc3 in #509
- debug logging by @dyc3 in #510
- debug logging by @dyc3 in #512
- fix first vote casts multiple votes bug, fixes #508 by @dyc3 in #513
- Add support for playing reddit videos by @dyc3 in #514
- fix a couple of add preview bugs by @dyc3 in #515
- Add Tubi support by @dyc3 in #516
- test fixtures by @dyc3 in #517
- add support for m3u, m3u8 hls video links by @dyc3 in #520
- issue templates by @dyc3 in #521
- Slider improvements by @dyc3 in #523
- hack: fix seek preview not working by @dyc3 in #524
- seek preview fix by @dyc3 in #526
- Reorganize some stuff on the client side by @dyc3 in #527
- Sponsorblock support by @dyc3 in #528
- don't spam requests if getting segments fails by @dyc3 in #529
- make VideoQueueItem slightly more robust to missing info by @dyc3 in #533
- room name validation by @dyc3 in #537
- move toast notifications to the right side, closes #534 by @dyc3 in #538
- fix missing playback slider, fixes #539 by @dyc3 in #541
- Add a couple new room API tests by @dyc3 in #542
- make skipping a video clear video segments by @dyc3 in #544
- actually force segments to get cleared on skipping video by @dyc3 in #547
- adjust token experation times by @dyc3 in #550
- dailymotion: add link parsing for embed links by @dyc3 in #551
- adjust sponsorblock segment clearing again by @dyc3 in #557
- don't send multiple requests for segments if we haven't heard back from the first one yet by @dyc3 in #559
- Name change propagation fix by @dyc3 in #560
- Add keyboard shortcut to enable debug panel in production by @dyc3 in #562
- Refactor how hiding video controls work by @dyc3 in #563
- make sure debug mode is hidden by default in production by @dyc3 in #564
- fix video controls hiding and not being able to make them show up again, fix #561 by @dyc3 in #565
- Update landing page and add some more links by @dyc3 in #566
- closable chat by @dyc3 in #571
- document FFPROBE_PATH env var, closes #297 by @dyc3 in #572
- Restore integrity of democracy by @dyc3 in #573
- protect queue writes with a mutex, fixes #478 by @dyc3 in #574
- update some dependencies by @dyc3 in #579
- use a resize observer to tell the youtube iframe to resize by @dyc3 in #578
- Bump color-string from 1.5.3 to 1.9.0 by @dependabot in #580
- double star to ignore all fixtures recursively by @dyc3 in #581
- make play now invalidate video segments by @dyc3 in #582
- fix skipping ahead if a client joins the room after the video has been paused for a little while by @dyc3 in #584
- ensure token before join by @dyc3 in #585
- add support for direct audio files in mp3 and ogg format by @dyc3 in #586
- Storage for client settings by @dyc3 in #587
- Update some dependencies by @dyc3 in #588
- update deps by @dyc3 in #589
- change license to AGPL 3.0 by @dyc3 in #590
- adjust sequelize logging by @dyc3 in #591
- fix code coverage collection by @dyc3 in #592
- remove dead code by @dyc3 in #593
- Add queue shuffle button by @dyc3 in #594
- remove deprecated client messages in favor of ClientMessageRoomRequest by @dyc3 in #595
- hide queue controls when there are no videos in the queue by @dyc3 in #596
- Separate client and server by @dyc3 in #598
- Username length limit by @dyc3 in #600
- Fix misc warnings by @dyc3 in #602
- Localization Infrastructure by @dyc3 in #601
- workaround that should make #603 less brutal by @dyc3 in #604
- Fix for #603 by @dyc3 in #605
- Player refactor and ShareInvite tests by @dyc3 in #607
- exclude coverage and dist folders from vscode search by @dyc3 in #608
- client: replace some strings with localizable ones by @dyc3 in #609
- build(deps): bump follow-redirects from 1.14.6 to 1.14.7 by @dependabot in #610
- logging adjust by @dyc3 in #611
- send room requests over pubsub if the room is not loaded on the current node by @dyc3 in #612
- Enable the play now button for more queue modes by @dyc3 in #614
- Fixed buttons by @xRealNeon in #617
- handle leave request failures better by @dyc3 in #621
- Add Locale Selector by @dyc3 in #625
- add vue2 composition api by @dyc3 in #626
- build(deps): bump simple-get from 3.1.0 to 3.1.1 by @dependabot in #627
- fix some i18n stuff to unblock 624 by @dyc3 in #628
- Extracted language strings by @xRealNeon in #624
- Unhide chat on 16:9 screens in fullscreen mode by @dyc3 in #629
- build(deps): bump follow-redirects from 1.14.7 to 1.14.8 by @dependabot in #633
- build(deps): bump url-parse from 1.5.3 to 1.5.7 by @dependabot in #635
- build(deps): bump prismjs from 1.25.0 to 1.27.0 by @dependabot in #638
- build(deps): bump url-parse from 1.5.7 to 1.5.10 by @dependabot in #639
- Chat rework by @dyc3 in #631
- make shuffle test not flakey by @dyc3 in #643
- slightly adjust player size by @dyc3 in #645
- upgrade jest to 27, remove nanotimer by @dyc3 in #646
- textseek composition by @dyc3 in #648
- dep upgrades by @dyc3 in #650
- layout switcher by @dyc3 in #653
- Add prettier to linting for auto formatting by @dyc3 in #655
- Convert some components to the composition api by @dyc3 in #657
- tests: use jest setup file to install composition api for all unit tests by @dyc3 in #658
- Add german translation by @FriedrichGaming in #660
- Add some documentation for locales by @dyc3 in #661
- Improve German translation by @FriedrichGaming in #663
- Corrected mistakes in the german translation by @FriedrichGaming in #664
- build(deps): bump cross-fetch from 3.1.4 to 3.1.5 by @dependabot in #667
- make the screen API optional by @dyc3 in #669
- ts enums safari compat by @dyc3 in #672
- Check for screen orientation instead of just screen by @gianklug in #673
- refactor fetchManyVideoInfo to handle youtube livestreams a little bit better by @dyc3 in #674
- Video queue rework, add extra queue item metadata by @dyc3 in #682
- remove quickadd feature because it broke and nobody uses it by @dyc3 in #683
- when connected to a room already, and the user creates a room, they will join the new room and leave the old one. fixes #659 by @dyc3 in #684
- refactor onRoomCreated event to not use vue-event-bus by @dyc3 in #685
- refactor how the player updates play/pause state by @dyc3 in #686
- remove vue events by @dyc3 in #687
- remove some lingering code, fixes #688 by @dyc3 in #689
- refactor: remove RoomUtils mixin by @dyc3 in #690
- fix form errors not being invalidated when text is modified by @dyc3 in #691
- Refactor client side permissions checks by @dyc3 in #692
- Convert
VideoQueue
,VideoQueueItem
to composition api by @dyc3 in #693 - remove toast plugin by @dyc3 in #695
- build(deps): bump eventsource from 1.1.0 to 1.1.1 by @dependabot in #675
- build(deps): bump simple-plist from 1.3.0 to 1.3.1 by @dependabot in #676
- convert RoomSettings form to composition api by @dyc3 in #696
- convert toasts to composition api by @dyc3 in #697
- remove class component definitions from nav components by @dyc3 in #699
- Fix uncached videos not appearing in search results by @dyc3 in #701
- queue add tabs icons by @dyc3 in #702
- convert RoomList view to composition api by @dyc3 in #703
- Add captions/subtitles toggle by @dyc3 in #704
- convert the dailymotion player to the composition api by @dyc3 in #707
- client settings ui by @dyc3 in #708
- fix create room form UX being weird when room creation fails by @dyc3 in #713
- build(deps): bump terser from 4.8.0 to 4.8.1 by @dependabot in #709
- maybe fix room generate not working in prod by @dyc3 in #714
- Add German translation for client-settings by @IceBeach7 in #717
- build(deps): bump vuetify from 2.6.1 to 2.6.10 by @dependabot in #719
- Fix: Added ffmpeg to Docker distro by @shindouj in #721
- Fixed ffmpeg being added in build stage rather than in production stage by @shindouj in #724
- ffprobe pipe in by @dyc3 in #726
- fix client not setting
isTemporary = false
when creating permanent rooms by @dyc3 in #727 - fix reddit extractor by @dyc3 in #728
- prometheus exporter by @dyc3 in #729
- fix ott_media_seconds_played metric not counting seconds if the video is seeked while playing by @dyc3 in #730
- implement ott_infoextractor_add_previews_requested and ott_infoextractor_search metrics by @dyc3 in #731
- add some http request metrics by @dyc3 in #732
- more metrics by @dyc3 in #733
- fix potentially dangling temporary files if running ffprobe fails by @dyc3 in #734
- fix http metrics being recorded before the request has been served by @dyc3 in #735
- fix aborted http requests from axios leaking TlsSocket handles, causing a file descriptor leak by @dyc3 in #737
- remove the direct preview limit by default by @dyc3 in #738
- Stream video downloads for direct videos straight into ffprobe by @dyc3 in #742
- add a unit test for direct video playback extracting the title by @dyc3 in #743
- more metrics by @dyc3 in #745
- fix an edge case when parsing video duration from the youtube api by @dyc3 in #746
- improve error handling when attempting to fetch a youtube video that doesn't exist by @dyc3 in #747
- fix force unload by @dyc3 in #748
- less invalid add preview by @dyc3 in #749
- Added Russian localization by @SabatonShip in #750
- fixed/improved ru locale by @SabatonShip in #751
- remove some dead code by @dyc3 in #752
- Refactor room disconnection UI by @dyc3 in #754
- Add support for youtube handle links by @dyc3 in #756
- Update Russian locale by @dyc3 in #763
- add gitpod config by @dyc3 in #764
- fix node 18 by @dyc3 in #768
- disable gitpod prebuilds for PRs by @dyc3 in #769
- Convert last remaining class components to composition api by @dyc3 in #770
- update browserlist by @dyc3 in #771
- fix client not respecting seeks to position 0 if the video is playing by @dyc3 in #779
- update codeql CI job to v2 by @dyc3 in #780
- server: add metric
ott_users_in_rooms
by @dyc3 in #781 - update architecture.md a little by @dyc3 in #783
- minimal websocket tooling and fixes by @dyc3 in #793
- Bump json5 from 1.0.1 to 1.0.2 by @dependabot in #794
- add configurable rate limit key prefix by @dyc3 in #797
- Exported API docs from optic 10 by @dyc3 in #798
- Upgrade to Vue3 + Vuetify 3 + Vite, with lots of other major improvements by @dyc3 in #772
- add some metrics for redis and postgres by @dyc3 in #802
- Improve open api spec by @dyc3 in #803
- server: add ENABLE_RATE_LIMIT environment variable by @dyc3 in #804
- server: actually await for consuming rate limit points before continuing by @dyc3 in #805
- Bare minimum completed API docs by @dyc3 in #808
- fix memory and pubsub channel leak on room unload by @dyc3 in #809
- dependency upgrades by @dyc3 in #811
- fix vimeo player by @dyc3 in #814
- more dependency upgrades by @dyc3 in #812
- Tweak nav bar and drawer by @dyc3 in #815
- update privacy policy by @dyc3 in #816
- Video Control Modes by @dyc3 in #819
- adjust video layout in fullscreen mode by @dyc3 in #821
- fix hard coded hostname in dockerfile by @dyc3 in #823
- Show a button when playback is blocked by @dyc3 in #829
- remove old FAQ, link to new one, closes #800 by @dyc3 in #831
- refactor some i18n definitions by @dyc3 in #832
- Bump sqlite3 from 5.1.4 to 5.1.5 by @dependabot in #833
- Add French translation by @Scraft02 in #835
- fix missing locale selector by @dyc3 in #840
- fix 836 by @dyc3 in #841
- ci: use cypress pre-release build to see if flakey tests are fixed by @dyc3 in #844
- improve queue robustness by @dyc3 in #848
- Bump openssl from 0.10.45 to 0.10.48 in /tools/ws-fuzz by @dependabot in #843
- increment version number to v0.3.0 by @dyc3 in #852
New Contributors
- @xRealNeon made their first contribution in #617
- @FriedrichGaming made their first contribution in #660
- @gianklug made their first contribution in #673
- @IceBeach7 made their first contribution in #717
- @shindouj made their first contribution in #721
- @SabatonShip made their first contribution in #750
- @Scraft02 made their first contribution in #835
Full Changelog: v0.2.0...v0.3.0