Commit Graph

467 Commits

Author SHA1 Message Date
renovate[bot]
01edbb598d chore(deps): update dependencies 2023-04-03 14:44:28 +02:00
renovate[bot]
99911c3394 chore(deps): update dependencies 2023-04-03 14:41:45 +02:00
renovate[bot]
ed026313ce chore(deps): update development dependencies 2023-04-03 14:37:19 +02:00
renovate[bot]
3114d58cb5 chore(deps): update development dependencies 2023-04-03 14:31:27 +02:00
Fernando Fernández
c86a4ad948 chore: tag v0.3.0 2023-04-03 12:52:57 +02:00
Fernando Fernández
6917a2519d chore: pre-merge cleanup
* Update renovate config
* Commit component.d.ts file
* Upgrade @jellyfin/sdk to 0.8.1
2023-04-03 12:52:57 +02:00
Fernando Fernández
ca0781c6d5 refactor: reimplement SortableJS for queue 2023-04-03 12:52:57 +02:00
Fernando Fernández
5e183ce23b chore: add additional linting suites
These additional linting suites doesn't add new errors or warnings,
so they're good to have to prevent possible future problems

eslint-plugin-jsonc is also better maintained than eslint-plugin-json
2023-04-03 12:52:57 +02:00
aweebs
d2dae17b8a chore: upgrade to latest version of typescript 2023-04-03 12:52:57 +02:00
Fernando Fernández
0303d74fe7 chore: clear old dependencies' usage 2023-04-03 12:52:57 +02:00
Fernando Fernández
2c4b004920 chore: add roboto font for consistent display across all devices 2023-04-03 12:52:57 +02:00
Fernando Fernández
2461dffc95 fix: external dependency's types
* Upgrade to the new Vuetify 3.1.11, which fixes all missing VGrid types
* Upgrade axios and @jellyfin-sdk. Mismatched axios versions caused type errors
2023-04-03 12:52:57 +02:00
Fernando Fernández
bdbb8a9cca fix: page, menus overflow, color icons
The page overflowed because unplugin-icons settled a size for the icon components.
With ``scale: 0`` this no longer happens.
Fixing that also fixed all the overflows present in the page.

The color of the playback buttons in the music player has been fixed by upgrading Vuetify
2023-04-03 12:52:57 +02:00
Thibault Nocchi
81d1b67c5d feat: implement jassub instead of libass
Implementation has been done without the legacy worker
In this client we already assume a modern environment
We don't use polyfills anywhere else, so increasing our bundle size + 2MB for JASSUB doesn't seem logical
2023-04-03 12:52:57 +02:00
Thibault Nocchi
91e8e8fc24 feat: implement new HLS video player + subs + PiP 2023-04-03 12:52:57 +02:00
Fernando Fernández
c25395f42d fix: music playback and home section's swipers
* Update swiper to v9.X
* Fixed music changing when accessing fullscreen page
* Disable the navigation buttons when the swiper is at the end of beginning in swiper sections
2023-04-03 12:52:57 +02:00
Thibault Nocchi
7d168e8dd9 feat: drop shaka player and natively play direct streaming audio 2023-04-03 12:52:57 +02:00
Fernando Fernández
57c63cb4ff fix(socket): update vueuse to overcome socket limitations
Check https://github.com/vueuse/vueuse/releases/tag/v9.12.0

