├── .npmrc ├── static ├── logo.png └── robots.txt ├── CinephageLogo.png ├── .vscode └── settings.json ├── src ├── lib │ ├── index.ts │ ├── server │ │ ├── downloadClients │ │ │ ├── nzbget │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── sabnzbd │ │ │ │ └── index.ts │ │ │ ├── monitoring │ │ │ │ └── index.ts │ │ │ ├── import │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── monitoring │ │ │ ├── TESTING.md │ │ │ ├── MONITORING.md │ │ │ ├── tasks │ │ │ │ ├── index.ts │ │ │ │ └── SmartListRefreshTask.ts │ │ │ └── specifications │ │ │ │ └── index.ts │ │ ├── downloads │ │ │ ├── nzb │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── indexers │ │ │ ├── http │ │ │ │ ├── index.ts │ │ │ │ └── browser │ │ │ │ │ └── index.ts │ │ │ ├── newznab │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── engine │ │ │ │ └── index.ts │ │ │ ├── registry │ │ │ │ └── index.ts │ │ │ ├── ratelimit │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── status │ │ │ │ ├── index.ts │ │ │ │ └── BackoffCalculator.ts │ │ │ ├── categories │ │ │ │ └── index.ts │ │ │ ├── search │ │ │ │ └── index.ts │ │ │ ├── auth │ │ │ │ └── providers │ │ │ │ │ ├── index.ts │ │ │ │ │ └── NoAuthProvider.ts │ │ │ ├── runtime │ │ │ │ └── index.ts │ │ │ ├── parser │ │ │ │ └── index.ts │ │ │ └── loader │ │ │ │ └── index.ts │ │ ├── library │ │ │ ├── naming │ │ │ │ ├── template │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── normalization │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── videoCodecs.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── sources.ts │ │ │ │ │ └── audioCodecs.ts │ │ │ │ └── tokens │ │ │ │ │ ├── definitions │ │ │ │ │ ├── release.ts │ │ │ │ │ ├── audio.ts │ │ │ │ │ ├── video.ts │ │ │ │ │ └── core.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ └── index.ts │ │ ├── services │ │ │ ├── index.ts │ │ │ └── background-service.ts │ │ ├── streaming │ │ │ ├── validation │ │ │ │ └── index.ts │ │ │ ├── utils │ │ │ │ └── index.ts │ │ │ ├── types.ts │ │ │ ├── cache │ │ │ │ └── index.ts │ │ │ ├── anilist │ │ │ │ └── index.ts │ │ │ ├── errors │ │ │ │ └── index.ts │ │ │ ├── providers │ │ │ │ └── types.ts │ │ │ ├── lookup │ │ │ │ ├── index.ts │ │ │ │ └── providers │ │ │ │ │ └── index.ts │ │ │ ├── enc-dec │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── subtitles │ │ │ ├── index.ts │ │ │ ├── providers │ │ │ │ ├── index.ts │ │ │ │ └── yifysubtitles │ │ │ │ │ └── types.ts │ │ │ └── services │ │ │ │ └── index.ts │ │ ├── smartlists │ │ │ └── index.ts │ │ ├── tasks │ │ │ └── TaskCancelledException.ts │ │ ├── workers │ │ │ └── index.ts │ │ ├── quality │ │ │ └── index.ts │ │ └── db │ │ │ └── index.ts │ ├── components │ │ ├── library │ │ │ ├── tv │ │ │ │ ├── index.ts │ │ │ │ └── BulkActionBar.svelte │ │ │ ├── AutoSearchStatus.svelte │ │ │ ├── MonitorToggle.svelte │ │ │ ├── index.ts │ │ │ ├── QualityBadge.svelte │ │ │ └── StatusIndicator.svelte │ │ ├── rootFolders │ │ │ └── index.ts │ │ ├── downloadClients │ │ │ └── index.ts │ │ ├── search │ │ │ └── index.ts │ │ ├── ui │ │ │ ├── modal │ │ │ │ ├── index.ts │ │ │ │ ├── SectionHeader.svelte │ │ │ │ ├── ModalHeader.svelte │ │ │ │ ├── ToggleSetting.svelte │ │ │ │ ├── TestResult.svelte │ │ │ │ ├── ModalWrapper.svelte │ │ │ │ └── ModalFooter.svelte │ │ │ ├── StatsSkeleton.svelte │ │ │ ├── TmdbConfigRequired.svelte │ │ │ ├── MediaTypeBadge.svelte │ │ │ ├── CardSkeleton.svelte │ │ │ ├── form │ │ │ │ ├── FormField.svelte │ │ │ │ └── LoadingButton.svelte │ │ │ ├── Skeleton.svelte │ │ │ ├── AsyncState.svelte │ │ │ └── Toasts.svelte │ │ ├── formats │ │ │ └── index.ts │ │ ├── subtitles │ │ │ └── index.ts │ │ ├── profiles │ │ │ ├── index.ts │ │ │ └── ProfileList.svelte │ │ ├── queue │ │ │ ├── index.ts │ │ │ ├── QueueProgressBar.svelte │ │ │ └── QueueStatusBadge.svelte │ │ ├── subtitleProviders │ │ │ ├── index.ts │ │ │ └── SubtitleProviderStatusBadge.svelte │ │ ├── indexers │ │ │ ├── IndexerTestResult.svelte │ │ │ ├── IndexerSearchSettings.svelte │ │ │ └── IndexerBulkActions.svelte │ │ ├── tmdb │ │ │ ├── MetadataFact.svelte │ │ │ ├── NetworkLogos.svelte │ │ │ ├── TmdbImage.svelte │ │ │ ├── ProductionCompanies.svelte │ │ │ ├── SeasonList.svelte │ │ │ ├── CrewList.svelte │ │ │ ├── PersonCard.svelte │ │ │ └── WatchProviders.svelte │ │ ├── ThemeSelector.svelte │ │ └── discover │ │ │ └── SearchBar.svelte │ ├── layout.svelte.ts │ ├── themes.ts │ ├── utils │ │ ├── routing.ts │ │ └── format.ts │ ├── theme.svelte.ts │ ├── types │ │ └── task.ts │ └── config │ │ └── trackers.ts ├── demo.spec.ts ├── routes │ ├── settings │ │ ├── profiles │ │ │ ├── +page.svelte │ │ │ └── +page.server.ts │ │ └── integrations │ │ │ └── +layout.svelte │ ├── api │ │ ├── health │ │ │ └── +server.ts │ │ ├── subtitles │ │ │ ├── providers │ │ │ │ ├── definitions │ │ │ │ │ └── +server.ts │ │ │ │ └── test │ │ │ │ │ └── +server.ts │ │ │ ├── scan │ │ │ │ └── +server.ts │ │ │ └── language-profiles │ │ │ │ └── +server.ts │ │ ├── system │ │ │ └── status │ │ │ │ └── +server.ts │ │ ├── monitoring │ │ │ ├── status │ │ │ │ └── +server.ts │ │ │ └── search │ │ │ │ ├── upgrade │ │ │ │ └── +server.ts │ │ │ │ ├── new-episodes │ │ │ │ └── +server.ts │ │ │ │ ├── cutoff-unmet │ │ │ │ └── +server.ts │ │ │ │ ├── missing │ │ │ │ └── +server.ts │ │ │ │ ├── subtitle-upgrade │ │ │ │ └── +server.ts │ │ │ │ └── missing-subtitles │ │ │ │ └── +server.ts │ │ ├── rate-limits │ │ │ └── +server.ts │ │ ├── smartlists │ │ │ └── [id] │ │ │ │ └── refresh │ │ │ │ └── +server.ts │ │ ├── library │ │ │ ├── backfill-quality │ │ │ │ └── +server.ts │ │ │ └── seasons │ │ │ │ └── [id] │ │ │ │ └── +server.ts │ │ ├── streaming │ │ │ └── proxy │ │ │ │ └── [...path] │ │ │ │ └── +server.ts │ │ ├── workers │ │ │ ├── +server.ts │ │ │ └── [id] │ │ │ │ └── +server.ts │ │ ├── indexers │ │ │ ├── definitions │ │ │ │ ├── [id] │ │ │ │ │ └── +server.ts │ │ │ │ └── +server.ts │ │ │ └── test │ │ │ │ └── +server.ts │ │ ├── rename │ │ │ └── preview │ │ │ │ ├── movie │ │ │ │ └── [id] │ │ │ │ │ └── +server.ts │ │ │ │ └── series │ │ │ │ └── [id] │ │ │ │ └── +server.ts │ │ ├── queue │ │ │ └── cleanup │ │ │ │ └── +server.ts │ │ ├── root-folders │ │ │ ├── validate │ │ │ │ └── +server.ts │ │ │ ├── +server.ts │ │ │ └── [id] │ │ │ │ └── +server.ts │ │ ├── download-clients │ │ │ └── test │ │ │ │ └── +server.ts │ │ ├── naming │ │ │ ├── presets │ │ │ │ └── [id] │ │ │ │ │ └── apply │ │ │ │ │ └── +server.ts │ │ │ └── validate │ │ │ │ └── +server.ts │ │ └── tasks │ │ │ └── [taskId] │ │ │ ├── history │ │ │ └── +server.ts │ │ │ └── cancel │ │ │ └── +server.ts │ ├── smartlists │ │ ├── +page.server.ts │ │ ├── new │ │ │ ├── +page.svelte │ │ │ └── +page.server.ts │ │ └── [id] │ │ │ ├── edit │ │ │ ├── +page.svelte │ │ │ └── +page.server.ts │ │ │ └── +page.server.ts │ ├── page.svelte.spec.ts │ ├── layout.css │ ├── library │ │ └── unmatched │ │ │ └── +page.server.ts │ ├── health │ │ └── +server.ts │ ├── person │ │ └── [id] │ │ │ └── +page.server.ts │ ├── tv │ │ └── [id] │ │ │ └── +page.svelte │ └── movie │ │ └── [id] │ │ └── +page.svelte ├── test │ └── setup.ts ├── app.d.ts └── app.html ├── docs └── images │ ├── dashboard.png │ ├── discover.png │ ├── library-tv.png │ ├── library-movies.png │ ├── movie-details.png │ ├── discover-filters.png │ ├── library-tv-details.png │ ├── tv-discover-details.png │ └── library-movie-details.png ├── .gitattributes ├── .dockerignore ├── vitest.config.ts ├── .prettierignore ├── .prettierrc ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ └── config.yml ├── dependabot.yml └── PULL_REQUEST_TEMPLATE.md ├── tsconfig.json ├── svelte.config.js ├── .gitignore ├── scripts └── remove-monitoring-enabled.ts ├── docker-entrypoint.sh ├── deploy └── cinephage.service ├── data └── indexers │ └── definitions │ ├── cinephage-stream.yaml │ ├── eztv.yaml │ └── yts.yaml ├── docker-compose.yaml └── CODE_OF_CONDUCT.md /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/static/logo.png -------------------------------------------------------------------------------- /CinephageLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/CinephageLogo.png -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- 1 | # allow crawling everything by default 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "*.css": "tailwind" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // place files you want to import through the `$lib` alias in this folder. 2 | -------------------------------------------------------------------------------- /docs/images/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/dashboard.png -------------------------------------------------------------------------------- /docs/images/discover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/discover.png -------------------------------------------------------------------------------- /docs/images/library-tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/library-tv.png -------------------------------------------------------------------------------- /src/lib/server/downloadClients/nzbget/index.ts: -------------------------------------------------------------------------------- 1 | export * from './NZBGetClient'; 2 | export * from './types'; 3 | -------------------------------------------------------------------------------- /docs/images/library-movies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/library-movies.png -------------------------------------------------------------------------------- /docs/images/movie-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/movie-details.png -------------------------------------------------------------------------------- /docs/images/discover-filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/discover-filters.png -------------------------------------------------------------------------------- /docs/images/library-tv-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/library-tv-details.png -------------------------------------------------------------------------------- /docs/images/tv-discover-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/tv-discover-details.png -------------------------------------------------------------------------------- /docs/images/library-movie-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoldyTaint/Cinephage/HEAD/docs/images/library-movie-details.png -------------------------------------------------------------------------------- /src/lib/components/library/tv/index.ts: -------------------------------------------------------------------------------- 1 | export { default as TVSeriesSidebar } from './TVSeriesSidebar.svelte'; 2 | export { default as BulkActionBar } from './BulkActionBar.svelte'; 3 | -------------------------------------------------------------------------------- /src/lib/components/rootFolders/index.ts: -------------------------------------------------------------------------------- 1 | export { default as RootFolderModal } from './RootFolderModal.svelte'; 2 | export { default as RootFolderList } from './RootFolderList.svelte'; 3 | -------------------------------------------------------------------------------- /src/lib/layout.svelte.ts: -------------------------------------------------------------------------------- 1 | export const layoutState = $state({ 2 | isSidebarExpanded: true, 3 | toggleSidebar() { 4 | this.isSidebarExpanded = !this.isSidebarExpanded; 5 | } 6 | }); 7 | -------------------------------------------------------------------------------- /src/demo.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/lib/components/downloadClients/index.ts: -------------------------------------------------------------------------------- 1 | export { default as DownloadClientModal } from './DownloadClientModal.svelte'; 2 | export { default as DownloadClientTable } from './DownloadClientTable.svelte'; 3 | -------------------------------------------------------------------------------- /src/lib/server/monitoring/TESTING.md: -------------------------------------------------------------------------------- 1 | # Moved 2 | 3 | This documentation has been moved to `/docs/development/testing.md`. 4 | 5 | See the [Testing Guide](../../../../docs/development/testing.md) documentation. 6 | -------------------------------------------------------------------------------- /src/routes/settings/profiles/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
Redirecting...
7 | -------------------------------------------------------------------------------- /src/lib/components/search/index.ts: -------------------------------------------------------------------------------- 1 | // Search components 2 | export { default as InteractiveSearchModal } from './InteractiveSearchModal.svelte'; 3 | export { default as SearchResultRow } from './SearchResultRow.svelte'; 4 | -------------------------------------------------------------------------------- /src/routes/api/health/+server.ts: -------------------------------------------------------------------------------- 1 | import { json } from '@sveltejs/kit'; 2 | import type { RequestHandler } from './$types'; 3 | 4 | export const GET: RequestHandler = async () => { 5 | return json({ status: 'ok' }); 6 | }; 7 | -------------------------------------------------------------------------------- /src/lib/server/downloads/nzb/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * NZB handling module exports. 3 | */ 4 | 5 | export { 6 | NzbValidationService, 7 | getNzbValidationService, 8 | type NzbValidationResult 9 | } from './NzbValidationService'; 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Force LF line endings for shell scripts (critical for Docker) 5 | *.sh text eol=lf 6 | 7 | # Force LF for Dockerfile 8 | Dockerfile text eol=lf 9 | -------------------------------------------------------------------------------- /src/lib/server/indexers/http/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * HTTP utilities for indexers. 3 | */ 4 | 5 | export * from './CloudflareDetection'; 6 | export * from './CaptchaHandler'; 7 | export * from './RetryPolicy'; 8 | export * from './IndexerHttp'; 9 | -------------------------------------------------------------------------------- /src/test/setup.ts: -------------------------------------------------------------------------------- 1 | import { config } from 'dotenv'; 2 | import { vi } from 'vitest'; 3 | 4 | config(); // Load .env file 5 | 6 | // Mock $env/dynamic/private 7 | vi.mock('$env/dynamic/private', () => ({ 8 | env: process.env 9 | })); 10 | -------------------------------------------------------------------------------- /src/lib/server/monitoring/MONITORING.md: -------------------------------------------------------------------------------- 1 | # Moved 2 | 3 | This documentation has been moved to `/docs/development/monitoring-internals.md`. 4 | 5 | See the [Monitoring Internals](../../../../docs/development/monitoring-internals.md) documentation. 6 | -------------------------------------------------------------------------------- /src/lib/server/library/naming/template/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Template module exports 3 | */ 4 | 5 | export { TemplateEngine } from './TemplateEngine'; 6 | export type { TemplateParseResult, TemplateError, TemplateWarning, ParsedToken } from './types'; 7 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | dist 4 | .git 5 | .gitignore 6 | .gitattributes 7 | logs 8 | data/*.db 9 | data/*.db-* 10 | .env 11 | .env.* 12 | !.env.example 13 | *.log 14 | .DS_Store 15 | .vscode 16 | .idea 17 | coverage 18 | .nyc_output 19 | *.tgz 20 | -------------------------------------------------------------------------------- /src/lib/server/downloadClients/sabnzbd/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * SABnzbd Download Client module exports. 3 | */ 4 | 5 | export { SABnzbdClient, type SABnzbdConfig } from './SABnzbdClient'; 6 | export { SABnzbdProxy, SabnzbdApiError } from './SABnzbdProxy'; 7 | export * from './types'; 8 | -------------------------------------------------------------------------------- /src/lib/server/services/index.ts: -------------------------------------------------------------------------------- 1 | export type { BackgroundService, ServiceStatus, ServiceStatusInfo } from './background-service.js'; 2 | export { serviceManager } from './service-manager.js'; 3 | export { ExternalIdService, getExternalIdService, ensureExternalIds } from './ExternalIdService.js'; 4 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config'; 2 | import { sveltekit } from '@sveltejs/kit/vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()], 6 | test: { 7 | include: ['src/**/*.{test,spec}.{js,ts}'], 8 | setupFiles: ['src/test/setup.ts'] 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /src/lib/components/ui/modal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ConfirmationModal } from './ConfirmationModal.svelte'; 2 | export { default as SectionHeader } from './SectionHeader.svelte'; 3 | export { default as ToggleSetting } from './ToggleSetting.svelte'; 4 | export { default as TestResult } from './TestResult.svelte'; 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock 5 | bun.lock 6 | bun.lockb 7 | 8 | # Miscellaneous 9 | /static/ 10 | /drizzle/ 11 | .claude/ 12 | 13 | # External/separate projects 14 | Flyx-main/ 15 | Cinephage-Streamer/ 16 | 17 | # Build artifacts 18 | .svelte-kit/ 19 | -------------------------------------------------------------------------------- /src/lib/server/indexers/newznab/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Newznab indexer module exports. 3 | */ 4 | 5 | export * from './types'; 6 | export { 7 | NewznabCapabilitiesProvider, 8 | getNewznabCapabilitiesProvider, 9 | CapabilitiesFetchError, 10 | DEFAULT_CAPABILITIES 11 | } from './NewznabCapabilitiesProvider'; 12 | -------------------------------------------------------------------------------- /src/routes/settings/profiles/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from '@sveltejs/kit'; 2 | import type { PageServerLoad } from './$types'; 3 | 4 | export const load: PageServerLoad = async () => { 5 | // Redirect to the new unified quality settings page 6 | throw redirect(301, '/settings/quality?tab=profiles'); 7 | }; 8 | -------------------------------------------------------------------------------- /src/lib/server/streaming/validation/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Stream Validation Module 3 | * 4 | * Provides stream validation capabilities for ensuring streams are playable. 5 | */ 6 | 7 | export { 8 | StreamValidator, 9 | getStreamValidator, 10 | createStreamValidator, 11 | quickValidateStream 12 | } from './StreamValidator'; 13 | -------------------------------------------------------------------------------- /src/lib/components/formats/index.ts: -------------------------------------------------------------------------------- 1 | export { default as FormatConditionBuilder } from './FormatConditionBuilder.svelte'; 2 | export { default as CustomFormatModal } from './CustomFormatModal.svelte'; 3 | export { default as FormatList } from './FormatList.svelte'; 4 | 5 | export type { CustomFormatFormData } from './CustomFormatModal.svelte'; 6 | -------------------------------------------------------------------------------- /src/lib/components/subtitles/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SubtitleBadge } from './SubtitleBadge.svelte'; 2 | export { default as SubtitleDisplay } from './SubtitleDisplay.svelte'; 3 | export { default as SubtitleSearchResultRow } from './SubtitleSearchResultRow.svelte'; 4 | export { default as SubtitleSearchModal } from './SubtitleSearchModal.svelte'; 5 | -------------------------------------------------------------------------------- /src/lib/components/profiles/index.ts: -------------------------------------------------------------------------------- 1 | // Profile components barrel export 2 | export { default as ProfileList } from './ProfileList.svelte'; 3 | export { default as ProfileModal } from './ProfileModal.svelte'; 4 | export { default as ProfileTable } from './ProfileTable.svelte'; 5 | export { default as FormatScoreAccordion } from './FormatScoreAccordion.svelte'; 6 | -------------------------------------------------------------------------------- /src/lib/components/queue/index.ts: -------------------------------------------------------------------------------- 1 | export { default as QueueTable } from './QueueTable.svelte'; 2 | export { default as QueueStats } from './QueueStats.svelte'; 3 | export { default as QueueStatusBadge } from './QueueStatusBadge.svelte'; 4 | export { default as QueueProgressBar } from './QueueProgressBar.svelte'; 5 | export { default as HistoryTable } from './HistoryTable.svelte'; 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], 7 | "overrides": [ 8 | { 9 | "files": "*.svelte", 10 | "options": { 11 | "parser": "svelte" 12 | } 13 | } 14 | ], 15 | "tailwindStylesheet": "src/routes/layout.css" 16 | } 17 | -------------------------------------------------------------------------------- /src/lib/server/subtitles/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Subtitle Management System 3 | * 4 | * Comprehensive subtitle handling inspired by Bazarr, 5 | * with multiple providers, language profiles, and auto-sync. 6 | */ 7 | 8 | // Core types 9 | export * from './types'; 10 | 11 | // Provider layer 12 | export * from './providers'; 13 | 14 | // Services 15 | export * from './services'; 16 | -------------------------------------------------------------------------------- /src/lib/components/subtitleProviders/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SubtitleProviderTable } from './SubtitleProviderTable.svelte'; 2 | export { default as SubtitleProviderRow } from './SubtitleProviderRow.svelte'; 3 | export { default as SubtitleProviderModal } from './SubtitleProviderModal.svelte'; 4 | export { default as SubtitleProviderStatusBadge } from './SubtitleProviderStatusBadge.svelte'; 5 | -------------------------------------------------------------------------------- /src/lib/components/ui/modal/SectionHeader.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |{message}
13 |{successDetails}
26 | {/if} 27 |{result.error}
34 | {/if} 35 |{season.overview}
35 | {:else} 36 |No overview available.
37 | {/if} 38 |47 | {getRole(person)} 48 |
49 |{toast.message}
34 | {#if toast.description} 35 |{toast.description}
36 | {/if} 37 |