Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
- Install Posteryard on Unraid from the Apps tab, listed in Community Applications.
- Default the Unraid webhook port to 8098, as many Unraid apps already use 8000.
- Restart the Unraid container after a crash.
- Show the latest release notes in the Unraid template, and take its settings help from the README.
- Show the settings panel's lines for the install method picked on the landing page.
- Name Posteryard's version and project page in every web request, as Wikimedia asks of programs that download its logos.

Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ UPDATE_GOLDEN=1 uv run pytest tests/test_golden.py

A change to the database schema adds a new entry at the end of `MIGRATIONS` in `src/posteryard/store.py`. Never edit an entry that was released.

A new setting also goes into the Unraid template, `templates/posteryard.xml`, with its default as the value, and into `site/settings.json`. `tests/test_unraid.py` fails when a template default does not load or a template setting is missing from `README.md`.
A new setting also goes into the Unraid template, `templates/posteryard.xml`, and into `site/settings.json`. The template takes each setting's description and default from its row in the `README.md` Settings table, and its `Changes` from the newest dated `CHANGELOG.md` section. Add the field with its name, display and mask, then run `uv run python tools/unraid_template.py`. `tests/test_unraid.py` fails when the template is out of date, a template default does not load, or a template setting has no README row.

## Website

Expand All @@ -118,4 +118,4 @@ The Plex preview shows either 12 random movies or 12 random shows from `site/pos

## Releases

Semantic versioning. Move the `Unreleased` entries in [CHANGELOG.md](CHANGELOG.md) under the new version with its date, set `version` in `pyproject.toml`, merge, and push a `vX.Y.Z` tag. The tag runs the CI checks, then pushes `ghcr.io/sandobserver/posteryard:X.Y.Z`, `:X.Y` and `:latest`, and publishes a GitHub release with the version's CHANGELOG section. The release stops if the tag, `pyproject.toml` and a dated CHANGELOG section do not agree. The image carries an SBOM and build provenance. A tag with a suffix, such as `v1.0.0-rc.1`, publishes a prerelease: only the `1.0.0-rc.1` image tag, and a GitHub release marked as prerelease.
Semantic versioning. Move the `Unreleased` entries in [CHANGELOG.md](CHANGELOG.md) under the new version with its date, set `version` in `pyproject.toml`, run `uv run python tools/unraid_template.py` to copy the notes into the Unraid template, merge, and push a `vX.Y.Z` tag. The tag runs the CI checks, then pushes `ghcr.io/sandobserver/posteryard:X.Y.Z`, `:X.Y` and `:latest`, and publishes a GitHub release with the version's CHANGELOG section. The release stops if the tag, `pyproject.toml` and a dated CHANGELOG section do not agree. The image carries an SBOM and build provenance. A tag with a suffix, such as `v1.0.0-rc.1`, publishes a prerelease: only the `1.0.0-rc.1` image tag, and a GitHub release marked as prerelease.
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,15 +125,21 @@ curl -fsSL -o /boot/config/plugins/dockerMan/templates-user/my-Posteryard.xml \

## Settings

Every setting has a default. Add a line under `environment:` only to change one. The [landing page](https://posteryard.sandobserver.com/#settings) builds these lines for you.
Every setting except the first four has a default. Add a line under `environment:` only to change one. The [landing page](https://posteryard.sandobserver.com/#settings) builds these lines for you.

| Setting | What it does | Default |
| --- | --- | --- |
| `TMDB_API_KEY` | A free key from [TMDB](https://www.themoviedb.org/settings/api), under **Settings**, **API**. The API Read Access Token works too. | |
| `PLEX_URL` | Your Plex server's address on the network, such as `http://192.168.1.10:32400`. Not `localhost`. Leave it empty for Jellyfin or Emby. | |
| `PLEX_TOKEN` | Your [Plex token](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/). Leave it empty for Jellyfin or Emby. | |
| `WEBHOOK_SECRET` | Any long random text, such as the output of `openssl rand -hex 16`. It is part of the webhook address. | |
| `DRY_RUN` | `true` saves previews and changes nothing on your server. `false` uploads the images and locks them. | `true` |
| `LIBRARIES` | Libraries to manage, separated by commas, named as your server shows them. Movie and TV libraries only. `PLEX_LIBRARIES` works too. | `Movies,TV Shows` |
| `ONLY_RATING_KEYS` | Limit Posteryard to a few titles, for a first test. [Rating keys](docs/commands.md#rating-keys) separated by commas. A show includes its seasons and episodes. | |
| `JELLYFIN_URL`, `JELLYFIN_API_KEY` | Use Jellyfin instead of Plex. See [Jellyfin and Emby](docs/jellyfin-and-emby.md). | |
| `EMBY_URL`, `EMBY_API_KEY` | Use Emby instead of Plex. See [Jellyfin and Emby](docs/jellyfin-and-emby.md). | |
| `JELLYFIN_URL` | Your Jellyfin server's address. Use it instead of `PLEX_URL` and `PLEX_TOKEN`. See [Jellyfin and Emby](docs/jellyfin-and-emby.md). | |
| `JELLYFIN_API_KEY` | A Jellyfin API key, from **API Keys** in the Jellyfin dashboard. | |
| `EMBY_URL` | Your Emby server's address. Use it instead of `PLEX_URL` and `PLEX_TOKEN`. See [Jellyfin and Emby](docs/jellyfin-and-emby.md). | |
| `EMBY_API_KEY` | An Emby API key, from **API Keys** in the Emby dashboard. | |
| `QUALITY_MIN_VIDEO` | Lowest resolution that gets a badge: `off`, `720`, `1080` or `2160`. | `2160` |
| `QUALITY_MIN_HDR` | Lowest HDR format that gets a badge: `off`, `hdr10`, `hdr10plus` or `dolbyvision`. | `hdr10` |
| `QUALITY_MIN_AUDIO` | Lowest audio that gets a badge: `off`, `5.1`, `7.1` or `atmos`. DTS:X counts as `atmos`. | `atmos` |
Expand Down
Loading