Prior, socket required an string as a ref. As my PR has now been merged, undefined refs can be passed as well, so we can have the socket connect/disconnect behaviour working properly
2023-04-03 12:52:57 +02:00
Thibault
c2cfada439 perf: remove OverlayScrollbars
OverlayScrollbars killed the performance of pages with huge DOM manipulations, like library pages (where the scroller is virtual). It also attempted to track events from image objects, which slowed down the app even more.
2023-04-03 12:52:57 +02:00
Thibault
bd542212b2 style: update vuetify & use newly fixed .fill-height class (#1854) 2023-04-03 12:52:57 +02:00
Fernando Fernández
dcdb2d5e89 chore(vue3): deprecate pinia
Pinia was great in Vue 2. However, since in Vue 3 there's no longer a global instance,
doing reactivity and watching outside the app context is much easier and simplifies tremendously
our app initialization context (for things like playback watchers) and persistence.

Also, Pinia didn't allow us to be explicit with what we wanted to expose and, by default,
all the methods, state properties and getters were accessible by everyone. With TypeScript classes,
we have full control of the external visibility of every property and
how we want to expose everything (readonly or not readonly?)

We lose the ability to have DevTools support, but it's not like we used it that much anyway
2023-04-03 12:52:57 +02:00
Thibault Nocchi
cc4bf128a0 refactor: remove custom icon component as given PR has been merged to Vuetify 2023-04-03 12:52:57 +02:00
Thibault Nocchi
3a64a22370 deps: updating JF sdk to unstable 2023-04-03 12:52:57 +02:00
Fernando Fernández
2fcf093b6a chore/perf(vue3): cleanup and minor performance improvements
* Wrap all the DOM population inside requestIdleCallback and requestAnimationFrame
* Fix slow scrolling
* Move types under a subdirectory
* Fix missing class in useResponsiveClasses JSDOC
2023-04-03 12:52:57 +02:00
Fernando Fernández
60e6be032f feat(vue3): improvements pass
* Update packages
* Allow the use of data-* attributes with strict template checking
* Use OverlayScrollbars for a consistent scrollbar experience
* Refactor ItemMenu to reduce function complexity
* Refactor Vuetify colors and styles to match Vuetify 3
* Fix color in WatchedIndicator
* Remove unused props in Card
* Add rgb use to all the CSS variables as Vuetify requests it
* Icon fixes
* Fix search bar styling
* Migrate ArtistTab to Composition API
* Reliability and logic improvements to BlurhashImage and fallback behaviour
* Fix order of main app bar and navigation drawer
* Add app bar to music playback page
* Migrate login page to Composition API
* Fix logic error in app-wide api availability
2023-04-03 12:52:57 +02:00
Fernando Fernández
25fd93d528 chore(vue3): plug all the styling rules together 2023-04-03 12:52:57 +02:00
Fernando Fernández
cfb1230a17 chore(vue3): minor fixes 2023-04-03 12:52:57 +02:00
Fernando Fernández
ba6b6ccf51 chore(vue3): start bug bashing and minor improvements
* Update v-menu activator for itemmenu
* Fix app bar icons
* Fix user views
* Migrate swiper
* Fix CORS issues with Vite
* Improve UserImage size handling (TODO: size in UserCard)
* Migrate more minor components to Composition API
2023-04-03 12:52:57 +02:00
Fernando Fernández
af97c2a0b6 chore(vue3): generate route typings using unplugin-vue-router
For pages, we will still use vite-plugin-pages as it's stable and
unplugin-vue-router had issues with layouts. Using both won't increase the bundle
size, as unplugin-vue-router is not imported anywhere in the bundle.

We should keep a close track to both projects and just stick with one in the future.
2023-04-03 12:52:57 +02:00
Fernando Fernández
022e56ee65 chore(vite): remove unnecessary @types dependencies 2023-04-03 12:52:57 +02:00
Fernando Fernández
a0c5c641cd chore(vite): use lodash-es instead of lodash
* In Nuxt, lodash-es rendered a bigger bundle size than lodash, so we kept it. With full complete of our building tools, we can switch back to lodash-es and remove the eslint plugin
2023-04-03 12:52:57 +02:00
Fernando Fernández
7f0c0cf5fe feat(vue3): login flow
* Fix transitions not playing
* Remove vee-validate and use Vuetify validation
* Create icon component while waiting for https://github.com/vuetifyjs/vuetify/pull/16168
* Fix Vuetify themes
2023-04-03 12:52:57 +02:00
Fernando Fernández
71f6414f95 feat(vue3): create socket plugin inside remote plugin
* Update VueUse to 9.6.0 to allow refs as socket URL
2023-04-03 12:52:57 +02:00
Fernando Fernández
8eaa525458 chore(vue3): draft remote plugin and minor QoL improvements
* Add unicorn eslint plugin for stricter code style
* Replace @jellyfin/client-axios with @jellyfin/sdk
* Static bundle Vue-i18n
* Avoid extraneous dependencies in code (eslint)
* Draft router middlewares
* Socket plugin is still pending to be completed
* Remove Axe config (the plugin seems really outdated and problematic and it can always be reintroduced later)
* Rename env.d.ts to environment.d.ts to comply with unicorn/prevent-abbreviations
* Add eslint-plugin-you-dont-need-lodash-underscore to optimize lodash usage and remove unneeded cases
* Create data-manipulation.ts in utils to store functions related to the manipulation of JavaScript data structures
2023-04-03 12:52:57 +02:00
Fernando Fernández
69be7e41b8 chore(vite): adapt WebWorker usage 2023-04-03 12:52:57 +02:00
Fernando Fernández
9d965b2266 chore(node): add engine-strict config to .npmrc 2023-04-03 12:52:57 +02:00
Fernando Fernández
455480afa0 chore(vue3): first iteration with a booting app instance 2023-04-03 12:52:57 +02:00
Fernando Fernández
82461b9e53 chore(vite): tweak sass config and comment more variable blocks
* This is needed in order to finally have a workable build
2023-04-03 12:52:57 +02:00
Fernando Fernández
393458b359 chore(lint): re-add and refactor linting suites 2023-04-03 12:52:57 +02:00
Fernando Fernández
0e0c2bad45 chore(node): upgrade to Node 18 LTS 2023-04-03 12:52:57 +02:00
Fernando Fernández
3f82327b50 chore(vite): add and configure rollup-plugin-visualizer 2023-04-03 12:52:57 +02:00
Fernando Fernández
f84f4228bd chore(vite): fix volar typechecking 2023-04-03 12:52:57 +02:00
Fernando Fernández
e515e20cfb chore(vite): switch to Vue 3 2023-04-03 12:52:57 +02:00
Fernando Fernández
1a68a8133c chore(vite): add vueuse package 2023-04-03 12:52:57 +02:00
Fernando Fernández
559ee520e7 chore(vite): plug vuetify and add ~ alias for backwards compat 2023-04-03 12:52:57 +02:00
Fernando Fernández
bbf03ea7d0 chore(vite): plug pinia, draft App.vue, main.ts and router 2023-04-03 12:52:57 +02:00
Fernando Fernández
cf05f5792d chore(vite): scaffold project
* Remove Jest, ESLint, Stylelint and Prettier to prepare for a further cleanup of all our testing and linting suites
* Testing will be introduced later with vitest and/or Cypress
2023-04-03 12:52:57 +02:00
Fernando Fernández
f216bc0239
chore: tag v0.2.0 2023-04-03 10:48:07 +00:00
Fernando Fernández
8c630da946 chore: remove unnecessary dependencies 2022-08-13 21:57:26 +02:00
Fernando Fernández
0449284a7d refactor: remove qs dependency 2022-08-13 21:57:26 +02:00