Commit Graph

177 Commits

Author SHA1 Message Date
ff5f299a84 clean(presentation): strip comments, kill dead code, extract constants
- remove all doc/inline comments
- delete unused ApiError variants (AuthRequired, NotImplemented) and helpers (internal, not_implemented)
- prefix lifetime-only AppState fields with _ to suppress dead_code warning
- extract magic numbers: TICK_INTERVAL_SECS, EXPIRY_THRESHOLD_HOURS, POLL_INTERVAL_SECS, EVENT_BUS_CAPACITY, DEFAULT_ACTIVITY_LIMIT, DEFAULT_SEARCH_LIMIT, etc
- replace inline serde_json::json! in sync_status with typed SyncStatusEntry
- fix mid-file import in schedule handler
- fix extractors: strip_prefix instead of magic offset 6
- fix unreachable pattern in wire_repositories with cfg guard
- use eq_ignore_ascii_case for content-type header check
2026-07-12 04:35:54 +02:00
25b33b6a0e cleanup: strip comments, extract constants, DRY shared helpers across adapters + infra-wiring
- strip all comments except WHY workaround notes (3 remain)
- remove all #[allow(dead_code)]; fix via _prefix rename
- extract named constants: JWT time units, token types, default config values, jellyfin fallback bitrate
- DRY: move serialize_enum_as_string, content_type_str, parse_content_type, parse_genres_blob to adapter-common
- sqlite+postgres library.rs use shared helpers instead of local copies
- sqlite+postgres channel.rs use shared serialize_enum_as_string
- remove dead `let _ = ext` in scanner.rs
2026-07-12 04:21:21 +02:00
eff14228af refactor(api-types): strip comments, extract DEFAULT_ACCESS_MODE constant 2026-07-12 04:12:51 +02:00
9dcd169689 refactor(application): strip comments, DRY ownership check + parse_content_type 2026-07-12 04:10:58 +02:00
98a54245b1 domain crate code quality cleanup
strip all comments, extract tests to tests/ dirs,
remove #[allow(clippy::...)], extract magic numbers to
constants, refactor schedule engine private methods to
use param structs, add Default impls, clippy.toml for
persistence constructors
2026-07-12 04:02:12 +02:00
d650e2ba07 makefile 2026-07-12 03:41:51 +02:00
a46ced4aca add restructure design spec + implementation plan 2026-07-12 03:41:24 +02:00
f2f56b7143 resolve merge conflicts in tv page (merge password + quality/subtitle features) 2026-07-12 03:41:20 +02:00
8051ab58c0 add /target to gitignore for new workspace root 2026-07-12 03:41:16 +02:00
dd4389d53e deprecate k-tv-backend, fix workspace feature-unification build 2026-07-12 03:35:09 +02:00
c869e9ab84 mcp: MCP server calling application use cases 2026-07-12 03:31:08 +02:00
56d742a74c presentation: HTTP server crate w/ handlers, routes, background tasks
Axum binary that wires all clean-arch crates together:
- AppState holds pre-built Deps structs (auth, channels, schedule, library, etc.)
- JWT extractors (CurrentUser, AdminUser, OptionalCurrentUser)
- Handlers delegate to application use cases, map to api-types DTOs
- Routes: auth, channels, schedule, library, admin, providers, config, iptv
- Background: auto-scheduler, broadcast poller, webhook consumer, library sync
- Factory builds everything from Config + DbPool
- SimpleProviderRegistry impl of IProviderRegistry trait
- NoopMediaProvider fallback
2026-07-12 03:23:20 +02:00
afed5c01b4 adapter-event-publisher: broadcast channel event bus 2026-07-12 02:54:43 +02:00
b93b14efe4 adapter-local-files: media provider, index, transcoder 2026-07-12 02:53:27 +02:00
e389e9e002 adapter-jellyfin: media provider 2026-07-12 02:47:13 +02:00
72ef9b9e1b adapter-auth: JWT, OIDC, password hashing 2026-07-12 02:44:16 +02:00
0fe80b545e adapter-postgres: all repository implementations 2026-07-12 02:39:56 +02:00
e8179d1f53 adapter-sqlite: all repo implementations + wire fn + migrations copy 2026-07-12 02:34:12 +02:00
1428f264bb adapter-common: shared DB mapping helpers 2026-07-12 02:26:42 +02:00
4cdde568f6 infra-wiring: DbPool enum + Config from env 2026-07-12 02:23:20 +02:00
1410d3e6bb api-types: HTTP DTOs with utoipa OpenAPI derives 2026-07-12 02:20:41 +02:00
466d34b5d0 application: config_snapshots, admin, providers, iptv 2026-07-12 02:14:07 +02:00
ebf0614fdf application: library bounded context 2026-07-12 02:08:04 +02:00
ef86a967cd application: schedule bounded context 2026-07-12 02:02:23 +02:00
6fd47f2d93 application: channels bounded context
CQRS use cases (create/update/delete/get/list/list_by_owner),
ownership checks, auto-snapshot on config change.
Channel setters added to domain model.
2026-07-12 01:57:38 +02:00
2976600d12 application: auth bounded context (register, login) 2026-07-12 01:49:34 +02:00
848d4752e2 domain testing: InMemory repos + Noops behind test-helpers 2026-07-12 01:41:23 +02:00
7ddf94c75f domain services: schedule engine, fill strategies, IPTV 2026-07-12 01:35:01 +02:00
87e7d85239 domain events: DomainEvent enum w/ ID-only variants 2026-07-12 01:29:40 +02:00
6d12ac4c5e fix domain ports: add EventConsumer, use ID newtypes 2026-07-12 01:27:38 +02:00
0166e829c1 domain ports: CQRS-split traits for all bounded contexts 2026-07-12 01:23:38 +02:00
616c60e213 domain models: schedule, library, config_snapshot, activity, provider_config 2026-07-12 01:17:44 +02:00
528b155327 domain models: User, Channel, ScheduleConfig, MediaItem, PlaybackRecord 2026-07-12 01:11:11 +02:00
b2e71403d8 domain value objects: auth, scheduling, channel, oidc, search 2026-07-12 01:05:31 +02:00
3ff146615f scaffold workspace + domain crate (errors, ids, uuid_id macro) 2026-07-12 01:00:50 +02:00
e3a65d8052 fix: use StdRng for shuffling indices in fill_block function 2026-03-20 23:12:44 +01:00
f45ca77b79 fix: format code for improved readability and consistency 2026-03-20 01:57:22 +01:00
a5c31ef8a9 fix(frontend): restore plain type labels in grouped sidebar 2026-03-20 01:56:11 +01:00
3662a5ab9e fix(frontend): suppress shows when type filter active; clarify grouped type labels 2026-03-20 01:53:13 +01:00
137251fe37 fix(frontend): restore ALL sentinel in sidebar to fix hydration mismatch 2026-03-20 01:33:27 +01:00
8101734c63 feat(frontend): add useLibraryShows and useLibrarySeasons hooks 2026-03-20 01:29:55 +01:00
6cf8a6d5e3 feat(frontend): implement grouped/drilldown view in library grid 2026-03-20 01:23:33 +01:00
c5317cb639 feat(frontend): add viewMode/drilldown state to library page 2026-03-20 01:21:54 +01:00
5f66493558 feat(api): add /library/shows and /library/shows/:name/seasons routes + season filter 2026-03-20 01:19:31 +01:00
5cc4cde223 feat(frontend): add ShowTile, SeasonTile, BreadcrumbNav components 2026-03-20 01:19:08 +01:00
5b89481104 feat(frontend): extend schedule dialog to support show/series selection 2026-03-20 01:19:00 +01:00
33338ac100 feat(frontend): make library sidebar drilldown-aware 2026-03-20 01:18:52 +01:00
66eef2c82e feat(frontend): add useLibraryShows and useLibrarySeasons hooks 2026-03-20 01:18:34 +01:00
6f1a4e19d3 feat(infra): implement list_shows, list_seasons + season_number filter 2026-03-20 01:16:02 +01:00
dd69470ee4 feat(frontend): add ShowSummary, SeasonSummary types + library shows/seasons API methods 2026-03-20 01:14:43 +01:00