Spaces:
Paused
Paused
Commit History
-
feat: add distance-from-edge inset setting for backdrop ratingsβ
PNRxACloses #7. Some media players (e.g. Nuvio on Mac) reposition/crop backdrops and clip the rating badges. Add two independent per-key/global settings that inset the backdrop ratings inward from the anchored edge: - backdrop_edge_inset_x β horizontal inset (% of width), applies only to left/right positions - backdrop_edge_inset_y β vertical inset (% of height), applies only to top/bottom positions Centered axes ignore their inset, so a top-right position exposes "space from top" and "space from right", while "right" exposes only "space from right". Surfaced in the settings UI as conditional, edge-aware inputs and as edge_inset_x / edge_inset_y query params on the backdrop image and preview endpoints. The cache token (.eh{x}/.ev{y}) is emitted only when the position-gated value is non-zero, mirroring the existing optional .x1 (split) and .blur tokens, so default backdrop cache keys are unchanged and no cache-key migration is needed (only the additive DB columns, default 0).70cc48f -
feat: normalize poster aspect ratio to 2:3 (#15)β
PNRxANon-2:3 source posters were served at their native aspect ratio, so downstream apps (Stremio addons, aiometadata) that place posters in fixed 2:3 containers cropped them β cutting off the title/logo art baked into the poster (issue #15). Two complementary fixes: - Render-side: a new `poster_fit` setting normalizes every poster to an exact 2:3 frame (e.g. 580x870 / 1280x1920 / 2000x3000). Modes: `cover` (default, center-crop), `pad` (solid letterbox), `blur` (blurred-fill bars), and `native` (legacy source-ratio passthrough). - Selection-side: among TMDB posters, prefer art near 2:3 before falling back to highest vote, so the chosen source usually needs little cropping. Configurable per-key, globally, and via the `?fit=` query param. Threaded through RenderSettings, the cache key (native emits no token so existing poster cache stays valid; the new default emits one), the api_key_settings DB column + migration, OpenAPI, and the admin UI (with live preview). Tests: poster fit β¦5283e2c
-
Merge remote-tracking branch 'origin/main' into feat/badge-shape-backgroundβ
PNRxA# Conflicts: # README.md # api/src/handlers/preview.rs # api/src/image/generate.rs # api/src/image/serve.rs # api/src/lib.rs # web/src/__tests__/components/RenderSettingsForm.spec.ts # web/src/components/RenderSettingsForm.vue # web/src/lib/api.tsc45d5f9
-
feat: split poster badges onto opposite sides (#18)β
PNRxAAdd a per-poster `poster_badge_split` setting (query param `split`) that divides rating badges evenly across two opposite sides of the poster. The split axis follows the badge layout: a vertical column splits left/right, horizontal rows split top/bottom. With an odd number of badges the configured side keeps the extra one (4 -> 2+2, 3 -> 2+1); a single badge is never split. - Rendering: BadgePosition::split_anchors + overlay_poster_group on the poster render path; threaded through ImageParams/serve/preview. - Cache: the split contributes a key token only when enabled, so existing non-split cache keys and CDN settings hashes are unchanged. - Settings: new column + migration, per-key/global/free-key plumbing, `split` query-param override. - Web: settings-form checkbox with live preview, free-key "Try it out" control, API params, types, and README docs.6db0b76 -
feat: add pill-style badges and dark/transparent/no-background options (#19)β
PNRxAAdd two orthogonal, per-image-type badge appearance settings: - badge_shape: rounded (default) | pill (fully rounded ends) - badge_background: default | dark | transparent | none These are plumbed through the full settings stack (per-key + global defaults, query-param overrides, cache keys) for posters, logos, backdrops, and episodes, and exposed in the admin/key settings forms and the public free-key "Try it out" form. Closes #19.c165e10 -
feat: reflect server defaults in the free-key "Try it out" formβ
PNRxAThe free API key serves with the instance's global render settings, but the "Try it out" card showed hardcoded frontend defaults β so the displayed rating priority and the implied curl output didn't match what the key actually produces. Add a public GET /api/free-key/settings endpoint (gated on the free key being enabled, served from the existing global_settings_cache so it adds no DB reads, and trimmed of the admin-only operational flags). The card fetches it once (memoized in the auth store) and now: - seeds the rating priority list from the server's order (only sending a ratings_order override once the user reorders away from it), - annotates each dropdown's "default" with the server's resolved per-image-type value (e.g. "Badge style: default (Vertical)"), - dims rating sources the server excludes, falling back to the built-in defaults if the fetch fails.7e7d412
-
allow logging in with api key to manage individual settings
PNRxA6c38a8d
-
implement dashboard layout and additional tests
PNRxA2c8ae4e