diff --git a/.github/labeler.yml b/.github/labeler.yml index 3180205e..5b2d6bf1 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -7,16 +7,18 @@ ci: - changed-files: - any-glob-to-any-file: - '.github/workflows/**/**' + - '.github/renovate.json' + - '.github/labeler.yml' 'frontend:store': - changed-files: - any-glob-to-any-file: - - 'frontend/store/**/*.ts' + - 'packages/frontend/store/**/*.ts' 'frontend:plugins': - changed-files: - any-glob-to-any-file: - - 'frontend/plugins/**/*.ts' + - 'packages/frontend/plugins/**/*.ts' vue: - changed-files: @@ -31,6 +33,8 @@ packaging: ui: - changed-files: - any-glob-to-any-file: - - 'frontend/components/**/*.vue' - - 'frontend/layouts/**/*.vue' - - 'frontend/pages/**/*.vue' + - 'packages/frontend/components/**/*.vue' + - 'packages/frontend/layouts/**/*.vue' + - 'packages/frontend/pages/**/*.vue' + - 'packages/ui-toolkit/**/*.vue' + - 'packages/ui-toolkit/**/*.ts' diff --git a/.gitignore b/.gitignore index 0b488f80..86e8915e 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,6 @@ build/Release # Dependency directories node_modules/ jspm_packages/ -frontend/node_modules/ # TypeScript v1 declaration files typings/ @@ -68,11 +67,11 @@ typings/ # nuxt.js build output .nuxt -frontend/.nuxt +packages/frontend/.nuxt # Nuxt generate dist -frontend/dist +packages/frontend/dist # vuepress build output .vuepress/dist diff --git a/frontend/eslint.config.ts b/packages/frontend/eslint.config.ts similarity index 100% rename from frontend/eslint.config.ts rename to packages/frontend/eslint.config.ts diff --git a/frontend/index.html b/packages/frontend/index.html similarity index 100% rename from frontend/index.html rename to packages/frontend/index.html diff --git a/frontend/package.json b/packages/frontend/package.json similarity index 100% rename from frontend/package.json rename to packages/frontend/package.json diff --git a/frontend/public/config.json b/packages/frontend/public/config.json similarity index 100% rename from frontend/public/config.json rename to packages/frontend/public/config.json diff --git a/frontend/public/favicon.ico b/packages/frontend/public/favicon.ico similarity index 100% rename from frontend/public/favicon.ico rename to packages/frontend/public/favicon.ico diff --git a/frontend/public/icon.svg b/packages/frontend/public/icon.svg similarity index 100% rename from frontend/public/icon.svg rename to packages/frontend/public/icon.svg diff --git a/frontend/public/robots.txt b/packages/frontend/public/robots.txt similarity index 100% rename from frontend/public/robots.txt rename to packages/frontend/public/robots.txt diff --git a/frontend/scripts/virtual-modules.ts b/packages/frontend/scripts/virtual-modules.ts similarity index 100% rename from frontend/scripts/virtual-modules.ts rename to packages/frontend/scripts/virtual-modules.ts diff --git a/frontend/src/App.vue b/packages/frontend/src/App.vue similarity index 100% rename from frontend/src/App.vue rename to packages/frontend/src/App.vue diff --git a/frontend/src/assets/styles/global.css b/packages/frontend/src/assets/styles/global.css similarity index 100% rename from frontend/src/assets/styles/global.css rename to packages/frontend/src/assets/styles/global.css diff --git a/frontend/src/assets/styles/index.css b/packages/frontend/src/assets/styles/index.css similarity index 100% rename from frontend/src/assets/styles/index.css rename to packages/frontend/src/assets/styles/index.css diff --git a/frontend/src/assets/styles/splashscreen.css b/packages/frontend/src/assets/styles/splashscreen.css similarity index 100% rename from frontend/src/assets/styles/splashscreen.css rename to packages/frontend/src/assets/styles/splashscreen.css diff --git a/frontend/src/components/Buttons/FilterButton.vue b/packages/frontend/src/components/Buttons/FilterButton.vue similarity index 100% rename from frontend/src/components/Buttons/FilterButton.vue rename to packages/frontend/src/components/Buttons/FilterButton.vue diff --git a/frontend/src/components/Buttons/LikeButton.vue b/packages/frontend/src/components/Buttons/LikeButton.vue similarity index 100% rename from frontend/src/components/Buttons/LikeButton.vue rename to packages/frontend/src/components/Buttons/LikeButton.vue diff --git a/frontend/src/components/Buttons/MarkPlayedButton.vue b/packages/frontend/src/components/Buttons/MarkPlayedButton.vue similarity index 100% rename from frontend/src/components/Buttons/MarkPlayedButton.vue rename to packages/frontend/src/components/Buttons/MarkPlayedButton.vue diff --git a/frontend/src/components/Buttons/Playback/NextTrackButton.vue b/packages/frontend/src/components/Buttons/Playback/NextTrackButton.vue similarity index 100% rename from frontend/src/components/Buttons/Playback/NextTrackButton.vue rename to packages/frontend/src/components/Buttons/Playback/NextTrackButton.vue diff --git a/frontend/src/components/Buttons/Playback/PlayButton.vue b/packages/frontend/src/components/Buttons/Playback/PlayButton.vue similarity index 100% rename from frontend/src/components/Buttons/Playback/PlayButton.vue rename to packages/frontend/src/components/Buttons/Playback/PlayButton.vue diff --git a/frontend/src/components/Buttons/Playback/PlayPauseButton.vue b/packages/frontend/src/components/Buttons/Playback/PlayPauseButton.vue similarity index 100% rename from frontend/src/components/Buttons/Playback/PlayPauseButton.vue rename to packages/frontend/src/components/Buttons/Playback/PlayPauseButton.vue diff --git a/frontend/src/components/Buttons/Playback/PlaybackSettingsButton.vue b/packages/frontend/src/components/Buttons/Playback/PlaybackSettingsButton.vue similarity index 100% rename from frontend/src/components/Buttons/Playback/PlaybackSettingsButton.vue rename to packages/frontend/src/components/Buttons/Playback/PlaybackSettingsButton.vue diff --git a/frontend/src/components/Buttons/Playback/PreviousTrackButton.vue b/packages/frontend/src/components/Buttons/Playback/PreviousTrackButton.vue similarity index 100% rename from frontend/src/components/Buttons/Playback/PreviousTrackButton.vue rename to packages/frontend/src/components/Buttons/Playback/PreviousTrackButton.vue diff --git a/frontend/src/components/Buttons/Playback/RepeatButton.vue b/packages/frontend/src/components/Buttons/Playback/RepeatButton.vue similarity index 100% rename from frontend/src/components/Buttons/Playback/RepeatButton.vue rename to packages/frontend/src/components/Buttons/Playback/RepeatButton.vue diff --git a/frontend/src/components/Buttons/Playback/ShuffleButton.vue b/packages/frontend/src/components/Buttons/Playback/ShuffleButton.vue similarity index 100% rename from frontend/src/components/Buttons/Playback/ShuffleButton.vue rename to packages/frontend/src/components/Buttons/Playback/ShuffleButton.vue diff --git a/frontend/src/components/Buttons/QueueButton.vue b/packages/frontend/src/components/Buttons/QueueButton.vue similarity index 100% rename from frontend/src/components/Buttons/QueueButton.vue rename to packages/frontend/src/components/Buttons/QueueButton.vue diff --git a/frontend/src/components/Buttons/ScrollToTopButton.vue b/packages/frontend/src/components/Buttons/ScrollToTopButton.vue similarity index 100% rename from frontend/src/components/Buttons/ScrollToTopButton.vue rename to packages/frontend/src/components/Buttons/ScrollToTopButton.vue diff --git a/frontend/src/components/Buttons/SortButton.vue b/packages/frontend/src/components/Buttons/SortButton.vue similarity index 100% rename from frontend/src/components/Buttons/SortButton.vue rename to packages/frontend/src/components/Buttons/SortButton.vue diff --git a/frontend/src/components/Buttons/SubtitleSelectionButton.vue b/packages/frontend/src/components/Buttons/SubtitleSelectionButton.vue similarity index 100% rename from frontend/src/components/Buttons/SubtitleSelectionButton.vue rename to packages/frontend/src/components/Buttons/SubtitleSelectionButton.vue diff --git a/frontend/src/components/Buttons/TypeButton.vue b/packages/frontend/src/components/Buttons/TypeButton.vue similarity index 100% rename from frontend/src/components/Buttons/TypeButton.vue rename to packages/frontend/src/components/Buttons/TypeButton.vue diff --git a/frontend/src/components/Dialogs/ConfirmDialog.vue b/packages/frontend/src/components/Dialogs/ConfirmDialog.vue similarity index 100% rename from frontend/src/components/Dialogs/ConfirmDialog.vue rename to packages/frontend/src/components/Dialogs/ConfirmDialog.vue diff --git a/frontend/src/components/Dialogs/GenericDialog.vue b/packages/frontend/src/components/Dialogs/GenericDialog.vue similarity index 100% rename from frontend/src/components/Dialogs/GenericDialog.vue rename to packages/frontend/src/components/Dialogs/GenericDialog.vue diff --git a/frontend/src/components/Forms/AddServerForm.vue b/packages/frontend/src/components/Forms/AddServerForm.vue similarity index 100% rename from frontend/src/components/Forms/AddServerForm.vue rename to packages/frontend/src/components/Forms/AddServerForm.vue diff --git a/frontend/src/components/Forms/LoginForm.vue b/packages/frontend/src/components/Forms/LoginForm.vue similarity index 100% rename from frontend/src/components/Forms/LoginForm.vue rename to packages/frontend/src/components/Forms/LoginForm.vue diff --git a/frontend/src/components/Item/Card/GenericItemCard.vue b/packages/frontend/src/components/Item/Card/GenericItemCard.vue similarity index 100% rename from frontend/src/components/Item/Card/GenericItemCard.vue rename to packages/frontend/src/components/Item/Card/GenericItemCard.vue diff --git a/frontend/src/components/Item/Card/ItemCard.vue b/packages/frontend/src/components/Item/Card/ItemCard.vue similarity index 100% rename from frontend/src/components/Item/Card/ItemCard.vue rename to packages/frontend/src/components/Item/Card/ItemCard.vue diff --git a/frontend/src/components/Item/Card/ServerCard.vue b/packages/frontend/src/components/Item/Card/ServerCard.vue similarity index 100% rename from frontend/src/components/Item/Card/ServerCard.vue rename to packages/frontend/src/components/Item/Card/ServerCard.vue diff --git a/frontend/src/components/Item/CollectionTabs.vue b/packages/frontend/src/components/Item/CollectionTabs.vue similarity index 100% rename from frontend/src/components/Item/CollectionTabs.vue rename to packages/frontend/src/components/Item/CollectionTabs.vue diff --git a/frontend/src/components/Item/Identify/IdentifyDialog.vue b/packages/frontend/src/components/Item/Identify/IdentifyDialog.vue similarity index 100% rename from frontend/src/components/Item/Identify/IdentifyDialog.vue rename to packages/frontend/src/components/Item/Identify/IdentifyDialog.vue diff --git a/frontend/src/components/Item/Identify/IdentifyResults.vue b/packages/frontend/src/components/Item/Identify/IdentifyResults.vue similarity index 100% rename from frontend/src/components/Item/Identify/IdentifyResults.vue rename to packages/frontend/src/components/Item/Identify/IdentifyResults.vue diff --git a/frontend/src/components/Item/ItemGrid.vue b/packages/frontend/src/components/Item/ItemGrid.vue similarity index 100% rename from frontend/src/components/Item/ItemGrid.vue rename to packages/frontend/src/components/Item/ItemGrid.vue diff --git a/frontend/src/components/Item/ItemMenu.vue b/packages/frontend/src/components/Item/ItemMenu.vue similarity index 100% rename from frontend/src/components/Item/ItemMenu.vue rename to packages/frontend/src/components/Item/ItemMenu.vue diff --git a/frontend/src/components/Item/MediaDetail/MediaDetailAttr.vue b/packages/frontend/src/components/Item/MediaDetail/MediaDetailAttr.vue similarity index 100% rename from frontend/src/components/Item/MediaDetail/MediaDetailAttr.vue rename to packages/frontend/src/components/Item/MediaDetail/MediaDetailAttr.vue diff --git a/frontend/src/components/Item/MediaDetail/MediaDetailContent.vue b/packages/frontend/src/components/Item/MediaDetail/MediaDetailContent.vue similarity index 100% rename from frontend/src/components/Item/MediaDetail/MediaDetailContent.vue rename to packages/frontend/src/components/Item/MediaDetail/MediaDetailContent.vue diff --git a/frontend/src/components/Item/MediaDetail/MediaDetailDialog.vue b/packages/frontend/src/components/Item/MediaDetail/MediaDetailDialog.vue similarity index 100% rename from frontend/src/components/Item/MediaDetail/MediaDetailDialog.vue rename to packages/frontend/src/components/Item/MediaDetail/MediaDetailDialog.vue diff --git a/frontend/src/components/Item/MediaInfo.vue b/packages/frontend/src/components/Item/MediaInfo.vue similarity index 100% rename from frontend/src/components/Item/MediaInfo.vue rename to packages/frontend/src/components/Item/MediaInfo.vue diff --git a/frontend/src/components/Item/MediaSourceSelector.vue b/packages/frontend/src/components/Item/MediaSourceSelector.vue similarity index 100% rename from frontend/src/components/Item/MediaSourceSelector.vue rename to packages/frontend/src/components/Item/MediaSourceSelector.vue diff --git a/frontend/src/components/Item/MediaStreamSelector.vue b/packages/frontend/src/components/Item/MediaStreamSelector.vue similarity index 100% rename from frontend/src/components/Item/MediaStreamSelector.vue rename to packages/frontend/src/components/Item/MediaStreamSelector.vue diff --git a/frontend/src/components/Item/Metadata/DateInput.vue b/packages/frontend/src/components/Item/Metadata/DateInput.vue similarity index 100% rename from frontend/src/components/Item/Metadata/DateInput.vue rename to packages/frontend/src/components/Item/Metadata/DateInput.vue diff --git a/frontend/src/components/Item/Metadata/ImageEditor.vue b/packages/frontend/src/components/Item/Metadata/ImageEditor.vue similarity index 100% rename from frontend/src/components/Item/Metadata/ImageEditor.vue rename to packages/frontend/src/components/Item/Metadata/ImageEditor.vue diff --git a/frontend/src/components/Item/Metadata/ImageSearch.vue b/packages/frontend/src/components/Item/Metadata/ImageSearch.vue similarity index 100% rename from frontend/src/components/Item/Metadata/ImageSearch.vue rename to packages/frontend/src/components/Item/Metadata/ImageSearch.vue diff --git a/frontend/src/components/Item/Metadata/MetadataEditor.vue b/packages/frontend/src/components/Item/Metadata/MetadataEditor.vue similarity index 100% rename from frontend/src/components/Item/Metadata/MetadataEditor.vue rename to packages/frontend/src/components/Item/Metadata/MetadataEditor.vue diff --git a/frontend/src/components/Item/Metadata/MetadataEditorDialog.vue b/packages/frontend/src/components/Item/Metadata/MetadataEditorDialog.vue similarity index 100% rename from frontend/src/components/Item/Metadata/MetadataEditorDialog.vue rename to packages/frontend/src/components/Item/Metadata/MetadataEditorDialog.vue diff --git a/frontend/src/components/Item/Metadata/PersonEditor.vue b/packages/frontend/src/components/Item/Metadata/PersonEditor.vue similarity index 100% rename from frontend/src/components/Item/Metadata/PersonEditor.vue rename to packages/frontend/src/components/Item/Metadata/PersonEditor.vue diff --git a/frontend/src/components/Item/Metadata/RefreshMetadataDialog.vue b/packages/frontend/src/components/Item/Metadata/RefreshMetadataDialog.vue similarity index 100% rename from frontend/src/components/Item/Metadata/RefreshMetadataDialog.vue rename to packages/frontend/src/components/Item/Metadata/RefreshMetadataDialog.vue diff --git a/frontend/src/components/Item/Metadata/UploadImageDialog.vue b/packages/frontend/src/components/Item/Metadata/UploadImageDialog.vue similarity index 100% rename from frontend/src/components/Item/Metadata/UploadImageDialog.vue rename to packages/frontend/src/components/Item/Metadata/UploadImageDialog.vue diff --git a/frontend/src/components/Item/PeopleList.vue b/packages/frontend/src/components/Item/PeopleList.vue similarity index 100% rename from frontend/src/components/Item/PeopleList.vue rename to packages/frontend/src/components/Item/PeopleList.vue diff --git a/frontend/src/components/Item/RelatedItems.vue b/packages/frontend/src/components/Item/RelatedItems.vue similarity index 100% rename from frontend/src/components/Item/RelatedItems.vue rename to packages/frontend/src/components/Item/RelatedItems.vue diff --git a/frontend/src/components/Item/SeasonTabs.vue b/packages/frontend/src/components/Item/SeasonTabs.vue similarity index 100% rename from frontend/src/components/Item/SeasonTabs.vue rename to packages/frontend/src/components/Item/SeasonTabs.vue diff --git a/frontend/src/components/Item/WatchedIndicator.vue b/packages/frontend/src/components/Item/WatchedIndicator.vue similarity index 100% rename from frontend/src/components/Item/WatchedIndicator.vue rename to packages/frontend/src/components/Item/WatchedIndicator.vue diff --git a/frontend/src/components/Layout/AppBar/AppBar.vue b/packages/frontend/src/components/Layout/AppBar/AppBar.vue similarity index 100% rename from frontend/src/components/Layout/AppBar/AppBar.vue rename to packages/frontend/src/components/Layout/AppBar/AppBar.vue diff --git a/frontend/src/components/Layout/AppBar/AppBarButtonLayout.vue b/packages/frontend/src/components/Layout/AppBar/AppBarButtonLayout.vue similarity index 100% rename from frontend/src/components/Layout/AppBar/AppBarButtonLayout.vue rename to packages/frontend/src/components/Layout/AppBar/AppBarButtonLayout.vue diff --git a/frontend/src/components/Layout/AppBar/Buttons/CastButton.vue b/packages/frontend/src/components/Layout/AppBar/Buttons/CastButton.vue similarity index 100% rename from frontend/src/components/Layout/AppBar/Buttons/CastButton.vue rename to packages/frontend/src/components/Layout/AppBar/Buttons/CastButton.vue diff --git a/frontend/src/components/Layout/AppBar/Buttons/TaskManagerButton.vue b/packages/frontend/src/components/Layout/AppBar/Buttons/TaskManagerButton.vue similarity index 100% rename from frontend/src/components/Layout/AppBar/Buttons/TaskManagerButton.vue rename to packages/frontend/src/components/Layout/AppBar/Buttons/TaskManagerButton.vue diff --git a/frontend/src/components/Layout/AppBar/Buttons/UserButton.vue b/packages/frontend/src/components/Layout/AppBar/Buttons/UserButton.vue similarity index 100% rename from frontend/src/components/Layout/AppBar/Buttons/UserButton.vue rename to packages/frontend/src/components/Layout/AppBar/Buttons/UserButton.vue diff --git a/frontend/src/components/Layout/AppBar/SearchField.vue b/packages/frontend/src/components/Layout/AppBar/SearchField.vue similarity index 100% rename from frontend/src/components/Layout/AppBar/SearchField.vue rename to packages/frontend/src/components/Layout/AppBar/SearchField.vue diff --git a/frontend/src/components/Layout/Artist/ArtistTab.vue b/packages/frontend/src/components/Layout/Artist/ArtistTab.vue similarity index 100% rename from frontend/src/components/Layout/Artist/ArtistTab.vue rename to packages/frontend/src/components/Layout/Artist/ArtistTab.vue diff --git a/frontend/src/components/Layout/AudioControls.vue b/packages/frontend/src/components/Layout/AudioControls.vue similarity index 100% rename from frontend/src/components/Layout/AudioControls.vue rename to packages/frontend/src/components/Layout/AudioControls.vue diff --git a/frontend/src/components/Layout/Backdrop.vue b/packages/frontend/src/components/Layout/Backdrop.vue similarity index 100% rename from frontend/src/components/Layout/Backdrop.vue rename to packages/frontend/src/components/Layout/Backdrop.vue diff --git a/frontend/src/components/Layout/Carousel/Carousel.vue b/packages/frontend/src/components/Layout/Carousel/Carousel.vue similarity index 100% rename from frontend/src/components/Layout/Carousel/Carousel.vue rename to packages/frontend/src/components/Layout/Carousel/Carousel.vue diff --git a/frontend/src/components/Layout/Carousel/CarouselProgressBar.vue b/packages/frontend/src/components/Layout/Carousel/CarouselProgressBar.vue similarity index 100% rename from frontend/src/components/Layout/Carousel/CarouselProgressBar.vue rename to packages/frontend/src/components/Layout/Carousel/CarouselProgressBar.vue diff --git a/frontend/src/components/Layout/Carousel/Item/ItemsCarousel.vue b/packages/frontend/src/components/Layout/Carousel/Item/ItemsCarousel.vue similarity index 100% rename from frontend/src/components/Layout/Carousel/Item/ItemsCarousel.vue rename to packages/frontend/src/components/Layout/Carousel/Item/ItemsCarousel.vue diff --git a/frontend/src/components/Layout/Carousel/Item/ItemsCarouselTitle.vue b/packages/frontend/src/components/Layout/Carousel/Item/ItemsCarouselTitle.vue similarity index 100% rename from frontend/src/components/Layout/Carousel/Item/ItemsCarouselTitle.vue rename to packages/frontend/src/components/Layout/Carousel/Item/ItemsCarouselTitle.vue diff --git a/frontend/src/components/Layout/Images/Blurhash/BlurhashCanvas.vue b/packages/frontend/src/components/Layout/Images/Blurhash/BlurhashCanvas.vue similarity index 100% rename from frontend/src/components/Layout/Images/Blurhash/BlurhashCanvas.vue rename to packages/frontend/src/components/Layout/Images/Blurhash/BlurhashCanvas.vue diff --git a/frontend/src/components/Layout/Images/Blurhash/BlurhashImage.vue b/packages/frontend/src/components/Layout/Images/Blurhash/BlurhashImage.vue similarity index 100% rename from frontend/src/components/Layout/Images/Blurhash/BlurhashImage.vue rename to packages/frontend/src/components/Layout/Images/Blurhash/BlurhashImage.vue diff --git a/frontend/src/components/Layout/Images/Blurhash/BlurhashImageIcon.vue b/packages/frontend/src/components/Layout/Images/Blurhash/BlurhashImageIcon.vue similarity index 100% rename from frontend/src/components/Layout/Images/Blurhash/BlurhashImageIcon.vue rename to packages/frontend/src/components/Layout/Images/Blurhash/BlurhashImageIcon.vue diff --git a/frontend/src/components/Layout/Images/UserImage.vue b/packages/frontend/src/components/Layout/Images/UserImage.vue similarity index 100% rename from frontend/src/components/Layout/Images/UserImage.vue rename to packages/frontend/src/components/Layout/Images/UserImage.vue diff --git a/frontend/src/components/Layout/ItemCols.vue b/packages/frontend/src/components/Layout/ItemCols.vue similarity index 100% rename from frontend/src/components/Layout/ItemCols.vue rename to packages/frontend/src/components/Layout/ItemCols.vue diff --git a/frontend/src/components/Layout/MainView.vue b/packages/frontend/src/components/Layout/MainView.vue similarity index 100% rename from frontend/src/components/Layout/MainView.vue rename to packages/frontend/src/components/Layout/MainView.vue diff --git a/frontend/src/components/Layout/Navigation/CommitLink.vue b/packages/frontend/src/components/Layout/Navigation/CommitLink.vue similarity index 100% rename from frontend/src/components/Layout/Navigation/CommitLink.vue rename to packages/frontend/src/components/Layout/Navigation/CommitLink.vue diff --git a/frontend/src/components/Layout/Navigation/NavigationDrawer.vue b/packages/frontend/src/components/Layout/Navigation/NavigationDrawer.vue similarity index 100% rename from frontend/src/components/Layout/Navigation/NavigationDrawer.vue rename to packages/frontend/src/components/Layout/Navigation/NavigationDrawer.vue diff --git a/frontend/src/components/Layout/SettingsPage.vue b/packages/frontend/src/components/Layout/SettingsPage.vue similarity index 100% rename from frontend/src/components/Layout/SettingsPage.vue rename to packages/frontend/src/components/Layout/SettingsPage.vue diff --git a/frontend/src/components/Layout/Splashscreen.vue b/packages/frontend/src/components/Layout/Splashscreen.vue similarity index 100% rename from frontend/src/components/Layout/Splashscreen.vue rename to packages/frontend/src/components/Layout/Splashscreen.vue diff --git a/frontend/src/components/Layout/SwiperSection.vue b/packages/frontend/src/components/Layout/SwiperSection.vue similarity index 100% rename from frontend/src/components/Layout/SwiperSection.vue rename to packages/frontend/src/components/Layout/SwiperSection.vue diff --git a/frontend/src/components/Layout/TimeSlider.vue b/packages/frontend/src/components/Layout/TimeSlider.vue similarity index 100% rename from frontend/src/components/Layout/TimeSlider.vue rename to packages/frontend/src/components/Layout/TimeSlider.vue diff --git a/frontend/src/components/Layout/VolumeSlider.vue b/packages/frontend/src/components/Layout/VolumeSlider.vue similarity index 100% rename from frontend/src/components/Layout/VolumeSlider.vue rename to packages/frontend/src/components/Layout/VolumeSlider.vue diff --git a/frontend/src/components/Playback/DraggableQueue.vue b/packages/frontend/src/components/Playback/DraggableQueue.vue similarity index 100% rename from frontend/src/components/Playback/DraggableQueue.vue rename to packages/frontend/src/components/Playback/DraggableQueue.vue diff --git a/frontend/src/components/Playback/MiniVideoPlayer.vue b/packages/frontend/src/components/Playback/MiniVideoPlayer.vue similarity index 100% rename from frontend/src/components/Playback/MiniVideoPlayer.vue rename to packages/frontend/src/components/Playback/MiniVideoPlayer.vue diff --git a/frontend/src/components/Playback/MusicVisualizer.vue b/packages/frontend/src/components/Playback/MusicVisualizer.vue similarity index 100% rename from frontend/src/components/Playback/MusicVisualizer.vue rename to packages/frontend/src/components/Playback/MusicVisualizer.vue diff --git a/frontend/src/components/Playback/PlayerElement.vue b/packages/frontend/src/components/Playback/PlayerElement.vue similarity index 100% rename from frontend/src/components/Playback/PlayerElement.vue rename to packages/frontend/src/components/Playback/PlayerElement.vue diff --git a/frontend/src/components/Playback/SubtitleTrack.vue b/packages/frontend/src/components/Playback/SubtitleTrack.vue similarity index 100% rename from frontend/src/components/Playback/SubtitleTrack.vue rename to packages/frontend/src/components/Playback/SubtitleTrack.vue diff --git a/frontend/src/components/Playback/TrackList.vue b/packages/frontend/src/components/Playback/TrackList.vue similarity index 100% rename from frontend/src/components/Playback/TrackList.vue rename to packages/frontend/src/components/Playback/TrackList.vue diff --git a/frontend/src/components/Playback/UpNext.vue b/packages/frontend/src/components/Playback/UpNext.vue similarity index 100% rename from frontend/src/components/Playback/UpNext.vue rename to packages/frontend/src/components/Playback/UpNext.vue diff --git a/frontend/src/components/Selectors/FontSelector.vue b/packages/frontend/src/components/Selectors/FontSelector.vue similarity index 100% rename from frontend/src/components/Selectors/FontSelector.vue rename to packages/frontend/src/components/Selectors/FontSelector.vue diff --git a/frontend/src/components/Skeletons/SkeletonCard.vue b/packages/frontend/src/components/Skeletons/SkeletonCard.vue similarity index 100% rename from frontend/src/components/Skeletons/SkeletonCard.vue rename to packages/frontend/src/components/Skeletons/SkeletonCard.vue diff --git a/frontend/src/components/Skeletons/SkeletonItemGrid.vue b/packages/frontend/src/components/Skeletons/SkeletonItemGrid.vue similarity index 100% rename from frontend/src/components/Skeletons/SkeletonItemGrid.vue rename to packages/frontend/src/components/Skeletons/SkeletonItemGrid.vue diff --git a/frontend/src/components/System/AboutLinks.vue b/packages/frontend/src/components/System/AboutLinks.vue similarity index 100% rename from frontend/src/components/System/AboutLinks.vue rename to packages/frontend/src/components/System/AboutLinks.vue diff --git a/frontend/src/components/System/AddApiKey.vue b/packages/frontend/src/components/System/AddApiKey.vue similarity index 100% rename from frontend/src/components/System/AddApiKey.vue rename to packages/frontend/src/components/System/AddApiKey.vue diff --git a/frontend/src/components/System/LoadingIndicator.vue b/packages/frontend/src/components/System/LoadingIndicator.vue similarity index 100% rename from frontend/src/components/System/LoadingIndicator.vue rename to packages/frontend/src/components/System/LoadingIndicator.vue diff --git a/frontend/src/components/System/LocaleSwitcher.vue b/packages/frontend/src/components/System/LocaleSwitcher.vue similarity index 100% rename from frontend/src/components/System/LocaleSwitcher.vue rename to packages/frontend/src/components/System/LocaleSwitcher.vue diff --git a/frontend/src/components/System/Snackbar.vue b/packages/frontend/src/components/System/Snackbar.vue similarity index 100% rename from frontend/src/components/System/Snackbar.vue rename to packages/frontend/src/components/System/Snackbar.vue diff --git a/frontend/src/components/Users/UserCard.vue b/packages/frontend/src/components/Users/UserCard.vue similarity index 100% rename from frontend/src/components/Users/UserCard.vue rename to packages/frontend/src/components/Users/UserCard.vue diff --git a/frontend/src/components/Wizard/WizardAdminAccount.vue b/packages/frontend/src/components/Wizard/WizardAdminAccount.vue similarity index 100% rename from frontend/src/components/Wizard/WizardAdminAccount.vue rename to packages/frontend/src/components/Wizard/WizardAdminAccount.vue diff --git a/frontend/src/components/Wizard/WizardLanguage.vue b/packages/frontend/src/components/Wizard/WizardLanguage.vue similarity index 100% rename from frontend/src/components/Wizard/WizardLanguage.vue rename to packages/frontend/src/components/Wizard/WizardLanguage.vue diff --git a/frontend/src/components/Wizard/WizardMetadata.vue b/packages/frontend/src/components/Wizard/WizardMetadata.vue similarity index 100% rename from frontend/src/components/Wizard/WizardMetadata.vue rename to packages/frontend/src/components/Wizard/WizardMetadata.vue diff --git a/frontend/src/components/Wizard/WizardRemoteAccess.vue b/packages/frontend/src/components/Wizard/WizardRemoteAccess.vue similarity index 100% rename from frontend/src/components/Wizard/WizardRemoteAccess.vue rename to packages/frontend/src/components/Wizard/WizardRemoteAccess.vue diff --git a/frontend/src/composables/apis.ts b/packages/frontend/src/composables/apis.ts similarity index 100% rename from frontend/src/composables/apis.ts rename to packages/frontend/src/composables/apis.ts diff --git a/frontend/src/composables/backdrop.ts b/packages/frontend/src/composables/backdrop.ts similarity index 100% rename from frontend/src/composables/backdrop.ts rename to packages/frontend/src/composables/backdrop.ts diff --git a/frontend/src/composables/page-title.ts b/packages/frontend/src/composables/page-title.ts similarity index 100% rename from frontend/src/composables/page-title.ts rename to packages/frontend/src/composables/page-title.ts diff --git a/frontend/src/composables/use-confirm-dialog.ts b/packages/frontend/src/composables/use-confirm-dialog.ts similarity index 100% rename from frontend/src/composables/use-confirm-dialog.ts rename to packages/frontend/src/composables/use-confirm-dialog.ts diff --git a/frontend/src/composables/use-datefns.ts b/packages/frontend/src/composables/use-datefns.ts similarity index 100% rename from frontend/src/composables/use-datefns.ts rename to packages/frontend/src/composables/use-datefns.ts diff --git a/frontend/src/composables/use-loading.ts b/packages/frontend/src/composables/use-loading.ts similarity index 100% rename from frontend/src/composables/use-loading.ts rename to packages/frontend/src/composables/use-loading.ts diff --git a/frontend/src/composables/use-playback.ts b/packages/frontend/src/composables/use-playback.ts similarity index 100% rename from frontend/src/composables/use-playback.ts rename to packages/frontend/src/composables/use-playback.ts diff --git a/frontend/src/composables/use-responsive-classes.ts b/packages/frontend/src/composables/use-responsive-classes.ts similarity index 100% rename from frontend/src/composables/use-responsive-classes.ts rename to packages/frontend/src/composables/use-responsive-classes.ts diff --git a/frontend/src/composables/use-snackbar.ts b/packages/frontend/src/composables/use-snackbar.ts similarity index 100% rename from frontend/src/composables/use-snackbar.ts rename to packages/frontend/src/composables/use-snackbar.ts diff --git a/frontend/src/layouts/default.vue b/packages/frontend/src/layouts/default.vue similarity index 100% rename from frontend/src/layouts/default.vue rename to packages/frontend/src/layouts/default.vue diff --git a/frontend/src/layouts/fullpage.vue b/packages/frontend/src/layouts/fullpage.vue similarity index 100% rename from frontend/src/layouts/fullpage.vue rename to packages/frontend/src/layouts/fullpage.vue diff --git a/frontend/src/layouts/server.vue b/packages/frontend/src/layouts/server.vue similarity index 100% rename from frontend/src/layouts/server.vue rename to packages/frontend/src/layouts/server.vue diff --git a/frontend/src/main.ts b/packages/frontend/src/main.ts similarity index 100% rename from frontend/src/main.ts rename to packages/frontend/src/main.ts diff --git a/frontend/src/pages/artist/[itemId].vue b/packages/frontend/src/pages/artist/[itemId].vue similarity index 100% rename from frontend/src/pages/artist/[itemId].vue rename to packages/frontend/src/pages/artist/[itemId].vue diff --git a/frontend/src/pages/genre/[itemId].vue b/packages/frontend/src/pages/genre/[itemId].vue similarity index 100% rename from frontend/src/pages/genre/[itemId].vue rename to packages/frontend/src/pages/genre/[itemId].vue diff --git a/frontend/src/pages/index.vue b/packages/frontend/src/pages/index.vue similarity index 100% rename from frontend/src/pages/index.vue rename to packages/frontend/src/pages/index.vue diff --git a/frontend/src/pages/item/[itemId].vue b/packages/frontend/src/pages/item/[itemId].vue similarity index 100% rename from frontend/src/pages/item/[itemId].vue rename to packages/frontend/src/pages/item/[itemId].vue diff --git a/frontend/src/pages/library/[itemId].vue b/packages/frontend/src/pages/library/[itemId].vue similarity index 100% rename from frontend/src/pages/library/[itemId].vue rename to packages/frontend/src/pages/library/[itemId].vue diff --git a/frontend/src/pages/metadata.vue b/packages/frontend/src/pages/metadata.vue similarity index 100% rename from frontend/src/pages/metadata.vue rename to packages/frontend/src/pages/metadata.vue diff --git a/frontend/src/pages/musicalbum/[itemId].vue b/packages/frontend/src/pages/musicalbum/[itemId].vue similarity index 100% rename from frontend/src/pages/musicalbum/[itemId].vue rename to packages/frontend/src/pages/musicalbum/[itemId].vue diff --git a/frontend/src/pages/person/[itemId].vue b/packages/frontend/src/pages/person/[itemId].vue similarity index 100% rename from frontend/src/pages/person/[itemId].vue rename to packages/frontend/src/pages/person/[itemId].vue diff --git a/frontend/src/pages/playback/music.vue b/packages/frontend/src/pages/playback/music.vue similarity index 100% rename from frontend/src/pages/playback/music.vue rename to packages/frontend/src/pages/playback/music.vue diff --git a/frontend/src/pages/playback/video.vue b/packages/frontend/src/pages/playback/video.vue similarity index 100% rename from frontend/src/pages/playback/video.vue rename to packages/frontend/src/pages/playback/video.vue diff --git a/frontend/src/pages/search.vue b/packages/frontend/src/pages/search.vue similarity index 100% rename from frontend/src/pages/search.vue rename to packages/frontend/src/pages/search.vue diff --git a/frontend/src/pages/series/[itemId].vue b/packages/frontend/src/pages/series/[itemId].vue similarity index 100% rename from frontend/src/pages/series/[itemId].vue rename to packages/frontend/src/pages/series/[itemId].vue diff --git a/frontend/src/pages/server/add.vue b/packages/frontend/src/pages/server/add.vue similarity index 100% rename from frontend/src/pages/server/add.vue rename to packages/frontend/src/pages/server/add.vue diff --git a/frontend/src/pages/server/login.vue b/packages/frontend/src/pages/server/login.vue similarity index 100% rename from frontend/src/pages/server/login.vue rename to packages/frontend/src/pages/server/login.vue diff --git a/frontend/src/pages/server/select.vue b/packages/frontend/src/pages/server/select.vue similarity index 100% rename from frontend/src/pages/server/select.vue rename to packages/frontend/src/pages/server/select.vue diff --git a/frontend/src/pages/settings/apikeys.vue b/packages/frontend/src/pages/settings/apikeys.vue similarity index 100% rename from frontend/src/pages/settings/apikeys.vue rename to packages/frontend/src/pages/settings/apikeys.vue diff --git a/frontend/src/pages/settings/devices.vue b/packages/frontend/src/pages/settings/devices.vue similarity index 100% rename from frontend/src/pages/settings/devices.vue rename to packages/frontend/src/pages/settings/devices.vue diff --git a/frontend/src/pages/settings/index.vue b/packages/frontend/src/pages/settings/index.vue similarity index 100% rename from frontend/src/pages/settings/index.vue rename to packages/frontend/src/pages/settings/index.vue diff --git a/frontend/src/pages/settings/logs-and-activity.vue b/packages/frontend/src/pages/settings/logs-and-activity.vue similarity index 100% rename from frontend/src/pages/settings/logs-and-activity.vue rename to packages/frontend/src/pages/settings/logs-and-activity.vue diff --git a/frontend/src/pages/settings/server.vue b/packages/frontend/src/pages/settings/server.vue similarity index 100% rename from frontend/src/pages/settings/server.vue rename to packages/frontend/src/pages/settings/server.vue diff --git a/frontend/src/pages/settings/subtitles.vue b/packages/frontend/src/pages/settings/subtitles.vue similarity index 100% rename from frontend/src/pages/settings/subtitles.vue rename to packages/frontend/src/pages/settings/subtitles.vue diff --git a/frontend/src/pages/settings/users/[id].vue b/packages/frontend/src/pages/settings/users/[id].vue similarity index 100% rename from frontend/src/pages/settings/users/[id].vue rename to packages/frontend/src/pages/settings/users/[id].vue diff --git a/frontend/src/pages/settings/users/index.vue b/packages/frontend/src/pages/settings/users/index.vue similarity index 100% rename from frontend/src/pages/settings/users/index.vue rename to packages/frontend/src/pages/settings/users/index.vue diff --git a/frontend/src/pages/settings/users/new.vue b/packages/frontend/src/pages/settings/users/new.vue similarity index 100% rename from frontend/src/pages/settings/users/new.vue rename to packages/frontend/src/pages/settings/users/new.vue diff --git a/frontend/src/pages/wizard.vue b/packages/frontend/src/pages/wizard.vue similarity index 100% rename from frontend/src/pages/wizard.vue rename to packages/frontend/src/pages/wizard.vue diff --git a/frontend/src/plugins/directives.ts b/packages/frontend/src/plugins/directives.ts similarity index 100% rename from frontend/src/plugins/directives.ts rename to packages/frontend/src/plugins/directives.ts diff --git a/frontend/src/plugins/remote/auth.ts b/packages/frontend/src/plugins/remote/auth.ts similarity index 100% rename from frontend/src/plugins/remote/auth.ts rename to packages/frontend/src/plugins/remote/auth.ts diff --git a/frontend/src/plugins/remote/axios.ts b/packages/frontend/src/plugins/remote/axios.ts similarity index 100% rename from frontend/src/plugins/remote/axios.ts rename to packages/frontend/src/plugins/remote/axios.ts diff --git a/frontend/src/plugins/remote/index.ts b/packages/frontend/src/plugins/remote/index.ts similarity index 100% rename from frontend/src/plugins/remote/index.ts rename to packages/frontend/src/plugins/remote/index.ts diff --git a/frontend/src/plugins/remote/sdk/index.ts b/packages/frontend/src/plugins/remote/sdk/index.ts similarity index 100% rename from frontend/src/plugins/remote/sdk/index.ts rename to packages/frontend/src/plugins/remote/sdk/index.ts diff --git a/frontend/src/plugins/remote/sdk/sdk-utils.ts b/packages/frontend/src/plugins/remote/sdk/sdk-utils.ts similarity index 100% rename from frontend/src/plugins/remote/sdk/sdk-utils.ts rename to packages/frontend/src/plugins/remote/sdk/sdk-utils.ts diff --git a/frontend/src/plugins/remote/socket.ts b/packages/frontend/src/plugins/remote/socket.ts similarity index 100% rename from frontend/src/plugins/remote/socket.ts rename to packages/frontend/src/plugins/remote/socket.ts diff --git a/frontend/src/plugins/remote/types.d.ts b/packages/frontend/src/plugins/remote/types.d.ts similarity index 100% rename from frontend/src/plugins/remote/types.d.ts rename to packages/frontend/src/plugins/remote/types.d.ts diff --git a/frontend/src/plugins/router/index.ts b/packages/frontend/src/plugins/router/index.ts similarity index 100% rename from frontend/src/plugins/router/index.ts rename to packages/frontend/src/plugins/router/index.ts diff --git a/frontend/src/plugins/router/middlewares/admin-pages.ts b/packages/frontend/src/plugins/router/middlewares/admin-pages.ts similarity index 100% rename from frontend/src/plugins/router/middlewares/admin-pages.ts rename to packages/frontend/src/plugins/router/middlewares/admin-pages.ts diff --git a/frontend/src/plugins/router/middlewares/login.ts b/packages/frontend/src/plugins/router/middlewares/login.ts similarity index 100% rename from frontend/src/plugins/router/middlewares/login.ts rename to packages/frontend/src/plugins/router/middlewares/login.ts diff --git a/frontend/src/plugins/router/middlewares/meta.ts b/packages/frontend/src/plugins/router/middlewares/meta.ts similarity index 100% rename from frontend/src/plugins/router/middlewares/meta.ts rename to packages/frontend/src/plugins/router/middlewares/meta.ts diff --git a/frontend/src/plugins/router/middlewares/playback.ts b/packages/frontend/src/plugins/router/middlewares/playback.ts similarity index 100% rename from frontend/src/plugins/router/middlewares/playback.ts rename to packages/frontend/src/plugins/router/middlewares/playback.ts diff --git a/frontend/src/plugins/router/middlewares/validate.ts b/packages/frontend/src/plugins/router/middlewares/validate.ts similarity index 100% rename from frontend/src/plugins/router/middlewares/validate.ts rename to packages/frontend/src/plugins/router/middlewares/validate.ts diff --git a/frontend/src/plugins/vuetify.ts b/packages/frontend/src/plugins/vuetify.ts similarity index 100% rename from frontend/src/plugins/vuetify.ts rename to packages/frontend/src/plugins/vuetify.ts diff --git a/frontend/src/plugins/workers/blurhash-drawer.worker.ts b/packages/frontend/src/plugins/workers/blurhash-drawer.worker.ts similarity index 100% rename from frontend/src/plugins/workers/blurhash-drawer.worker.ts rename to packages/frontend/src/plugins/workers/blurhash-drawer.worker.ts diff --git a/frontend/src/plugins/workers/generic.worker.ts b/packages/frontend/src/plugins/workers/generic.worker.ts similarity index 100% rename from frontend/src/plugins/workers/generic.worker.ts rename to packages/frontend/src/plugins/workers/generic.worker.ts diff --git a/frontend/src/plugins/workers/generic/subtitles.ts b/packages/frontend/src/plugins/workers/generic/subtitles.ts similarity index 100% rename from frontend/src/plugins/workers/generic/subtitles.ts rename to packages/frontend/src/plugins/workers/generic/subtitles.ts diff --git a/frontend/src/plugins/workers/index.ts b/packages/frontend/src/plugins/workers/index.ts similarity index 100% rename from frontend/src/plugins/workers/index.ts rename to packages/frontend/src/plugins/workers/index.ts diff --git a/frontend/src/splashscreen.ts b/packages/frontend/src/splashscreen.ts similarity index 100% rename from frontend/src/splashscreen.ts rename to packages/frontend/src/splashscreen.ts diff --git a/frontend/src/store/dbs/api/api-response.ts b/packages/frontend/src/store/dbs/api/api-response.ts similarity index 100% rename from frontend/src/store/dbs/api/api-response.ts rename to packages/frontend/src/store/dbs/api/api-response.ts diff --git a/frontend/src/store/dbs/api/apidb.worker.ts b/packages/frontend/src/store/dbs/api/apidb.worker.ts similarity index 100% rename from frontend/src/store/dbs/api/apidb.worker.ts rename to packages/frontend/src/store/dbs/api/apidb.worker.ts diff --git a/frontend/src/store/dbs/api/index.ts b/packages/frontend/src/store/dbs/api/index.ts similarity index 100% rename from frontend/src/store/dbs/api/index.ts rename to packages/frontend/src/store/dbs/api/index.ts diff --git a/frontend/src/store/dbs/api/item.ts b/packages/frontend/src/store/dbs/api/item.ts similarity index 100% rename from frontend/src/store/dbs/api/item.ts rename to packages/frontend/src/store/dbs/api/item.ts diff --git a/frontend/src/store/dbs/base-db.ts b/packages/frontend/src/store/dbs/base-db.ts similarity index 100% rename from frontend/src/store/dbs/base-db.ts rename to packages/frontend/src/store/dbs/base-db.ts diff --git a/frontend/src/store/dbs/base-entity.ts b/packages/frontend/src/store/dbs/base-entity.ts similarity index 100% rename from frontend/src/store/dbs/base-entity.ts rename to packages/frontend/src/store/dbs/base-entity.ts diff --git a/frontend/src/store/index.ts b/packages/frontend/src/store/index.ts similarity index 100% rename from frontend/src/store/index.ts rename to packages/frontend/src/store/index.ts diff --git a/frontend/src/store/keys.ts b/packages/frontend/src/store/keys.ts similarity index 100% rename from frontend/src/store/keys.ts rename to packages/frontend/src/store/keys.ts diff --git a/frontend/src/store/playback-manager.ts b/packages/frontend/src/store/playback-manager.ts similarity index 100% rename from frontend/src/store/playback-manager.ts rename to packages/frontend/src/store/playback-manager.ts diff --git a/frontend/src/store/player-element.ts b/packages/frontend/src/store/player-element.ts similarity index 100% rename from frontend/src/store/player-element.ts rename to packages/frontend/src/store/player-element.ts diff --git a/frontend/src/store/settings/client.ts b/packages/frontend/src/store/settings/client.ts similarity index 100% rename from frontend/src/store/settings/client.ts rename to packages/frontend/src/store/settings/client.ts diff --git a/frontend/src/store/settings/subtitle.ts b/packages/frontend/src/store/settings/subtitle.ts similarity index 100% rename from frontend/src/store/settings/subtitle.ts rename to packages/frontend/src/store/settings/subtitle.ts diff --git a/frontend/src/store/settings/theme.ts b/packages/frontend/src/store/settings/theme.ts similarity index 100% rename from frontend/src/store/settings/theme.ts rename to packages/frontend/src/store/settings/theme.ts diff --git a/frontend/src/store/super/base-state.ts b/packages/frontend/src/store/super/base-state.ts similarity index 100% rename from frontend/src/store/super/base-state.ts rename to packages/frontend/src/store/super/base-state.ts diff --git a/frontend/src/store/super/common-store.ts b/packages/frontend/src/store/super/common-store.ts similarity index 100% rename from frontend/src/store/super/common-store.ts rename to packages/frontend/src/store/super/common-store.ts diff --git a/frontend/src/store/super/synced-store.ts b/packages/frontend/src/store/super/synced-store.ts similarity index 100% rename from frontend/src/store/super/synced-store.ts rename to packages/frontend/src/store/super/synced-store.ts diff --git a/frontend/src/store/task-manager.ts b/packages/frontend/src/store/task-manager.ts similarity index 100% rename from frontend/src/store/task-manager.ts rename to packages/frontend/src/store/task-manager.ts diff --git a/frontend/src/utils/browser-detection.ts b/packages/frontend/src/utils/browser-detection.ts similarity index 100% rename from frontend/src/utils/browser-detection.ts rename to packages/frontend/src/utils/browser-detection.ts diff --git a/frontend/src/utils/data-manipulation.ts b/packages/frontend/src/utils/data-manipulation.ts similarity index 100% rename from frontend/src/utils/data-manipulation.ts rename to packages/frontend/src/utils/data-manipulation.ts diff --git a/frontend/src/utils/external-config.ts b/packages/frontend/src/utils/external-config.ts similarity index 100% rename from frontend/src/utils/external-config.ts rename to packages/frontend/src/utils/external-config.ts diff --git a/frontend/src/utils/forms.ts b/packages/frontend/src/utils/forms.ts similarity index 100% rename from frontend/src/utils/forms.ts rename to packages/frontend/src/utils/forms.ts diff --git a/frontend/src/utils/i18n.ts b/packages/frontend/src/utils/i18n.ts similarity index 100% rename from frontend/src/utils/i18n.ts rename to packages/frontend/src/utils/i18n.ts diff --git a/frontend/src/utils/images.ts b/packages/frontend/src/utils/images.ts similarity index 100% rename from frontend/src/utils/images.ts rename to packages/frontend/src/utils/images.ts diff --git a/frontend/src/utils/items.ts b/packages/frontend/src/utils/items.ts similarity index 100% rename from frontend/src/utils/items.ts rename to packages/frontend/src/utils/items.ts diff --git a/frontend/src/utils/playback-profiles/directplay-profile.ts b/packages/frontend/src/utils/playback-profiles/directplay-profile.ts similarity index 100% rename from frontend/src/utils/playback-profiles/directplay-profile.ts rename to packages/frontend/src/utils/playback-profiles/directplay-profile.ts diff --git a/frontend/src/utils/playback-profiles/helpers/audio-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/audio-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/audio-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/audio-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/codec-profiles.ts b/packages/frontend/src/utils/playback-profiles/helpers/codec-profiles.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/codec-profiles.ts rename to packages/frontend/src/utils/playback-profiles/helpers/codec-profiles.ts diff --git a/frontend/src/utils/playback-profiles/helpers/fmp4-audio-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/fmp4-audio-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/fmp4-audio-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/fmp4-audio-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/fmp4-video-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/fmp4-video-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/fmp4-video-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/fmp4-video-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/hls-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/hls-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/hls-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/hls-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/mp4-audio-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/mp4-audio-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/mp4-audio-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/mp4-audio-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/mp4-video-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/mp4-video-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/mp4-video-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/mp4-video-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/transcoding-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/transcoding-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/transcoding-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/transcoding-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/ts-audio-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/ts-audio-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/ts-audio-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/ts-audio-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/ts-video-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/ts-video-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/ts-video-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/ts-video-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/webm-audio-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/webm-audio-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/webm-audio-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/webm-audio-formats.ts diff --git a/frontend/src/utils/playback-profiles/helpers/webm-video-formats.ts b/packages/frontend/src/utils/playback-profiles/helpers/webm-video-formats.ts similarity index 100% rename from frontend/src/utils/playback-profiles/helpers/webm-video-formats.ts rename to packages/frontend/src/utils/playback-profiles/helpers/webm-video-formats.ts diff --git a/frontend/src/utils/playback-profiles/index.ts b/packages/frontend/src/utils/playback-profiles/index.ts similarity index 100% rename from frontend/src/utils/playback-profiles/index.ts rename to packages/frontend/src/utils/playback-profiles/index.ts diff --git a/frontend/src/utils/playback-profiles/subtitle-profile.ts b/packages/frontend/src/utils/playback-profiles/subtitle-profile.ts similarity index 100% rename from frontend/src/utils/playback-profiles/subtitle-profile.ts rename to packages/frontend/src/utils/playback-profiles/subtitle-profile.ts diff --git a/frontend/src/utils/playback-profiles/transcoding-profile.ts b/packages/frontend/src/utils/playback-profiles/transcoding-profile.ts similarity index 100% rename from frontend/src/utils/playback-profiles/transcoding-profile.ts rename to packages/frontend/src/utils/playback-profiles/transcoding-profile.ts diff --git a/frontend/src/utils/time.ts b/packages/frontend/src/utils/time.ts similarity index 100% rename from frontend/src/utils/time.ts rename to packages/frontend/src/utils/time.ts diff --git a/frontend/storybook/main.ts b/packages/frontend/storybook/main.ts similarity index 100% rename from frontend/storybook/main.ts rename to packages/frontend/storybook/main.ts diff --git a/frontend/storybook/preview.ts b/packages/frontend/storybook/preview.ts similarity index 100% rename from frontend/storybook/preview.ts rename to packages/frontend/storybook/preview.ts diff --git a/frontend/storybook/stories/Playback/TrackList.stories.ts b/packages/frontend/storybook/stories/Playback/TrackList.stories.ts similarity index 100% rename from frontend/storybook/stories/Playback/TrackList.stories.ts rename to packages/frontend/storybook/stories/Playback/TrackList.stories.ts diff --git a/frontend/tsconfig.json b/packages/frontend/tsconfig.json similarity index 100% rename from frontend/tsconfig.json rename to packages/frontend/tsconfig.json diff --git a/frontend/types/global/attributes.d.ts b/packages/frontend/types/global/attributes.d.ts similarity index 100% rename from frontend/types/global/attributes.d.ts rename to packages/frontend/types/global/attributes.d.ts diff --git a/frontend/types/global/components.d.ts b/packages/frontend/types/global/components.d.ts similarity index 100% rename from frontend/types/global/components.d.ts rename to packages/frontend/types/global/components.d.ts diff --git a/frontend/types/global/plugins.d.ts b/packages/frontend/types/global/plugins.d.ts similarity index 100% rename from frontend/types/global/plugins.d.ts rename to packages/frontend/types/global/plugins.d.ts diff --git a/frontend/types/global/routes.d.ts b/packages/frontend/types/global/routes.d.ts similarity index 100% rename from frontend/types/global/routes.d.ts rename to packages/frontend/types/global/routes.d.ts diff --git a/frontend/types/global/util.d.ts b/packages/frontend/types/global/util.d.ts similarity index 100% rename from frontend/types/global/util.d.ts rename to packages/frontend/types/global/util.d.ts diff --git a/frontend/types/modules/virtual.d.ts b/packages/frontend/types/modules/virtual.d.ts similarity index 100% rename from frontend/types/modules/virtual.d.ts rename to packages/frontend/types/modules/virtual.d.ts diff --git a/frontend/uno.config.ts b/packages/frontend/uno.config.ts similarity index 100% rename from frontend/uno.config.ts rename to packages/frontend/uno.config.ts diff --git a/frontend/vite.config.ts b/packages/frontend/vite.config.ts similarity index 100% rename from frontend/vite.config.ts rename to packages/frontend/vite.config.ts diff --git a/packages/shared/package.json b/packages/shared/package.json index 714b09b9..0f850653 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -15,7 +15,8 @@ }, "devDependencies": { "@jellyfin-vue/configs": "workspace:*", - "find-up-simple": "catalog:" + "find-up-simple": "catalog:", + "yaml": "2.8.3" }, "dependencies": { "@vue/shared": "catalog:", diff --git a/packages/shared/src/node/utils.ts b/packages/shared/src/node/utils.ts index 1ef0e31b..094c793d 100644 --- a/packages/shared/src/node/utils.ts +++ b/packages/shared/src/node/utils.ts @@ -2,17 +2,35 @@ import { globSync, readFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { findUpSync } from 'find-up-simple'; import type { LiteralUnion } from 'type-fest'; +import { parse } from 'yaml'; const workspaceManifest = findUpSync('pnpm-workspace.yaml', { type: 'file' }); const monorepoRoot = workspaceManifest ? dirname(workspaceManifest) : process.cwd(); +/** + * Gets the workspace packages directly from pnpm configuration + * @param workspaceManifestPath + * @returns + */ +function getWorkspacePackagePatterns(workspaceManifestPath: string): string[] { + const workspace = parse(readFileSync(workspaceManifestPath, 'utf8')) as { packages?: unknown }; + + if (!workspace || !Array.isArray(workspace.packages)) { + return []; + } + + return workspace.packages.filter((packagePattern): packagePattern is string => typeof packagePattern === 'string'); +} + const packagePaths = (() => { const relation = new Map(); - const packageJsonPaths = [ - join(monorepoRoot, 'frontend/package.json'), - join(monorepoRoot, 'packaging/tauri/package.json'), - ...globSync(join(monorepoRoot, 'packages/*/package.json')) - ]; + const packageJsonPaths = new Set( + workspaceManifest + ? getWorkspacePackagePatterns(workspaceManifest).flatMap(packagePattern => + globSync(join(monorepoRoot, packagePattern, 'package.json')) + ) + : [] + ); for (const packageJsonPath of packageJsonPaths) { const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as { name?: string }; diff --git a/packages/ui-toolkit/storybook/main.ts b/packages/ui-toolkit/storybook/main.ts index bb8ca933..6d7c8052 100644 --- a/packages/ui-toolkit/storybook/main.ts +++ b/packages/ui-toolkit/storybook/main.ts @@ -1,6 +1,11 @@ import storybookConfig from '@jellyfin-vue/configs/storybook'; +import { getPackagePath } from '@jellyfin-vue/shared/node/utils'; +import { join } from 'node:path'; -storybookConfig.core.builder.options.viteConfigPath = '../../frontend/vite.config.ts'; +storybookConfig.core.builder.options.viteConfigPath = join( + getPackagePath('@jellyfin-vue/frontend')!, + 'vite.config.ts' +); // eslint-disable-next-line unicorn/prefer-export-from export default storybookConfig; diff --git a/packaging/deb/debian/rules b/packaging/deb/debian/rules index 7789df3a..171a3241 100755 --- a/packaging/deb/debian/rules +++ b/packaging/deb/debian/rules @@ -11,14 +11,13 @@ override_dh_auto_test: override_dh_clistrip: override_dh_auto_build: - cp -ra root/{package.json,pnpm-workspace.yaml,pnpm-lock.yaml,frontend,packages} $(CURDIR)/ + cp -ra root/{package.json,pnpm-workspace.yaml,pnpm-lock.yaml,packages} $(CURDIR)/ corepack pnpm install --frozen-lockfile - cd frontend && corepack pnpm build - mv $(CURDIR)/frontend/dist $(CURDIR)/dist - rm -rf $(CURDIR)/frontend $(CURDIR)/packages $(CURDIR)/node_modules $(CURDIR)/package.json $(CURDIR)/pnpm-lock.yaml $(CURDIR)/pnpm-workspace.yaml + cd packages/frontend && corepack pnpm build + mv $(CURDIR)/packages/frontend/dist $(CURDIR)/dist + rm -rf $(CURDIR)/packages $(CURDIR)/node_modules $(CURDIR)/package.json $(CURDIR)/pnpm-lock.yaml $(CURDIR)/pnpm-workspace.yaml override_dh_auto_clean: - test -d $(CURDIR)/frontend && rm -rf '$(CURDIR)/frontend' || true test -d $(CURDIR)/packages && rm -rf '$(CURDIR)/packages' || true test -d $(CURDIR)/dist && rm -rf '$(CURDIR)/dist' || true test -d $(CURDIR)/node_modules && rm -rf '$(CURDIR)/node_modules' || true diff --git a/packaging/docker/Dockerfile b/packaging/docker/Dockerfile index 61a59946..ab56ebca 100644 --- a/packaging/docker/Dockerfile +++ b/packaging/docker/Dockerfile @@ -11,9 +11,8 @@ ENV IS_STABLE=$IS_STABLE ENV COMMIT_HASH=$COMMIT_HASH COPY package.json pnpm-lock.yaml pnpm-workspace.yaml /app/ -COPY frontend /app/frontend COPY packages /app/packages -WORKDIR /app/frontend +WORKDIR /app/packages/frontend # Build client RUN corepack pnpm install --frozen-lockfile && corepack pnpm build @@ -30,7 +29,7 @@ COPY LICENSE /usr/share/licenses/jellyfin-vue USER root RUN rm -rf "$ASSETS"/* -COPY --from=build /app/frontend/dist/ "$ASSETS" +COPY --from=build /app/packages/frontend/dist/ "$ASSETS" RUN chmod +x /*.sh && /postunpack.sh && rm /postunpack.sh USER nginx WORKDIR "$ASSETS" diff --git a/packaging/tauri/package.json b/packaging/tauri/package.json index c01c8a8e..07b811db 100644 --- a/packaging/tauri/package.json +++ b/packaging/tauri/package.json @@ -3,7 +3,7 @@ "private": true, "scripts": { "start": "pnpm gen-icon && tauri dev", - "gen-icon": "tauri icon ../../frontend/public/icon.svg", + "gen-icon": "tauri icon ../../packages/frontend/public/icon.svg", "build": "pnpm gen-icon && tauri build", "clean": "git clean -fxd" }, diff --git a/packaging/tauri/tauri.conf.json b/packaging/tauri/tauri.conf.json index b10d03c8..3c95fcbf 100644 --- a/packaging/tauri/tauri.conf.json +++ b/packaging/tauri/tauri.conf.json @@ -25,7 +25,7 @@ "devUrl": "http://127.0.0.1:3000" }, "productName": "jellyfin-vue", - "version": "../../frontend/package.json", + "version": "../../packages/frontend/package.json", "identifier": "org.jellyfin.vue.tauri", "plugins": {}, "app": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f7b6a44b..ccafa798 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,121 +46,6 @@ importers: specifier: 10.33.0 version: 10.33.0 - frontend: - dependencies: - '@fontsource-variable/figtree': - specifier: 5.2.10 - version: 5.2.10 - '@iconify/json': - specifier: 2.2.456 - version: 2.2.456 - '@jellyfin-vue/i18n': - specifier: workspace:* - version: link:../packages/i18n - '@jellyfin-vue/shared': - specifier: workspace:* - version: link:../packages/shared - '@jellyfin-vue/ui-toolkit': - specifier: workspace:* - version: link:../packages/ui-toolkit - '@jellyfin/sdk': - specifier: 0.13.0 - version: 0.13.0(axios@1.14.0) - '@vueuse/core': - specifier: 'catalog:' - version: 14.2.1(vue@3.5.31(typescript@6.0.2)) - assjs: - specifier: 0.1.5 - version: 0.1.5 - audiomotion-analyzer: - specifier: 4.5.4 - version: 4.5.4 - axios: - specifier: 1.14.0 - version: 1.14.0 - blurhash: - specifier: 2.0.5 - version: 2.0.5 - comlink: - specifier: 'catalog:' - version: 4.4.2 - date-fns: - specifier: 'catalog:' - version: 4.1.0 - defu: - specifier: 6.1.5 - version: 6.1.5 - destr: - specifier: 2.0.5 - version: 2.0.5 - dexie: - specifier: 4.4.1 - version: 4.4.1 - fast-equals: - specifier: 6.0.0 - version: 6.0.0 - hls.js: - specifier: 1.6.15 - version: 1.6.15 - i18next: - specifier: 'catalog:' - version: 26.0.2(typescript@6.0.2) - i18next-vue: - specifier: 'catalog:' - version: 5.4.0(i18next@26.0.2(typescript@6.0.2))(vue@3.5.31(typescript@6.0.2)) - libpgs: - specifier: 0.8.1 - version: 0.8.1 - sortablejs: - specifier: 1.15.7 - version: 1.15.7 - swiper: - specifier: 12.1.3 - version: 12.1.3 - uuid: - specifier: 13.0.0 - version: 13.0.0 - vue: - specifier: 'catalog:' - version: 3.5.31(typescript@6.0.2) - vue-router: - specifier: 5.0.4 - version: 5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.31(typescript@6.0.2)) - vuetify: - specifier: 'catalog:' - version: 3.11.3(typescript@6.0.2)(vue@3.5.31(typescript@6.0.2)) - devDependencies: - '@jellyfin-vue/configs': - specifier: workspace:* - version: link:../packages/configs - '@jellyfin-vue/vite-plugins': - specifier: workspace:* - version: link:../packages/vite-plugins - '@rollup/plugin-virtual': - specifier: 3.0.2 - version: 3.0.2 - '@types/sortablejs': - specifier: 1.15.9 - version: 1.15.9 - '@unocss/reset': - specifier: 66.6.7 - version: 66.6.7 - '@vitejs/plugin-vue': - specifier: 6.0.5 - version: 6.0.5(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.7)(jiti@2.6.1)(yaml@2.8.3))(vue@3.5.31(typescript@6.0.2)) - browserslist: - specifier: 4.28.1 - version: 4.28.1 - lightningcss: - specifier: 1.32.0 - version: 1.32.0 - unplugin-vue-components: - specifier: 'catalog:' - version: 31.1.0(vue@3.5.31(typescript@6.0.2)) - vite-plugin-vue-devtools: - specifier: 8.1.1 - version: 8.1.1(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.7)(jiti@2.6.1)(yaml@2.8.3))(vue@3.5.31(typescript@6.0.2)) - packages/configs: devDependencies: '@chromatic-com/storybook': @@ -275,6 +160,121 @@ importers: specifier: 3.2.6 version: 3.2.6(typescript@6.0.2) + packages/frontend: + dependencies: + '@fontsource-variable/figtree': + specifier: 5.2.10 + version: 5.2.10 + '@iconify/json': + specifier: 2.2.456 + version: 2.2.456 + '@jellyfin-vue/i18n': + specifier: workspace:* + version: link:../i18n + '@jellyfin-vue/shared': + specifier: workspace:* + version: link:../shared + '@jellyfin-vue/ui-toolkit': + specifier: workspace:* + version: link:../ui-toolkit + '@jellyfin/sdk': + specifier: 0.13.0 + version: 0.13.0(axios@1.14.0) + '@vueuse/core': + specifier: 'catalog:' + version: 14.2.1(vue@3.5.31(typescript@6.0.2)) + assjs: + specifier: 0.1.5 + version: 0.1.5 + audiomotion-analyzer: + specifier: 4.5.4 + version: 4.5.4 + axios: + specifier: 1.14.0 + version: 1.14.0 + blurhash: + specifier: 2.0.5 + version: 2.0.5 + comlink: + specifier: 'catalog:' + version: 4.4.2 + date-fns: + specifier: 'catalog:' + version: 4.1.0 + defu: + specifier: 6.1.5 + version: 6.1.5 + destr: + specifier: 2.0.5 + version: 2.0.5 + dexie: + specifier: 4.4.1 + version: 4.4.1 + fast-equals: + specifier: 6.0.0 + version: 6.0.0 + hls.js: + specifier: 1.6.15 + version: 1.6.15 + i18next: + specifier: 'catalog:' + version: 26.0.2(typescript@6.0.2) + i18next-vue: + specifier: 'catalog:' + version: 5.4.0(i18next@26.0.2(typescript@6.0.2))(vue@3.5.31(typescript@6.0.2)) + libpgs: + specifier: 0.8.1 + version: 0.8.1 + sortablejs: + specifier: 1.15.7 + version: 1.15.7 + swiper: + specifier: 12.1.3 + version: 12.1.3 + uuid: + specifier: 13.0.0 + version: 13.0.0 + vue: + specifier: 'catalog:' + version: 3.5.31(typescript@6.0.2) + vue-router: + specifier: 5.0.4 + version: 5.0.4(@vue/compiler-sfc@3.5.32)(vue@3.5.31(typescript@6.0.2)) + vuetify: + specifier: 'catalog:' + version: 3.11.3(typescript@6.0.2)(vue@3.5.31(typescript@6.0.2)) + devDependencies: + '@jellyfin-vue/configs': + specifier: workspace:* + version: link:../configs + '@jellyfin-vue/vite-plugins': + specifier: workspace:* + version: link:../vite-plugins + '@rollup/plugin-virtual': + specifier: 3.0.2 + version: 3.0.2 + '@types/sortablejs': + specifier: 1.15.9 + version: 1.15.9 + '@unocss/reset': + specifier: 66.6.7 + version: 66.6.7 + '@vitejs/plugin-vue': + specifier: 6.0.5 + version: 6.0.5(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.7)(jiti@2.6.1)(yaml@2.8.3))(vue@3.5.31(typescript@6.0.2)) + browserslist: + specifier: 4.28.1 + version: 4.28.1 + lightningcss: + specifier: 1.32.0 + version: 1.32.0 + unplugin-vue-components: + specifier: 'catalog:' + version: 31.1.0(vue@3.5.31(typescript@6.0.2)) + vite-plugin-vue-devtools: + specifier: 8.1.1 + version: 8.1.1(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.7)(jiti@2.6.1)(yaml@2.8.3))(vue@3.5.31(typescript@6.0.2)) + packages/i18n: dependencies: '@vue/shared': @@ -315,12 +315,15 @@ importers: find-up-simple: specifier: 'catalog:' version: 1.0.1 + yaml: + specifier: 2.8.3 + version: 2.8.3 packages/tauri-runtime: dependencies: '@jellyfin-vue/frontend': specifier: workspace:* - version: link:../../frontend + version: link:../frontend '@tauri-apps/api': specifier: 2.10.1 version: 2.10.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 21d9155e..8cc16818 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,4 @@ packages: - - frontend - packaging/tauri - packages/* @@ -11,6 +10,7 @@ packageImportMethod: hardlink lockfileIncludeTarballUrl: true linkWorkspacePackages: deep injectWorkspacePackages: true +shamefullyHoist: true fetchRetries: 15 catalog: