Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
687f18b
ci(create-tag): correct quote style in commit message for tag prepara…
fallenbagel Feb 27, 2026
4bd7c19
chore(i18n): update translations from Weblate (#2419)
seerr-automation-bot Feb 27, 2026
720a75b
docs(blog): release notes for seerr v3.1.0 addressing critical securi…
fallenbagel Feb 27, 2026
e086081
fix(proxy): add path validation guardrail to imageproxy (#2531)
RinZ27 Feb 27, 2026
a2d1e1b
refactor(notifications): move event from author to title field in Dis…
ventiph Feb 27, 2026
5c34c91
feat(sonarr): add monitorNewItems option to sonarr settings & modal (…
fallenbagel Feb 27, 2026
f74306e
chore(helm): upgrade seerr to 3.1.0 (#2597)
M0NsTeRRR Feb 28, 2026
001f6b1
fix(media): exclude null mediaAddedAt entries (#2607)
0xSysR3ll Mar 1, 2026
61e0377
feat(notifications): add priority setting for ntfy agent (#2306)
fallenbagel Mar 1, 2026
c23117e
feat(requests): mark requests as failed when Radarr/Sonarr unreachabl…
0xSysR3ll Mar 1, 2026
fece753
fix(settings): remove beta info banner (#2615)
0xSysR3ll Mar 2, 2026
3557745
feat(jellyfin): allow Jellyfin Guids with dashes for import-from-jell…
its-wizza Mar 2, 2026
835e917
fix(email): preserve newlines in PGP key textarea fields (#2617)
fallenbagel Mar 2, 2026
a16d046
fix(issues): update issue timestamp when adding comments (#2616)
fallenbagel Mar 2, 2026
9ec3d58
fix(email): correctly classify final MIME header in PGP email encrypt…
fallenbagel Mar 3, 2026
1dc5154
fix(setup): fix Plex login not proceeding after authentication (#2596)
fallenbagel Mar 3, 2026
3152f72
feat(notifications): webhook custom headers (#2230)
0xSysR3ll Mar 5, 2026
4ce0db1
feat(trending): add filter options (#2137)
bogo22 Mar 5, 2026
e25c1a5
ci(actions): update github actions (#2632)
renovate[bot] Mar 5, 2026
94ccd47
fix: anchor streaming service filter check icon to each provider card…
0xSysR3ll Mar 5, 2026
1548948
fix(plex): set 4K Plex URLs whenever ratingKey4k is set (#2635)
0xSysR3ll Mar 5, 2026
ff4ab21
feat(webhook): add jellyfinMediaId and jellyfinUserId to webhook not…
Jerra94 Mar 6, 2026
fbfcb43
fix(region-selector): prevent empty region reporting during sync (#2636)
0xSysR3ll Mar 10, 2026
4d2b658
ci: ignore helm scope in git-cliff (#2638)
M0NsTeRRR Mar 10, 2026
6aa4745
build(docker): update node.js to 7aa86fa (#2355)
renovate[bot] Mar 10, 2026
d5c5f1f
refactor: rename Error components to ErrorPage (#2668)
gauthier-th Mar 10, 2026
f047cab
ci(actions): update github actions (#2672)
renovate[bot] Mar 10, 2026
b1adc79
chore(i18n): update translations from Weblate
weblate Mar 11, 2026
40edaea
feat(i18n): add Vietnamese language support (#2670)
0xSysR3ll Mar 12, 2026
8563362
test: support server-side unit testing (#2485)
michaelhthomas Mar 12, 2026
1d47c49
chore(deps): update dependency @types/email-templates to v10 (#2349)
renovate[bot] Mar 12, 2026
904bc83
chore(deps): update dependency @svgr/webpack to v8 (#2021)
renovate[bot] Mar 12, 2026
dccdc95
feat(i18n): add Luxembourgish language support (#2671)
0xSysR3ll Mar 12, 2026
c0241d9
chore(deps): update pnpm lockfile (#2685)
0xSysR3ll Mar 12, 2026
636dcb9
feat: add trailing whitespace warning on login username field (#2040)…
GeoffreyCoulaud Mar 12, 2026
f40323c
fix(migration): repair postgres blocklist id sequence (#2686)
0xSysR3ll Mar 12, 2026
d25d0ca
fix(requests): mark requests as completed when media is already avail…
gauthier-th Mar 14, 2026
0be1896
fix: disambiguate tmdb ids by media type across lookups (#2577)
fallenbagel Mar 14, 2026
6c52a2f
fix(settings): serialize settings writes and prevent partial overwrit…
fallenbagel Mar 16, 2026
40e02bb
docs(docker): replace backslashes by backticks in windows docker run …
0xSysR3ll Mar 16, 2026
36243a0
chore: upgrade to eslint v9 (#2574)
michaelhthomas Mar 16, 2026
90d407d
fix(movie,tv): respect display language for trailers (#2674)
0xSysR3ll Mar 16, 2026
a2154f9
ci(actions): update github actions (#2683)
renovate[bot] Mar 16, 2026
7920970
feat(discover): handle errors gracefully when content is available (#…
dj0024javia Mar 17, 2026
10f23f0
fix(jellyfin-scanner): add TheMovieDb provider fallback for Jellyfin …
YakGravity Mar 17, 2026
c7185d4
fix(open-api): add missing mediaType query parameter to blocklist and…
jabloink Mar 18, 2026
25e376c
feat: sort quality profiles ASC in request and service configuration …
0xSysR3ll Mar 19, 2026
eaf397a
feat(userlist): add sortable columns to User List (#1615)
0xSysR3ll Mar 20, 2026
fb2ee7c
feat(person): add tmdb- and imdb link on person detail page (#2136)
bogo22 Mar 20, 2026
dbe1fca
refactor(userlist): responsive columns and buttons (#2083)
ofgrenudo Mar 21, 2026
865396f
fix(watchlist-sync): handle empty watchlists on PostgreSQL (#2718)
redondos Mar 23, 2026
5373da4
docs: fix PM2 start command syntax (#2713)
bibi0019 Mar 24, 2026
20c2ed8
test(user-list): deflake sorting assertions (#2766)
0xSysR3ll Mar 27, 2026
56b79ff
feat(i18n): add Estonian language support (#2611)
Sym-jay Mar 28, 2026
993ae4c
feat(blocklist): add support for collections (#1841)
0xSysR3ll Mar 29, 2026
be57997
fix(override-rules): remove users from `useEffect` dependency array (…
fallenbagel Mar 30, 2026
735ec47
fix(login): resolve stuck transition when switching login forms (#2779)
fallenbagel Mar 30, 2026
05ad60c
docs: promote Nixpkgs as an official installation method (#2775)
M0NsTeRRR Mar 31, 2026
4434c45
fix: helm chart liveness and readiness probe (#2755)
Jyasapara Mar 31, 2026
036d000
refactor(imageproxy): reduce noisy image cache logging (#2789)
fallenbagel Apr 1, 2026
685cb44
refactor(watchlistsync): log media request creation after success ins…
fallenbagel Apr 1, 2026
1bb638e
fix: await missing repository saves (#2760)
0xSysR3ll Apr 1, 2026
772e83d
chore: add PR validation workflow and update contributing guidelines …
fallenbagel Apr 2, 2026
67e27d5
ci(pr-validation): disable package manager cache in nodejs setup (#2799)
fallenbagel Apr 2, 2026
986761f
ci(pr-validation): update pull request permissions to write for valid…
fallenbagel Apr 2, 2026
5bbdc52
docs: move network-related docs to a dedicated tab (#2791)
tiagodefendi Apr 2, 2026
58514ec
ci(pr-validation): make checklist box detection case-insensitive (#2802)
fallenbagel Apr 2, 2026
868430b
build(docker): update node.js to v22.22.1 (#2707)
renovate[bot] Apr 2, 2026
6f9b743
docs(contributing-guide): fix a typo (#2807)
fallenbagel Apr 2, 2026
dc40ca4
docs: add self-signed certificate guide [skip ci] (#2776)
costajohnt Apr 3, 2026
6d8b2b7
feat(quota): added support for unlimited quota days (#2797)
Roboroads Apr 4, 2026
77f2c13
feat(notifications): add ntfy markdown formatting (#2602)
v3DJG6GL Apr 4, 2026
e85216a
chore(i18n): update translations from Weblate
weblate Apr 4, 2026
0b8f872
fix(entities): replace MySQL-only onUpdate with @UpdateDateColumn (#2…
fallenbagel Apr 5, 2026
bd8f2d4
feat(ui): add loading state to request approve/decline buttons (#2815)
bobziroll Apr 6, 2026
6aeab38
fix(request): correct delete permission check and await movie save (#…
dougrathbone Apr 7, 2026
fe2c041
fix(emby): use static version in auth header for emby only (#2821)
fallenbagel Apr 7, 2026
e71f9eb
feat(helm): add subPath for volumeMount (#2834)
jisef Apr 7, 2026
86acc41
fix(helm): healthcheck endpoint to avoid github rate limit (#2837)
M0NsTeRRR Apr 8, 2026
2432e8d
feat(webhook): add imdbid to webhook notification (#2658)
M0NsTeRRR Apr 8, 2026
061121c
fix(generate-password): await setPassword to fix race condition (#2845)
fallenbagel Apr 9, 2026
f5115da
feat(settings): add help tooltips for services setup (#2662)
0xSysR3ll Apr 12, 2026
20ccd4b
fix(request): record modifiedBy on retry and add route tests (#2824)
fallenbagel Apr 12, 2026
43eff25
fix(overseerr-merge): sanitise corrupt quota values during overseerr …
fallenbagel Apr 12, 2026
a133930
docs: Clarify Docker volume creation instructions on fresh Windows in…
leereilly Apr 13, 2026
ef450cc
chore(helm): bump app version to 3.1.2 (#2870)
aslafy-z Apr 13, 2026
9c4c674
chore(deps): fix axios security vulnerability (#2872)
gauthier-th Apr 13, 2026
891265f
chore: bump minimum required node version to 22.19.0 (#2873)
michaelhthomas Apr 13, 2026
15b3109
fix(auth): resolve Plex OAuth client ID mismatch (#2746)
0xSysR3ll Apr 14, 2026
aef2481
fix: improve local login UX (#2849)
fallenbagel Apr 15, 2026
ff469cb
feat(settings): add blocklist region and language options (#1802)
0xSysR3ll Apr 15, 2026
1cc73a8
ci(docker): release alias for major and minor version series (#2881)
M0NsTeRRR Apr 15, 2026
66130be
fix(settings): persist new settings defaults to disk on startup (#2884)
fallenbagel Apr 15, 2026
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
69 changes: 0 additions & 69 deletions .eslintrc.js

This file was deleted.

24 changes: 10 additions & 14 deletions .github/cliff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,23 +69,19 @@ commit_preprocessors = [
{ pattern = '.*\[ci skip\].*', replace = "" },
]
commit_parsers = [
{ message = "^feat", group = "<!-- 0 -->🚀 Features" },
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
{ message = '.*\(helm\).*', skip = true },
{ message = '^chore\(release\): prepare for', skip = true },
{ message = '^chore\(deps.*\)', skip = true },
{ body = ".*security", group = "<!-- 0 -->🛡️ Security" },
{ message = "^feat", group = "<!-- 1 -->🚀 Features" },
{ message = "^fix", group = "<!-- 2 -->🐛 Bug Fixes" },
{ message = "^doc", group = "<!-- 3 -->📖 Documentation" },
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
{ message = "^chore\\(release\\): prepare for", skip = true },
{ message = "^chore\\(deps.*\\)", skip = true },
{ message = "^chore\\(pr\\)", skip = true },
{ message = "^chore\\(pull\\)", skip = true },
{ message = "^chore\\(git-sync\\)", skip = true },
{ message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
{ message = "^refactor", group = "<!-- 5 -->🚜 Refactor" },
{ message = "^style", group = "<!-- 6 -->🎨 Styling" },
{ message = "^test", group = "<!-- 7 -->🧪 Testing" },
{ message = "^chore|^ci", group = "<!-- 8 -->⚙️ Miscellaneous Tasks" },
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
{ message = '.*\[skip ci\].*', skip = true },
{ message = '.*\[ci skip\].*', skip = true },
]
protect_breaking_commits = false
tag_pattern = "v?[0-9]+\\.[0-9]+\\.[0-9]+.*"
Expand Down
55 changes: 50 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ jobs:
name: Lint & Test Build
if: github.event_name == 'pull_request'
runs-on: ubuntu-24.04
container: node:22.22.0-alpine3.22@sha256:0c49915657c1c77c64c8af4d91d2f13fe96853bbd957993ed00dd592cbecc284
container: node:22.22.1-alpine3.22@sha256:9f96f09f127f06feaff1e7faa4a34a3020cf5c1138c988782e59959641facabe
steps:
- name: Checkout
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
Expand Down Expand Up @@ -127,6 +127,51 @@ jobs:
- name: Build
run: pnpm build

unit-test:
name: Unit Tests
if: github.event_name == 'pull_request'
runs-on: ubuntu-24.04
container: node:22.22.1-alpine3.22@sha256:9f96f09f127f06feaff1e7faa4a34a3020cf5c1138c988782e59959641facabe
permissions:
checks: write
steps:
- name: Checkout
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
with:
persist-credentials: false

- name: Pnpm Setup
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Get pnpm store directory
shell: sh
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
env:
CI: true
run: pnpm install

- name: Run tests
env:
CI: true
run: pnpm test

- name: Publish test report
uses: mikepenz/action-junit-report@49b2ca06f62aa7ef83ae6769a2179271e160d8e4 # v6.3.1
if: success() || failure() # always run even if the previous step fails
with:
report_paths: 'report.xml'

build:
name: Build (per-arch, native runners)
if: github.ref == 'refs/heads/develop'
Expand Down Expand Up @@ -154,7 +199,7 @@ jobs:
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0

- name: Warm cache (no push) — ${{ matrix.platform }}
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
with:
context: .
file: ./Dockerfile
Expand Down Expand Up @@ -190,13 +235,13 @@ jobs:
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0

- name: Log in to Docker Hub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

- name: Log in to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand All @@ -216,7 +261,7 @@ jobs:
org.opencontainers.image.created=${{ steps.ts.outputs.TIMESTAMP }}

- name: Build & Push (multi-arch, single tag)
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
with:
context: .
file: ./Dockerfile
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@ jobs:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
uses: github/codeql-action/init@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6
with:
languages: ${{ matrix.language }}
queries: +security-and-quality

- name: Autobuild
uses: github/codeql-action/autobuild@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
uses: github/codeql-action/autobuild@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
uses: github/codeql-action/analyze@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6
with:
category: '/language:${{ matrix.language }}'
4 changes: 2 additions & 2 deletions .github/workflows/create-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
persist-credentials: false

- name: Install git-cliff
uses: taiki-e/install-action@cede0bb282aae847dfa8aacca3a41c86d973d4d7 # v2.68.1
uses: taiki-e/install-action@a37010ded18ff788be4440302bd6830b1ae50d8b # v2.68.25
with:
tool: git-cliff

Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:
- name: Commit updated files
run: |
git add package.json
git commit -m 'chore(release): prepare ${TAG_VERSION}'
git commit -m "chore(release): prepare ${TAG_VERSION}"
git push

- name: Create git tag
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs-link-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
persist-credentials: false

- name: Run Lychee link checker
uses: lycheeverse/lychee-action@a8c4c7cb88f0c7386610c35eb25108e448569cb0 # v2.7.0
uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2.8.0
with:
fail: false
args: >-
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/helm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
uses: oras-project/setup-oras@22ce207df3b08e061f537244349aac6ae1d214f6 # v1.2.4

- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ghcr.io
username: ${{ github.actor }}
Expand Down Expand Up @@ -105,7 +105,7 @@ jobs:
uses: oras-project/setup-oras@22ce207df3b08e061f537244349aac6ae1d214f6 # v1.2.4

- name: Install Cosign
uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4.0.0
uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 # v4.1.0

- name: Downloads artifacts
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
Expand All @@ -114,7 +114,7 @@ jobs:
path: .cr-release-packages/

- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ghcr.io
username: ${{ github.actor }}
Expand Down Expand Up @@ -157,7 +157,7 @@ jobs:
persist-credentials: false

- name: Install Cosign
uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4.0.0
uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 # v4.1.0

- name: Downloads artifacts
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
Expand All @@ -166,7 +166,7 @@ jobs:
path: .cr-release-packages/

- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ghcr.io
username: ${{ github.actor }}
Expand Down
Loading
Loading