gitextract_ghdmazve/ ├── .editorconfig ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── discussion.yml │ │ ├── feature_request.yml │ │ └── rfc.yml │ └── workflows/ │ └── build.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── .stylelintrc.json ├── .vscode/ │ ├── anchor-comments.code-snippets │ ├── extensions.json │ ├── settings.json │ ├── vue-ts.code-snippets │ ├── vue.code-snippets │ └── vuetify.code-snippets ├── LICENSE ├── README.md ├── README_EN.md ├── auto-imports.d.ts ├── components.d.ts ├── docs/ │ ├── federation-troubleshooting.md │ └── module-federation-guide.md ├── env.d.ts ├── examples/ │ └── plugin-component/ │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── AppPage.vue │ │ │ ├── AppPageSettings.vue │ │ │ ├── Config.vue │ │ │ ├── Dashboard.vue │ │ │ └── Page.vue │ │ ├── main.js │ │ └── vuetify/ │ │ ├── defaults.ts │ │ └── theme.ts │ └── vite.config.js ├── index.html ├── package.json ├── postcss.config.js ├── public/ │ ├── nginx.conf │ ├── offline.html │ ├── robots.txt │ └── service.js ├── shims.d.ts ├── src/ │ ├── @core/ │ │ ├── components/ │ │ │ ├── ConfirmDialog.vue │ │ │ ├── DialogCloseBtn.vue │ │ │ ├── ErrorHeader.vue │ │ │ ├── ExistIcon.vue │ │ │ ├── LoadingBanner.vue │ │ │ ├── MoreBtn.vue │ │ │ ├── PageContentTitle.vue │ │ │ ├── ScrollToTopBtn.vue │ │ │ └── StatIcon.vue │ │ ├── libs/ │ │ │ └── apex-chart/ │ │ │ └── apexCharConfig.ts │ │ ├── scss/ │ │ │ ├── README.md │ │ │ ├── _components.scss │ │ │ ├── _dark.scss │ │ │ ├── _default-layout-w-vertical-nav.scss │ │ │ ├── _default-layout.scss │ │ │ ├── _misc.scss │ │ │ ├── _mixins.scss │ │ │ ├── _utilities.scss │ │ │ ├── _utils.scss │ │ │ ├── _variables.scss │ │ │ ├── _vertical-nav.scss │ │ │ ├── index.scss │ │ │ ├── libs/ │ │ │ │ ├── apex-chart.scss │ │ │ │ ├── full-calendar.scss │ │ │ │ ├── perfect-scrollbar.scss │ │ │ │ └── vuetify/ │ │ │ │ ├── _overrides.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── index.scss │ │ │ ├── pages/ │ │ │ │ ├── misc.scss │ │ │ │ └── page-auth.scss │ │ │ └── placeholders/ │ │ │ ├── _default-layout.scss │ │ │ ├── _index.scss │ │ │ ├── _nav.scss │ │ │ └── _vertical-nav.scss │ │ └── utils/ │ │ ├── compatibility.ts │ │ ├── dom.ts │ │ ├── formatters.ts │ │ ├── image.ts │ │ ├── index.ts │ │ ├── navigator.ts │ │ ├── theme.ts │ │ └── workflow.ts │ ├── @iconify/ │ │ ├── build-icons.ts │ │ ├── tsconfig.json │ │ └── tsconfig.tsbuildinfo │ ├── @layouts/ │ │ ├── components/ │ │ │ ├── VerticalNav.vue │ │ │ ├── VerticalNavLayout.vue │ │ │ ├── VerticalNavLink.vue │ │ │ └── VerticalNavSectionTitle.vue │ │ ├── components.ts │ │ ├── index.ts │ │ ├── styles/ │ │ │ ├── _classes.scss │ │ │ ├── _default-layout.scss │ │ │ ├── _global.scss │ │ │ ├── _mixins.scss │ │ │ ├── _placeholders.scss │ │ │ ├── _rtl.scss │ │ │ ├── _variables.scss │ │ │ └── index.scss │ │ ├── types.d.ts │ │ └── utils.ts │ ├── @validators/ │ │ └── index.ts │ ├── App.vue │ ├── ace-config.ts │ ├── api/ │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── nprogress.ts │ │ └── types.ts │ ├── components/ │ │ ├── FileBrowser.vue │ │ ├── NoDataFound.vue │ │ ├── PWAInstallPrompt.vue │ │ ├── cards/ │ │ │ ├── BackdropCard.vue │ │ │ ├── CustomRuleCard.vue │ │ │ ├── DirectoryCard.vue │ │ │ ├── DownloaderCard.vue │ │ │ ├── DownloadingCard.vue │ │ │ ├── FilterRuleCard.vue │ │ │ ├── FilterRuleGroupCard.vue │ │ │ ├── LibraryCard.vue │ │ │ ├── MediaCard.vue │ │ │ ├── MediaInfoCard.vue │ │ │ ├── MediaServerCard.vue │ │ │ ├── MessageCard.vue │ │ │ ├── NotificationChannelCard.vue │ │ │ ├── PersonCard.vue │ │ │ ├── PluginAppCard.vue │ │ │ ├── PluginCard.vue │ │ │ ├── PluginFolderCard.vue │ │ │ ├── PluginMixedSortCard.vue │ │ │ ├── PosterCard.vue │ │ │ ├── SiteCard.vue │ │ │ ├── StorageCard.vue │ │ │ ├── SubscribeCard.vue │ │ │ ├── SubscribeShareCard.vue │ │ │ ├── TorrentCard.vue │ │ │ ├── TorrentItem.vue │ │ │ ├── UserCard.vue │ │ │ ├── WorkflowShareCard.vue │ │ │ └── WorkflowTaskCard.vue │ │ ├── dialog/ │ │ │ ├── AboutDialog.vue │ │ │ ├── AddDownloadDialog.vue │ │ │ ├── AlistConfigDialog.vue │ │ │ ├── AliyunAuthDialog.vue │ │ │ ├── CategoryEditDialog.vue │ │ │ ├── ForkSubscribeDialog.vue │ │ │ ├── ForkWorkflowDialog.vue │ │ │ ├── ImportCodeDialog.vue │ │ │ ├── MediaInfoDialog.vue │ │ │ ├── OTPAuthDialog.vue │ │ │ ├── PasskeyDialog.vue │ │ │ ├── PluginConfigDialog.vue │ │ │ ├── PluginDataDialog.vue │ │ │ ├── PluginMarketSettingDialog.vue │ │ │ ├── ProgressDialog.vue │ │ │ ├── RcloneConfigDialog.vue │ │ │ ├── ReorganizeDialog.vue │ │ │ ├── SearchBarDialog.vue │ │ │ ├── SearchSiteDialog.vue │ │ │ ├── SiteAddEditDialog.vue │ │ │ ├── SiteCookieUpdateDialog.vue │ │ │ ├── SiteImportDialog.vue │ │ │ ├── SiteResourceDialog.vue │ │ │ ├── SiteStatisticsDialog.vue │ │ │ ├── SiteUserDataDialog.vue │ │ │ ├── SmbConfigDialog.vue │ │ │ ├── SubscribeEditDialog.vue │ │ │ ├── SubscribeFilesDialog.vue │ │ │ ├── SubscribeHistoryDialog.vue │ │ │ ├── SubscribeSeasonDialog.vue │ │ │ ├── SubscribeShareDialog.vue │ │ │ ├── SubscribeShareStatisticsDialog.vue │ │ │ ├── TransferQueueDialog.vue │ │ │ ├── U115AuthDialog.vue │ │ │ ├── UserAddEditDialog.vue │ │ │ ├── UserAuthDialog.vue │ │ │ ├── WorkflowActionsDialog.vue │ │ │ ├── WorkflowAddEditDialog.vue │ │ │ └── WorkflowShareDialog.vue │ │ ├── field/ │ │ │ ├── CronField.vue │ │ │ └── PathField.vue │ │ ├── filebrowser/ │ │ │ ├── FileList.vue │ │ │ ├── FileNavigator.vue │ │ │ └── FileToolbar.vue │ │ ├── filter/ │ │ │ └── TorrentFilterBar.vue │ │ ├── input/ │ │ │ ├── CronInput.vue │ │ │ └── PathInput.vue │ │ ├── misc/ │ │ │ ├── DashboardElement.vue │ │ │ ├── FilterOption.vue │ │ │ ├── MediaIdSelector.vue │ │ │ └── VersionHistory.vue │ │ ├── render/ │ │ │ ├── DashboardRender.vue │ │ │ ├── FormRender.vue │ │ │ └── PageRender.vue │ │ ├── slide/ │ │ │ ├── SlideView.vue │ │ │ └── SlideViewTitle.vue │ │ ├── toast/ │ │ │ └── VersionUpdateToast.vue │ │ └── workflow/ │ │ ├── AddDownloadAction.vue │ │ ├── AddSubscribeAction.vue │ │ ├── FetchDownloadsAction.vue │ │ ├── FetchMediasAction.vue │ │ ├── FetchRssAction.vue │ │ ├── FetchTorrentsAction.vue │ │ ├── FilterMediasAction.vue │ │ ├── FilterTorrentsAction.vue │ │ ├── InvokePluginAction.vue │ │ ├── NoteAction.vue │ │ ├── ScanFileAction.vue │ │ ├── ScrapeFileAction.vue │ │ ├── SendEventAction.vue │ │ ├── SendMessageAction.vue │ │ └── TransferFileAction.vue │ ├── composables/ │ │ ├── useAvailableHeight.ts │ │ ├── useBackgroundOptimization.ts │ │ ├── useCacheManager.ts │ │ ├── useConfirm.ts │ │ ├── useDynamicButton.ts │ │ ├── useDynamicHeaderTab.ts │ │ ├── useInfiniteScroll.ts │ │ ├── useOfflineStatus.ts │ │ ├── usePWA.ts │ │ ├── usePWAInstall.ts │ │ ├── usePullDownGesture.ts │ │ ├── useRecentPlugins.ts │ │ ├── useSetupWizard.ts │ │ ├── useStateRestore.ts │ │ ├── useTorrentFilter.ts │ │ └── useVersionChecker.ts │ ├── layouts/ │ │ ├── blank.vue │ │ ├── components/ │ │ │ ├── DefaultLayout.vue │ │ │ ├── DropzoneBackground.vue │ │ │ ├── Footer.vue │ │ │ ├── HeaderTab.vue │ │ │ ├── OfflinePage.vue │ │ │ ├── QuickAccess.vue │ │ │ ├── SearchBar.vue │ │ │ ├── ShortcutBar.vue │ │ │ ├── UserNotification.vue │ │ │ ├── UserProfile.vue │ │ │ └── WorkflowSidebar.vue │ │ └── default.vue │ ├── locales/ │ │ ├── en-US.ts │ │ ├── zh-CN.ts │ │ └── zh-TW.ts │ ├── main.ts │ ├── pages/ │ │ ├── [...all].vue │ │ ├── appcenter.vue │ │ ├── browse.vue │ │ ├── calendar.vue │ │ ├── credits.vue │ │ ├── dashboard.vue │ │ ├── discover.vue │ │ ├── downloading.vue │ │ ├── filemanager.vue │ │ ├── history.vue │ │ ├── login.vue │ │ ├── media.vue │ │ ├── person.vue │ │ ├── plugin-app.vue │ │ ├── plugin.vue │ │ ├── profile.vue │ │ ├── recommend.vue │ │ ├── resource.vue │ │ ├── setting.vue │ │ ├── setup.vue │ │ ├── site.vue │ │ ├── subscribe-share.vue │ │ ├── subscribe.vue │ │ ├── user.vue │ │ └── workflow.vue │ ├── plugins/ │ │ ├── i18n.ts │ │ ├── stateRestore.ts │ │ ├── vuetify/ │ │ │ ├── defaults.ts │ │ │ ├── icons.ts │ │ │ ├── index.ts │ │ │ └── theme.ts │ │ └── webfontloader.ts │ ├── router/ │ │ ├── i18n-menu.ts │ │ └── index.ts │ ├── service-worker.ts │ ├── stores/ │ │ ├── auth.ts │ │ ├── global.ts │ │ ├── index.ts │ │ ├── pluginSidebarNav.ts │ │ ├── types.ts │ │ └── user.ts │ ├── styles/ │ │ ├── common.scss │ │ ├── main.scss │ │ ├── themes/ │ │ │ └── transparent.scss │ │ └── variables/ │ │ ├── _template.scss │ │ └── _vuetify.scss │ ├── types/ │ │ ├── global.d.ts │ │ ├── i18n.ts │ │ ├── service-worker-sync.d.ts │ │ └── workbox-precaching.d.ts │ ├── utils/ │ │ ├── appDeepLink.ts │ │ ├── backgroundManager.ts │ │ ├── badge.ts │ │ ├── colorUtils.ts │ │ ├── federationLoader.ts │ │ ├── globalSetting.ts │ │ ├── imageUtils.ts │ │ ├── loadingStateManager.ts │ │ ├── permission.ts │ │ ├── pluginSidebarNav.ts │ │ ├── requestOptimizer.ts │ │ ├── sseManager.ts │ │ └── themeManager.ts │ └── views/ │ ├── dashboard/ │ │ ├── AnalyticsCpu.vue │ │ ├── AnalyticsMediaStatistic.vue │ │ ├── AnalyticsMemory.vue │ │ ├── AnalyticsNetwork.vue │ │ ├── AnalyticsProcesses.vue │ │ ├── AnalyticsScheduler.vue │ │ ├── AnalyticsSpeed.vue │ │ ├── AnalyticsStorage.vue │ │ ├── AnalyticsWeeklyOverview.vue │ │ ├── MediaServerLatest.vue │ │ ├── MediaServerLibrary.vue │ │ └── MediaServerPlaying.vue │ ├── discover/ │ │ ├── BangumiView.vue │ │ ├── DoubanView.vue │ │ ├── ExtraSourceView.vue │ │ ├── MediaCardListView.vue │ │ ├── MediaCardSlideView.vue │ │ ├── MediaDetailView.vue │ │ ├── PersonCardListView.vue │ │ ├── PersonCardSlideView.vue │ │ ├── PersonDetailView.vue │ │ └── TheMovieDbView.vue │ ├── plugin/ │ │ └── PluginCardListView.vue │ ├── reorganize/ │ │ ├── DownloadingListView.vue │ │ ├── FileBrowserView.vue │ │ └── TransferHistoryView.vue │ ├── setting/ │ │ ├── AccountSettingDirectory.vue │ │ ├── AccountSettingNotification.vue │ │ ├── AccountSettingRule.vue │ │ ├── AccountSettingSearch.vue │ │ ├── AccountSettingSite.vue │ │ ├── AccountSettingSubscribe.vue │ │ └── AccountSettingSystem.vue │ ├── setup/ │ │ ├── AgentSettingsStep.vue │ │ ├── BasicSettingsStep.vue │ │ ├── ConnectivityTest.vue │ │ ├── DownloaderSettingsStep.vue │ │ ├── MediaServerSettingsStep.vue │ │ ├── NotificationSettingsStep.vue │ │ ├── PreferencesSettingsStep.vue │ │ ├── SiteAuthSettingsStep.vue │ │ └── StorageSettingsStep.vue │ ├── site/ │ │ └── SiteCardListView.vue │ ├── subscribe/ │ │ ├── FullCalendarView.vue │ │ ├── SubscribeListView.vue │ │ ├── SubscribePopularView.vue │ │ └── SubscribeShareView.vue │ ├── system/ │ │ ├── CacheView.vue │ │ ├── LoggingView.vue │ │ ├── MessageView.vue │ │ ├── ModuleTestView.vue │ │ ├── NameTestView.vue │ │ ├── NetTestView.vue │ │ ├── RuleTestView.vue │ │ ├── ServiceView.vue │ │ └── WordsView.vue │ ├── user/ │ │ ├── UserListView.vue │ │ └── UserProfileView.vue │ └── workflow/ │ ├── WorkflowListView.vue │ └── WorkflowShareView.vue ├── tailwind.config.js ├── tsconfig.json └── vite.config.ts