You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
cli: forget, to stop managing a collection and leave it on the server (#36) (f2a6c35)
cli: remove shows which collections it would delete before asking (#36) (f2a6c35)
collections: Binge, BBC iPlayer, ITVX, Channel 4, Crunchyroll, Shudder, the Criterion Collection, and Korean, Japanese, Indian, British and Australian collections (#37) (208c9cb)
collections: fixed franchise lists also match titles written another way or a year out, never a remake (#37) (208c9cb)
collections: franchises completed from TMDB, plus 22 new ones including Dune, Final Destination and Wicked (#37) (208c9cb)
collections: seasonal collections have dates, and new Christmas movies, TV and kids collections (#37) (208c9cb)
collections: two collections that would share a name get a note instead of being mixed up (#37) (208c9cb)
config: warn about settings CineSets doesn't know, with a suggestion for typos (#36) (f2a6c35)
docker: a ready-made image for amd64 and arm64 on ghcr.io/blurbery/cinesets with each release (#38) (c0b1ecf)
install: ./install.sh --uninstall takes only this folder's schedule off and says what else to do (#38) (c0b1ecf)
posters: artwork can be set for a section or a single collection (#40) (326ed89)
posters: logos for Binge, BBC iPlayer, Channel 4, Crunchyroll and Shudder, with alternative logos and icons for iPlayer and Crunchyroll (#44) (b96774d)
posters: mosaic artwork made from the collection's own posters in a 2x2 or 3x3 grid (#40) (326ed89)
seasonal collections are removed outside their season (#36) (f2a6c35)
servers: ask Emby, Jellyfin and Silo for each title's own poster (#40) (326ed89)
servers: server.verify for self-signed certificates (false, or a CA certificate file) (#35) (72fcf2f)
web: a short getting-started note on first use (#34) (890219a)
web: an optional web: hosts list that turns away other names, a defence against DNS rebinding (#33) (42d9629)
web: Apply offers to save unsaved changes first (#34) (890219a)
web: checking an MDBList list counts the type you pick and warns when too few are in your library to make a collection (#34) (890219a)
web: on phones Save and Apply stay at the bottom, with a small copy of the poster while you scroll (#34) (890219a)
web: smaller, faster previews in the strip and Preview all, with Try again when one fails (#34) (890219a)
web: the Design tab offers mosaic artwork at every scope, with previews and tile shuffling (#40) (326ed89)
web: the run log keeps growing past 500 lines and shows how each run went: its summary, any problems and whether it stopped early (#34) (890219a)
web: undo and redo for poster designs, and Undo for removing a list, "Use the usual words" and resets (#34) (890219a)
Bug fixes
a poster or artwork problem no longer stops a collection's titles updating (#36) (f2a6c35)
CineSets never takes over or loses a collection because another one shares its name (#36) (f2a6c35)
collections: franchises need fewer of their films, so a library missing one still gets the collection (#37) (208c9cb)
collections: stale or odd lists replaced (Most Watched, DC, Star Wars, MCU shows, Preschool, Popular Animation, Peacock), and Middle-earth and John Wick are fixed lists (#37) (208c9cb)
collections: The Evil Dead uses TMDB's year (1983), so it matches (#37) (208c9cb)
docker: the compose example can run a second install, with a port per install and a dashboard healthcheck (#38) (c0b1ecf)
emby/jellyfin: ask for artwork tall enough for a sharp poster (#35) (72fcf2f)
emby/jellyfin: delete only items that are collections (#35) (72fcf2f)
emby/jellyfin: page through libraries in a fixed order and warn when fewer titles come back than the server counted (#35) (72fcf2f)
emby/jellyfin: say clearly when the API key can see no administrator (#35) (72fcf2f)
install: a Python environment broken by a Python upgrade is made again, and run.sh says so (#38) (c0b1ecf)
install: CineSets runs as the folder's owner, switching from root when it can, and cron.example uses that user (#38) (c0b1ecf)
install: the installer says when there's no cron instead of asking to run it again (#38) (c0b1ecf)
keep a backup of state.json, and explain a broken config.yml or state.json instead of showing a traceback (#36) (f2a6c35)
logos: renamed logos are found, one missing logo no longer stops the rest, and a cut-off download never leaves a broken file (#43) (ffc73f9)
plan, posters and apply end with a Summary line and exit with 1 when something failed or the run stopped early (#36) (f2a6c35)
posters: artwork is turned by its EXIF orientation and converted to sRGB when it has another colour profile (#43) (ffc73f9)
posters: Greek, Cyrillic and Vietnamese letters are drawn in Noto Sans instead of as boxes (#43) (ffc73f9)
posters: long titles go onto two lines and shrink further, and long labels and streaming subtitles shrink, so text stays on the poster (#43) (ffc73f9)
posters: streaming posters made before their logo was downloaded are drawn again with it, and so are posters whose text ran off or had missing letters (#43) (ffc73f9)
posters: text over artwork too bright to read gets the artwork darkened just behind it, and a near-black text colour is lightened (#43) (ffc73f9)
posters: very wide or very tall artwork no longer uses hundreds of megabytes while it's cropped (#43) (ffc73f9)
servers: retry reads and repeatable writes after a dropped connection, a timeout or a busy server, honouring Retry-After, but never resend making a collection (#35) (72fcf2f)
servers: say what to do when the server refuses the API key, the address is wrong, a proxy rejects a poster upload, the server is rate limiting, or its certificate isn't trusted (#35) (72fcf2f)
servers: tidy only the path of a pasted address, so servers named emby or web keep their names, and tidy addresses in config.yml and CINESETS_URL too (#35) (72fcf2f)
silo: look up missing show ids again after a week instead of keeping a gap forever (#35) (72fcf2f)
silo: send the API key for artwork only to Silo's own scheme, host and port, and follow storage redirects only on the same host (#35) (72fcf2f)
stop the run when the server turns down the API key or keeps asking CineSets to slow down (#36) (f2a6c35)
the Docker scheduler retries a job that didn't finish after about an hour, remembers when jobs ran, and stops cleanly on docker stop (#36) (f2a6c35)
wait out MDBList's rate limit politely, and warn every run about a list that keeps failing (#36) (f2a6c35)
web: a collection's new words can't give it another collection's name (#34) (890219a)
web: better contrast, larger touch targets, 16px fields on phones, and focus that follows the Design buttons (#34) (890219a)
web: create web.json readable only by you on filesystems without hard links (#33) (42d9629)
web: error messages stay until dismissed, and the unsaved state keeps its word on narrow screens (#34) (890219a)
web: on touch screens a tap previews artwork and "Use this" keeps it (#34) (890219a)
web: people who aren't signed in and slow uploads can no longer fill the dashboard's busy slots (#33) (42d9629)
web: refuse a negative Content-Length, oversized sign-in bodies and overlong session cookies (#33) (42d9629)
web: setting, changing or removing the dashboard password signs everyone out (#33) (42d9629)
web: the access key always signs in, and only wrong passwords are rate limited, with the wait shown in minutes (#33) (42d9629)
web: the dashboard keeps the run log when it restarts mid-run, and shows one banner that retries by itself when CineSets can't be reached (#34) (890219a)
web: the Design tab names Noto Sans as the last fallback font and says when Auto adds a text shadow (#44) (b96774d)
web: warn when public mode listens beyond this machine (#33) (42d9629)
web: words typed in the Text card count as unsaved, are saved by Save and Ctrl+S, and aren't lost without asking (#34) (890219a)
Performance
posters: fonts are kept once loaded, and logos and gradient titles are drawn much faster (#43) (ffc73f9)
silo: pause between writes only as long as each write calls for, roughly halving a first run on a fast server (#35) (72fcf2f)
Dependencies
tested dependency versions in constraints.txt, used by install.sh, Docker and CI (#38) (c0b1ecf)
update pytest requirement from >=7.0 to >=8.4.2 (#42) (bd9d6b3)
Documentation
dashboard: give the dashboard a name of its own rather than a path on an existing site (#33) (42d9629)
how release notes work, and how to merge a release pull request (#31) (b931a58)
mosaic artwork in the README, example config, preview and dashboard guide (#40) (326ed89)
uninstalling, Docker from ghcr.io, and Unraid, TrueNAS SCALE and Synology (#38) (c0b1ecf)
Tests
collections: a checker for every MDBList list in the catalogue (#37) (208c9cb)
Continuous integration
a pull request can list several changes in its release notes box, each with its own line in the notes (#31) (b931a58)
every merged pull request gets a line in the release notes, docs and refactors included (#31) (b931a58)
every push to main gets a full CI run instead of being cancelled by the next one (#31) (b931a58)