Skip to content

v0.15.0

Latest

Choose a tag to compare

@dyc3 dyc3 released this 04 Jun 16:42
b6122ca

What's Changed

This release marks the stabilization of the load balancer. It's been running in production for quite some time now, and I'm pretty confident that it doesn't break anything.

  • balancer: refactor remove_room to reduce errors in logs by @dyc3 in #1674
  • balancer: fix room unloads sometimes causing canonical room mappings to get removed by @dyc3 in #1675
  • server: gossip loaded rooms immediately on balancer connect by @dyc3 in #1673
  • balancer: add another routing unit test by @dyc3 in #1676
  • tests: add test for balancers unloading rooms by @dyc3 in #1672
  • client: fix trusted user icon not rendering in user list by @dyc3 in #1677
  • client: only send playback status updates if status changes by @dyc3 in #1678
  • client: allow short passwords in dev mode by @dyc3 in #1679
  • add permission: manage-queue.play-now by @dyc3 in #1680
  • server: minor refactor to how permissions are checked by @dyc3 in #1681
  • client: fix PermissionsEditor not rendering the actual permissions of the room by @dyc3 in #1683
  • client: refactor components to make them more simple by @dyc3 in #1682
  • jobs: update chunk size by @dyc3 in #1686
  • vis: fix activity animations to stay confined to their own panel by @dyc3 in #1687
  • vis: TopologyView: update node packing threshold by @dyc3 in #1688
  • vis: refactor activity animations into a hook by @dyc3 in #1689
  • vis: add balancer_id to events by @dyc3 in #1690
  • tests: update chatty-users load test by @dyc3 in #1692
  • tests: tweak chatty-users again by @dyc3 in #1693
  • balancer: degrade more gracefully when overloaded with new clients by @dyc3 in #1694
  • deps: upgrade hyper to 1.3.0 by @dyc3 in #1695
  • client: fix video controls hanging out of the player by @dyc3 in #1696
  • deploy: increase traffic split to 50% by @dyc3 in #1697
  • deps: update hyper to 1.3.1 by @dyc3 in #1698
  • client: refactor LocaleSelector to be less complex by @dyc3 in #1699
  • balancer: filter streamed events based on whether or not the collector is actually connected by @dyc3 in #1700
  • Fix bug where putting more than one panels with streaming events in a dashboard causes them to error out. by @Victor-M-Giraldo in #1701
  • vis: TopologyView: make region box padding configurable by @dyc3 in #1702
  • reimplement ProcessedText tests by @dyc3 in #1704
  • vis: TopologyView: increase font size of region names by @dyc3 in #1703
  • vis: create a legend by @moreno-michael in #1668
  • rework useColorProvider hook by @dyc3 in #1705
  • vis: tweak legend appearance by @dyc3 in #1706
  • add new bbox util methods by @dyc3 in #1707
  • vis: prevent excessive rerendering by @dyc3 in #1708
  • vis: simplify useD3Zoom by @dyc3 in #1709
  • vis: TreeView: zoom to fit whole tree by @dyc3 in #1710
  • deploy: increase client split to 70% by @dyc3 in #1711
  • vis: TreeView: only auto zoom if there has been no user interaction by @dyc3 in #1712
  • vis: TopologyView: add auto zoom to fit diagram by @dyc3 in #1713
  • server: add ott_websocket_kick_close_codes metric by @dyc3 in #1715
  • balancer: add balancer_client_websocket_close_codes metric by @dyc3 in #1716
  • vis: improve initial zoom levels by @dyc3 in #1717
  • vis: remove "global" from panel options by @dyc3 in #1718
  • vis: TreeView: fix auto zoom sometimes cutting off balancer nodes by @dyc3 in #1719
  • deploy: increase client split to 85% and switch to nginx alpine image by @dyc3 in #1720
  • vis: fix color assignments sometimes being non unique by @dyc3 in #1721
  • update spanish localization by @Victor-M-Giraldo in #1722
  • deploy: tweak concurrency limits for balancer by @dyc3 in #1724
  • server: disconnect from balancers on shutdown to make sure we don't send room unloaded close codes by @dyc3 in #1725
  • deploy: fully switch to the balancer for all clients by @dyc3 in #1723
  • balancer/server: fix monolith restarts causing all clients to get kicked and not recover completely by @dyc3 in #1729
  • ci: temporarily disable prod deployments by @dyc3 in #1730
  • deploy: staging: use minrooms selector by @dyc3 in #1726
  • balancer: fix leaking BalancerClients by @dyc3 in #1728
  • balancer: refactor polling_interval and reduce default to 5 seconds by @dyc3 in #1727
  • balancer: actually fix leaking clients on monolith leave by @dyc3 in #1731
  • balancer: refactor remove_client to be more lenient by @dyc3 in #1732
  • collector: handle websocket pings by @dyc3 in #1733
  • collector: handle websocket errors better by @dyc3 in #1734
  • vis: fix datasource opening tons of websocket connections by @dyc3 in #1736
  • deploy: switch to bluegreen deploy strategy by @dyc3 in #1737
  • server: fix BalancerClients not getting cleaned up on room unloads by @dyc3 in #1744
  • balancer: avoid sending close frame twice by @dyc3 in #1743
  • remove balancer-tester crate by @dyc3 in #1745
  • remove ws-fuzz crate by @dyc3 in #1746
  • dev: add vscode setting to disable sync button because its bad by @dyc3 in #1747
  • balancer: add random monolith selector by @dyc3 in #1748
  • tests: add monolith-restarts load test by @dyc3 in #1749
  • deploy: prod: switch to HashRing selector by @dyc3 in #1750
  • balancer: add UnloadReason by @dyc3 in #1741
  • server: handle UnloadReason for room unloads by @dyc3 in #1742
  • balancer: add Region type by @dyc3 in #1751
  • balancer: implement Region type by @dyc3 in #1752
  • balancer: track client edge region by @dyc3 in #1753
  • deploy: reenable prod deployments by @dyc3 in #1754
  • server: ensure balancer connections get closed before unloading rooms on shutdown by @dyc3 in #1755
  • Switch to using zod for validation for patch endpoint. by @Victor-M-Giraldo in #1579
  • tests: reimplement PermissionsEditor tests by @dyc3 in #1756
  • client: visually simplify create room form by @dyc3 in #1757
  • balancer: HashRing: repeat nodes on ring to balance better by @dyc3 in #1758
  • server: add ott_balancer_connections metric by @dyc3 in #1759
  • client: make restore queue setting dropdown same size as others by @dyc3 in #1761
  • server: send details of zod validation errors by @dyc3 in #1763
  • client: upgrade vuetify to 3.5.17 by @dyc3 in #1764
  • ci: add job to compare bundle size in PRs by @dyc3 in #1767
  • client: minor refactors for RoomSettingsForm by @dyc3 in #1762
  • server: remove deprecated permissions field from GET /api/room/:room endpoint by @dyc3 in #1768
  • client: only submit changed settings to the server when changing settings by @dyc3 in #1765
  • client: auto submit room settings on change by @dyc3 in #1766
  • deps: remove material-design-icons-iconfont by @dyc3 in #1769
  • deps: upgrade typescript to 5.4.5 by @dyc3 in #1771
  • ci: upgrade actions versions in bundle size job by @dyc3 in #1772
  • client: fix vimeo player not respecting seeks by @dyc3 in #1775
  • fix new clippy lints by @dyc3 in #1781
  • build(deps): bump ws from 7.5.9 to 7.5.10 by @dependabot[bot] in #1780
  • build(deps): bump braces from 3.0.2 to 3.0.3 by @dependabot[bot] in #1779
  • RU locale update by @Insoulum in #1782
  • server: refactor video highlighting, fix videos not getting highlighted in add previews by @dyc3 in #1778
  • Localization for Brazilian Portuguese (pt-br) by @Kahlis in #1785
  • build(deps): bump fast-loops from 1.1.3 to 1.1.4 by @dependabot[bot] in #1784
  • update deps to fix rust builds by @dyc3 in #1788
  • only render privacy policy on official site by @dyc3 in #1789
  • tests: relax condition in flaky playback position test by @dyc3 in #1792
  • client: move chat outside of youtube player bounds to comply with youtube TOS by @dyc3 in #1791
  • Revert "client: move chat outside of youtube player bounds to comply with youtube TOS (#1791)" by @dyc3 in #1795
  • Reapply "client: move chat outside of youtube player bounds to comply with youtube TOS (#1791)" by @dyc3 in #1796
  • build(deps-dev): bump webpack from 5.89.0 to 5.94.0 by @dependabot[bot] in #1797
  • upgrade axios to 1.7.4 by @dyc3 in #1799
  • ci: filter ansi codes from bundle size outputs by @dyc3 in #1800
  • ci: fix bundle size job not working on external PRs by @dyc3 in #1801
  • client: slightly improve room layout on smaller screens by @dyc3 in #1802
  • build(deps-dev): bump vite from 5.2.8 to 5.2.14 by @dependabot[bot] in #1804
  • fix(client): fix incorrectly specified redirects in router by @dyc3 in #1809
  • chore: fix new clippy lints by @dyc3 in #1810
  • fix(server): fix crash when session token returns no data in auth middleware by @dyc3 in #1814
  • fix(ci): fix broken jobs related to docker-compose by @dyc3 in #1815
  • chore(docker): remove PGDATA from docker compose environment variables by @dyc3 in #1818
  • fix(server/(config): add config validation for session_secret by @dyc3 in #1820
  • chore: pin rust version and fix lints by @dyc3 in #1823
  • feat(client): save sponsorblock settings in browser and apply them on room creation by @mayudev in #1829
  • fix(client): fix seek preview timestamp being positioned incorrectly for youtube videos. by @dyc3 in #1835
  • build(deps): bump cross-spawn from 7.0.3 to 7.0.6 by @dependabot[bot] in #1822
  • chore: add a log when youtube video api requests fail by @dyc3 in #1839
  • feat: add "My Rooms" page to list rooms owned by the current user by @dyc3 in #1844
  • feat: add button to let users delete permanent rooms by @dyc3 in #1845
  • chore: fix some lints by @dyc3 in #1846
  • update german language by @Sebasee009 in #1847
  • ci: update node js versions by @dyc3 in #1850
  • chore: update to node 20 by @dyc3 in #1857
  • Fix index.ts error after Node20 Upgrade by @Sysadminfromhell in #1861
  • Add Invidious Support by @Sysadminfromhell in #1862
  • fix: force upgrade sodium-native to 4.3.2 to make password hashing work again on node 20 by @dyc3 in #1869
  • fix(server): Correctly handle absolute URLs in HLS manifests by @WuTofu in #1873
  • fix(server): Correctly handle a m3u8 manifest that contain segments directly by @WuTofu in #1875
  • chore: add @types/m3u8-parser and fix type errors by @dyc3 in #1876
  • ci(bundle-size): don't fail on prs from forks by @dyc3 in #1877
  • build(deps): bump @babel/runtime from 7.23.8 to 7.28.3 by @dependabot[bot] in #1856
  • chore: minor lint fixes for tubi, pluto by @dyc3 in #1881
  • Client: Extract HLS logic to a new HlsPlayer Component by @WuTofu in #1880
  • fix: hls caption not showing when re-selecting a previously disabled track by @WuTofu in #1889
  • An attempt to fix the e2e test by @WuTofu in #1890
  • fix(client): reddit also uses HLS by @WuTofu in #1892
  • client: Move dashjs to a new component, DashPlayer.vue, with caption support by @WuTofu in #1888
  • chore(deps): minor dependency updates by @dyc3 in #1895
  • server: Replace "secure-password" with "argon2" by @WuTofu in #1894
  • Server: Add Field filtering for YouTube API Calls by @Sysadminfromhell in #1887
  • Server: Ffprobe leak fix by @Sysadminfromhell in #1883
  • chore(deps): major dependency upgrades by @dyc3 in #1896
  • fix(server): Sequelize-cli now respects env files by @WuTofu in #1893
  • [skip ci] Update node version to 20 in devcontainer and documentation by @WuTofu in #1900
  • chore(deps): bump Cypress's version for client by @WuTofu in #1899
  • refactor(client): migrate from @mdi/font to @mdi/js for smaller bundle by @WuTofu in #1901
  • client: Add support for video quality selection for hls by @WuTofu in #1897
  • client: add tooltips to video controls by @WuTofu in #1907
  • fix(client): "auto" is not supported to show if isAutoQualitySupported is false by @WuTofu in #1906
  • client: Implement video quality selection for dash by @WuTofu in #1902
  • Fix(client): Ensure correct video quality selection between the auto and manual settings for DASH and HLS by @WuTofu in #1912
  • (Deployment) Add SBOM and Provenance for Docker-compose build by @Sysadminfromhell in #1905
  • Revert "(Deployment) Add SBOM and Provenance for Docker-compose build" by @dyc3 in #1914
  • fix(client): Use useMouseInElement instead to trigger video controls during playback by @WuTofu in #1903
  • refactor(client): simplify closed captions switcher and introduce video settings menu by @WuTofu in #1908
  • feat(client): improves video quality labeling by @WuTofu in #1915
  • (server) Add LBYR/Odysee Support by @Sysadminfromhell in #1904
  • feat(client): Add visual indication for caption tracks by @WuTofu in #1916
  • chore(client): Enhance test video display with grouped categories and improved styling by @WuTofu in #1917
  • feat(client): Implement Picture-in-Picture button by @WuTofu in #1918
  • Fix(client): fix issue where google drive can't play and remove video.js by @WuTofu in #1922
  • build(deps): bump vite from 5.1.1 to 7.1.10 by @dependabot[bot] in #1923
  • client: only show the PiP button when browser supports the PiP API by @WuTofu in #1924
  • Fix(client): Fix incorrect logic for caption isEnabled by @WuTofu in #1928
  • feat(client): display an error message when video is failed to load by @WuTofu in #1921
  • client: add a volume icon and improve volume slider's tooltip style by @WuTofu in #1925
  • client: ensure single active (and correct) chip selected for test videos by @WuTofu in #1926
  • build(deps-dev): bump vite from 7.1.10 to 7.1.11 by @dependabot[bot] in #1927
  • build(deps): bump brace-expansion from 1.1.11 to 1.1.12 by @dependabot[bot] in #1853
  • build(deps): bump validator from 13.9.0 to 13.15.20 by @dependabot[bot] in #1929
  • build(deps): bump min-document from 2.19.0 to 2.19.1 by @dependabot[bot] in #1932
  • build(deps-dev): bump glob from 10.3.10 to 11.1.0 by @dependabot[bot] in #1933
  • build(deps): bump validator from 13.9.0 to 13.15.23 by @dependabot[bot] in #1934
  • feat: add forced adapter selection for add preview by @Copilot in #1938
  • i18n: Update RU locale by @Insoulum in #1939
  • build(deps): bump lodash from 4.17.21 to 4.17.23 by @dependabot[bot] in #1940
  • build(deps-dev): bump webpack from 5.94.0 to 5.104.1 by @dependabot[bot] in #1943
  • build(deps): bump axios from 1.12.2 to 1.13.5 by @dependabot[bot] in #1944
  • chore: apply fixes that would be fixed by biome by @dyc3 in #1945
  • chore: more misc fixes caught by biome by @dyc3 in #1946
  • chore: various code quality improvements, caught by biome by @dyc3 in #1947
  • chore: add AGENTS.md by @dyc3 in #1948
  • chore: format/remove misc things by @dyc3 in #1956
  • feat(client): client setting to boost audio by @dyc3 in #1962
  • fix(client): fix client settings not rendering by @dyc3 in #1964
  • feat(balancer): more metrics to diagnose deadlocks by @dyc3 in #1961
  • fix(balancer): make in-flight metric more reliable by @dyc3 in #1967
  • fix(client): fix direct videos not playing audio by @dyc3 in #1969
  • refactor(client): migrate PlyrPlayer to composition API and remove Plyr by @WuTofu in #1966
  • chore(client): remove SCSS preprocessor options for plyr by @WuTofu in #1970
  • build(deps): bump flatted from 3.2.7 to 3.4.2 by @dependabot[bot] in #1971
  • fix(jobs): fix oom database crashes by @dyc3 in #1973
  • chore: Bump cypress to 15.12.0 and replace the HLS used for the e2e test by @WuTofu in #1972
  • fix: strip trimming metadata on video end in looping modes by @dyc3 in #1963
  • feat(client): Add captions/multi-quality support for DirectPlayer.vue with a new manifest format by @WuTofu in #1974
  • fix(server): prevQueue doesn't get saved when the room gets unloaded and the current queue is empty by @WuTofu in #1975
  • build(deps): bump convict from 6.2.4 to 6.2.5 by @dependabot[bot] in #1978
  • build(deps): bump brace-expansion from 1.1.12 to 1.1.13 by @dependabot[bot] in #1979
  • build(deps): bump dompurify from 2.4.7 to 2.5.9 by @dependabot[bot] in #1980
  • feat(client): add a visibility icon next to the connection status by @WuTofu in #1981
  • update german language by @Sebasee009 in #1982
  • fix(client): fix DirectPlayer subtitle issues by @WuTofu in #1985
  • build(deps): bump lodash from 4.17.23 to 4.18.1 by @dependabot[bot] in #1986
  • feat(client): Allow users to add a subtitle track to the VideoQueueItem by @WuTofu in #1983
  • feat: allow users to modify an existing queue item to add a subtitle track by @WuTofu in #1989
  • build(deps-dev): bump vite from 7.1.11 to 7.3.2 by @dependabot[bot] in #1990
  • build(deps): bump uuid from 9.0.0 to 14.0.0 by @dependabot[bot] in #1996
  • feat: account management page by @dyc3 in #1998
  • chore: migrate to biome by @dyc3 in #1957
  • build(deps): bump postcss from 8.4.19 to 8.5.10 by @dependabot[bot] in #1999
  • build(deps): bump protocol-buffers-schema from 3.6.0 to 3.6.1 by @dependabot[bot] in #1995
  • chore: upgrade Node.js version from 20 to 22 in Dockerfiles by @WuTofu in #2000
  • chore: ban vue options api for new components by @dyc3 in #2001
  • chore: make odysee tests not create a random log file by @dyc3 in #2003
  • chore: bump minimum node version, prep for node 26 by @dyc3 in #2002
  • chore: bump @types/node to 22 by @WuTofu in #2005
  • chore: remove pr commands, don't need it anymore by @dyc3 in #2006
  • chore: swap js formatting to biome by @dyc3 in #2007
  • chore(lint): enable biome's useTopLevelRegex by @dyc3 in #2008
  • chore: tweak formatting by @dyc3 in #2009
  • chore: update biome to 2.4.14, misc lint improvements by @dyc3 in #2010
  • chore: node 26 by @dyc3 in #2011
  • chore: disable some eslint rules by @dyc3 in #2013
  • chore: update biome, adjust linting, format everything but vue with biome by @dyc3 in #2015
  • chore: formatting adjustments by @dyc3 in #2016
  • fix: reject newlines in room title by @kimjune01 in #2017
  • refactor: use vitest for component tests by @dyc3 in #2025
  • chore: update to vite 8 by @dyc3 in #2024
  • refactor(client): upgrade YoutubePlayer to modern vue component by @dyc3 in #2028
  • fix(server): fix a possible bug where room state could get destroyed by @dyc3 in #2029

New Contributors

Full Changelog: v0.14.1...v0.15.0