* Add one-shot app_config linter migration workflow * Add app_config linter compatibility action * Add add-on map compatibility normalizer * Test add-on map compatibility normalizer * Run app_config compatibility preparation on pull request * Validate app_config short and long map forms separately * Export validated workflow updates * Use app_config-compatible linter for PR checks * Use app_config-compatible linter for builds * Remove temporary linter preparation workflow * Add one-shot app_config manifest migration * Migrate legacy addon_config maps to app_config * Preserve upstream legacy aliases without deprecated literals * Test legacy alias compatibility without deprecated literals * Validate completed app_config migration * Count only add-on manifests during migration validation * Remove temporary migration validation workflow * Document legacy alias construction * Remove obsolete local linter compatibility script * Remove obsolete local linter compatibility tests * fix(pr-2937-review): address reviewer findings on app_config migration - Remove the orphaned .github/actions/addon-linter composite action: it references .github/scripts/prepare_addon_lint_config.py, which was never added (the normalization approach was superseded by pinning frenck/action-addon-linter directly in #2936). Confirmed unused - no workflow invokes it. - cleanuparr: HA_DATA_DIR pointed at /app_configs/cleanuparr, a path not mounted inside the container. cleanuparr's map is app_config:rw, which Supervisor mounts at /config, so data was living on the ephemeral container filesystem. Point it at /config instead (pre-existing bug, not introduced by this PR - just carried the wrong path forward). - joplin/README.md: joplin's config.yaml still declares config:rw, not app_config (it was never part of the 86-manifest migration). Revert the doc text that incorrectly started calling it the app_config mapping. - qbittorrent/00-folders.sh: fix a pre-existing copy/paste bug in the migration marker/log for the main-folder migration block - it referenced "openvpn" and a "qBitorrent" typo instead of qBittorrent. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Home Assistant add-on: Seerr
About
This add-on packages Seerr, an open-source media request and discovery manager for Jellyfin, Plex, and Emby.
This add-on is based on the existing Overseerr add-on structure, adapted for the Seerr upstream project and container image. It supports Home Assistant Ingress via an internal NGINX reverse proxy.
Upstream repositories reviewed:
- Overseerr: https://github.com/sct/overseerr
- Seerr: https://github.com/seerr-team/seerr
Installation
- Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA)
- Install Seerr.
- Configure options, then start the add-on.
- Open the Web UI on port
5055or via Home Assistant Ingress.
Configuration
Use env_vars to pass extra environment variables when needed. Seerr configuration is stored in /config.
Options
| Option | Type | Default | Description |
|---|---|---|---|
NODE_MEMORY_LIMIT |
int | 512 |
Maximum Node.js heap memory in MB. Increase if Seerr crashes with large libraries; decrease on memory-constrained systems. |
PGID |
int | 0 |
Group ID for file permissions |
PUID |
int | 0 |
User ID for file permissions |
TZ |
str | Timezone (e.g. Europe/London) |
Example
NODE_MEMORY_LIMIT: 512
env_vars: []
PGID: 0
PUID: 0
TZ: Europe/London
Migration
From Overseerr
Seerr is compatible with Overseerr's data format. To migrate your existing configuration:
- Stop the Overseerr add-on.
- Install and start the Seerr add-on once to create its config directory (
/app_configs/db21ed7f_seerr/), then stop it. - Open the Filebrowser add-on (or any file manager with access to
/app_configs/). - Navigate to
/app_configs/db21ed7f_overseerr/and copy all files into/app_configs/db21ed7f_seerr/. - Start the Seerr add-on. Your existing settings, users, and requests will be preserved.
From Jellyseerr
Seerr is compatible with Jellyseerr's data format. To migrate your existing configuration:
- Stop the Jellyseerr add-on.
- Install and start the Seerr add-on once to create its config directory (
/app_configs/db21ed7f_seerr/), then stop it. - Open the Filebrowser add-on (or any file manager with access to
/app_configs/). - Navigate to
/app_configs/db21ed7f_jellyseerr/and copy all files into/app_configs/db21ed7f_seerr/. - Start the Seerr add-on. Your existing settings, users, and requests will be preserved.
From Ombi
Ombi uses a different data format and there is no automated migration path to Seerr. You will need to configure Seerr from scratch:
- Note down your Ombi configuration (media servers, users, notification settings, etc.).
- Stop the Ombi add-on.
- Install and start the Seerr add-on.
- Use the Seerr web UI to reconnect your media server(s) and reconfigure your preferences.
Support
If you find a bug, open an issue in this repository.