Hey! @maxdorninger, could you please take a look on the other one ;) ?
Closes#145 ; seems like a must have thing
- Add `auth.registration_enabled` flag (default `false` — sounds safer
default in current setup)
- Password registration: `/auth/register` route will return 403 if
disabled
- OIDC registration: `UserManager.oauth_callback` is overridden to
reject user without match; so no auto-provision
- `/auth/metadata` exposes the flag to the frontend
- Frontend: signup link hidden on the login card; direct navigation to
`/login/signup` redirects to `/login` via a `+page.ts` load guard
<img width="463" height="461" alt="Screenshot 2026-05-16 at 20 52 11"
src="https://github.com/user-attachments/assets/1def5142-e930-4aa6-8771-cbff54250c1f"
/>
<img width="450" height="391" alt="Screenshot 2026-05-16 at 20 52 22"
src="https://github.com/user-attachments/assets/b4013964-cace-4aeb-a848-48ced86fcc5f"
/>
Also this means uses need to be created somehow -- so..
- Add POST `/users` - admin-protected endpoint to create a new users
(created user can be used with OIDC)
- Fronted: Add new user button and modal dialog
<img width="800" height="379" alt="Screenshot 2026-05-17 at 11 32 06"
src="https://github.com/user-attachments/assets/048e6c43-a1c1-42ce-a19c-fd9d916a47d9"
/>
<img width="537" height="439" alt="Screenshot 2026-05-17 at 11 32 12"
src="https://github.com/user-attachments/assets/3f83c2c1-027b-4279-b6a1-bbc8da77efed"
/>
---
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Add config toggle to enable/disable user registration; when disabled
sign-up endpoints return 403 and OIDC won’t auto-create unknown users.
Added admin API to create users.
* **Frontend**
* Login UI hides signup link when registration is disabled; signup page
redirects to login. Admin users list gains “Add User” modal to create
users.
* **Documentation**
* Authentication docs and config examples updated to document the new
option.
<!-- review_stack_entry_start -->
[](https://app.coderabbit.ai/change-stack/maxdorninger/MediaManager/pull/543?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)
<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This PR adjusts the configuration to the `openapi-typescript` generation
to export the schema types directly and allow importing them directly in
the frontend code:
<img width="645" height="73" alt="image"
src="https://github.com/user-attachments/assets/75ddb995-ac16-4154-842d-fd85d4bdea46"
/>
Alternatively without the `--root-types-no-schema-prefix` option, the
schemas would all be prefixed with "Schema" like
`SchemaMetaDataProviderSearchResult` which could be safer, if there are
type collisions.
LMK what's preferred.
---
Checklist:
- [x] run `npm run openapi` to re-generate the `api.d.ts`
- [x] run `npm run lint`
- [x] run `npm run format`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Refactor**
* Simplified and standardised TypeScript typings across the web app by
switching to concise public type aliases for API schemas (e.g. Movie,
Show, Episode, User, Notification, etc.), improving code clarity and
consistency across components and pages; purely type-level changes with
no runtime behaviour impact.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
**Description**
As explained on #322, MediaManager currently only matches torrents that
represent full seasons or season packs.
As a result, valid episode-based releases — commonly returned by
indexers such as EZTV — are filtered out during scoring and never
considered for download.
Initial changes to the season parsing logic allow these torrents to be
discovered.
However, additional changes are required beyond season parsing to
properly support single-episode imports.
This PR is intended as a work-in-progress / RFC to discuss the required
changes and align on the correct approach before completing the
implementation.
**Things planned to do**
[X] Update Web UI to better display episode-level details
[ ] Update TV show import logic to handle single episode files, instead
of assuming full season files (to avoid integrity errors when episodes
are missing)
[ ] Create episode file tables to store episode-level data, similar to
season files
[ ] Implement fetching and downloading logic for single-episode torrents
**Notes / current limitations**
At the moment, the database and import logic assume one file per season
per quality, which works for season packs but not for episode-based
releases.
These changes are intentionally not completed yet and are part of the
discussion this PR aims to start.
**Request for feedback**
This represents a significant change in how TV content is handled in
MediaManager.
Before proceeding further, feedback from @maxdorninger on the overall
direction and next steps would be greatly appreciated.
Once aligned, the remaining tasks can be implemented incrementally.
---------
Co-authored-by: Maximilian Dorninger <97409287+maxdorninger@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This PR facilities the migration from the old Writerside documentation
platform to Gitbook.
## motivation
Gitbook supports serving multiple versions of the documentation, e.g.
v1.12.1, v1.13.0, and master.