components.d.ts provides type support for components imported by unplugin-vue-components.
It needs to be commited to version control. However, any minor modification to components or moving files around modifies it.
As the Vue 3 branch is evolving so quickly, having it committed means that almost every commit will have modifications for it.
In order to keep a clear commit history, it's better to leave it ignored until before the Vue 3 migration's PR is merged
Adding @ as an import alias is something that was done in the project scaffolding.
Using @ it's easier in the keyboard than ~, as ~ typically requires double key taps, while @ is inputted directly in most keyboard layouts.
Replacing the imports was something left for the last moment, as it implied modifying a lot of files at once, which is something I wanted to keep for the final stages of the Vue 3 migration
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
* Remove useless rules from eslintrc
* Remove v-text usage
* Rework layout so the entire app is wrapped around v-app
* Remove useless script declaration in ItemCols
* Migrate PeopleList (previously named PersonList) to Composition API
* Migrate index page to Composition API
* Fix z-indexes of BlurhashImage
* Remove unnecessary computed propierties from app-bar-button-layout
* Migrate HomeSection to Composition API (fixes as well item popping)
* Migrate RelatedItems to Composition API, fixing a crash
* 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
* vite-plugin-layouts requires the layout of the route to be defined at meta.layout, so our custom structure didn't work.
Here's another data structure that tackles the problem and keeps the functionality we want.