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
* 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
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
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
* 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
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
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.
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
* Wrap all the DOM population inside requestIdleCallback and requestAnimationFrame
* Fix slow scrolling
* Move types under a subdirectory
* Fix missing class in useResponsiveClasses JSDOC
* 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
* 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
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.
* 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
* 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
* 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
* 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