Skip to content

Commit ce2ebc4

Browse files
committed
chore(release): v0.44.0
1 parent b0faeb4 commit ce2ebc4

5 files changed

Lines changed: 45 additions & 23 deletions

File tree

CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,28 @@
22

33
All notable user-facing changes are documented here.
44

5+
## v0.44.0 - 2026-04-26
6+
7+
UX release. Rejecting a recommendation now opens a structured picker with six fixed reasons (already own, wrong style, not interested, tried it didn't like it, maybe later, other) plus a "Don't show again" checkbox that promotes the rejection to a permanent per-user blacklist. Settings gets a new Blocked tab to view, search, and unblock entries. The new blocklist filters the pipeline, subscriptions, and quick-discover independent of the existing rejection cooldown, so unblocking does not bypass the cooldown.
8+
9+
### Added
10+
11+
- Permanent per-user artist blacklist (`artist_blocks` table) keyed on `(user_id, artist_id)` with cascade FKs and unique upsert semantics
12+
- Structured rejection reasons (6 fixed + freeform "Other") captured via a bottom-sheet/modal picker on the existing reject action
13+
- `Settings > Blocked` tab with debounced name search, cursor pagination, and unblock-with-undo toast
14+
- `POST /api/v1/artist-blocks`, `GET /api/v1/artist-blocks`, `DELETE /api/v1/artist-blocks/:artistId` routes (auth required, scoped to the calling user)
15+
- `rejection_reason` and `rejection_reason_text` columns on `recommendations` so the reason persists with the rejection record
16+
- Pipeline filter, subscription runner, and quick-discover all honour the blocklist as an independent layer above the rejection cooldown
17+
- 28 new i18n keys translated across all 15 shipped locales
18+
- Backup/restore round-trips include `artist_blocks`
19+
- Server-side Zod validation enforces UI invariants (`not_right_now` is incompatible with permanent; `reasonText` only valid when `reason='other'`)
20+
21+
### Changed
22+
23+
- `POST /api/v1/recommendations/:id/status` with `status: 'rejected'` now accepts optional `reason`, `reasonText`, and `permanent` fields; legacy callers that omit them continue to work unchanged
24+
- `StoreDb` interface gains `getBlockedMbids(userId)`; production wiring and all test mocks updated
25+
- New `Digarr` signature theme added to the theme picker (cool slate-navy + muted moss + warm-dim crimson)
26+
527
## v0.42.0 - 2026-04-20
628

729
Metadata enrichment release. TheAudioDB becomes the primary artist-image source ahead of the existing Lidarr/SkyHook + fanart.tv + musicinfo.pro chain, and recommendation cards now carry a short Wikidata-sourced bio plus external-link pills (Wikipedia, official site, Discogs, MusicBrainz).

deploy/helm/digarr/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: v2
22
name: digarr
33
type: application
44
description: Music discovery and recommendation pipeline for Lidarr, Plex, Jellyfin, Emby, and Navidrome.
5-
version: 0.43.0
6-
appVersion: "0.43.0"
5+
version: 0.44.0
6+
appVersion: "0.44.0"
77
kubeVersion: ">=1.29.0"
88
sources:
99
- https://github.com/iuliandita/digarr

deploy/helm/digarr/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ replicaCount: 1
22

33
image:
44
repository: ghcr.io/iuliandita/digarr
5-
tag: "0.43.0"
5+
tag: "0.44.0"
66
# Pin the digest after publishing the release image. The digest comes from the published registry artifact.
77
digest: "sha256:cdb25500e5646ca50635f0b08797a31b306bf1607e16deafd9ed4ae12104b51b"
88
pullPolicy: Always

deploy/k8s/rendered.yaml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SOURCE OF TRUTH: deploy/helm/digarr
22
# GENERATED BY: scripts/k8s-sync.sh (do not edit by hand)
3-
# Chart version: 0.43.0
3+
# Chart version: 0.44.0
44
#
55
# This file is a snapshot of `helm template` with default values plus
66
# the minimum required overrides. Real deployments should install the
@@ -13,10 +13,10 @@ kind: NetworkPolicy
1313
metadata:
1414
name: digarr
1515
labels:
16-
helm.sh/chart: digarr-0.43.0
16+
helm.sh/chart: digarr-0.44.0
1717
app.kubernetes.io/name: digarr
1818
app.kubernetes.io/instance: digarr
19-
app.kubernetes.io/version: "0.43.0"
19+
app.kubernetes.io/version: "0.44.0"
2020
app.kubernetes.io/managed-by: Helm
2121
spec:
2222
podSelector:
@@ -80,10 +80,10 @@ kind: ServiceAccount
8080
metadata:
8181
name: digarr
8282
labels:
83-
helm.sh/chart: digarr-0.43.0
83+
helm.sh/chart: digarr-0.44.0
8484
app.kubernetes.io/name: digarr
8585
app.kubernetes.io/instance: digarr
86-
app.kubernetes.io/version: "0.43.0"
86+
app.kubernetes.io/version: "0.44.0"
8787
app.kubernetes.io/managed-by: Helm
8888
automountServiceAccountToken: false
8989
---
@@ -93,10 +93,10 @@ kind: Secret
9393
metadata:
9494
name: digarr-db
9595
labels:
96-
helm.sh/chart: digarr-0.43.0
96+
helm.sh/chart: digarr-0.44.0
9797
app.kubernetes.io/name: digarr
9898
app.kubernetes.io/instance: digarr
99-
app.kubernetes.io/version: "0.43.0"
99+
app.kubernetes.io/version: "0.44.0"
100100
app.kubernetes.io/managed-by: Helm
101101
type: Opaque
102102
stringData:
@@ -109,10 +109,10 @@ kind: ConfigMap
109109
metadata:
110110
name: digarr
111111
labels:
112-
helm.sh/chart: digarr-0.43.0
112+
helm.sh/chart: digarr-0.44.0
113113
app.kubernetes.io/name: digarr
114114
app.kubernetes.io/instance: digarr
115-
app.kubernetes.io/version: "0.43.0"
115+
app.kubernetes.io/version: "0.44.0"
116116
app.kubernetes.io/managed-by: Helm
117117
data:
118118
PORT: "3000"
@@ -124,10 +124,10 @@ kind: Service
124124
metadata:
125125
name: digarr-postgresql
126126
labels:
127-
helm.sh/chart: digarr-0.43.0
127+
helm.sh/chart: digarr-0.44.0
128128
app.kubernetes.io/name: digarr
129129
app.kubernetes.io/instance: digarr
130-
app.kubernetes.io/version: "0.43.0"
130+
app.kubernetes.io/version: "0.44.0"
131131
app.kubernetes.io/managed-by: Helm
132132
app.kubernetes.io/component: database
133133
spec:
@@ -148,10 +148,10 @@ kind: Service
148148
metadata:
149149
name: digarr
150150
labels:
151-
helm.sh/chart: digarr-0.43.0
151+
helm.sh/chart: digarr-0.44.0
152152
app.kubernetes.io/name: digarr
153153
app.kubernetes.io/instance: digarr
154-
app.kubernetes.io/version: "0.43.0"
154+
app.kubernetes.io/version: "0.44.0"
155155
app.kubernetes.io/managed-by: Helm
156156
spec:
157157
type: ClusterIP
@@ -170,10 +170,10 @@ kind: Deployment
170170
metadata:
171171
name: digarr
172172
labels:
173-
helm.sh/chart: digarr-0.43.0
173+
helm.sh/chart: digarr-0.44.0
174174
app.kubernetes.io/name: digarr
175175
app.kubernetes.io/instance: digarr
176-
app.kubernetes.io/version: "0.43.0"
176+
app.kubernetes.io/version: "0.44.0"
177177
app.kubernetes.io/managed-by: Helm
178178
spec:
179179
replicas: 1
@@ -192,8 +192,8 @@ spec:
192192
app.kubernetes.io/name: digarr
193193
app.kubernetes.io/instance: digarr
194194
annotations:
195-
checksum/config: 00fdbc63e3d2c5aac7561f5dea254e2ecbaca081de748b6508c1d379bd03429b
196-
checksum/secret: 99832603ac396f8bb8dd691d8d89155854004e680f686af5a759b7eb35954403
195+
checksum/config: d1f49d7129a52c6e20a20a47284d6fc391ec6ce726c4370d79b49adb7d970d4f
196+
checksum/secret: 736e5aa5968b27b979e543888272d69df7a860623d4dbf452c4ee6150f61e9bf
197197
spec:
198198
serviceAccountName: digarr
199199
automountServiceAccountToken: false
@@ -279,10 +279,10 @@ kind: StatefulSet
279279
metadata:
280280
name: digarr-postgresql
281281
labels:
282-
helm.sh/chart: digarr-0.43.0
282+
helm.sh/chart: digarr-0.44.0
283283
app.kubernetes.io/name: digarr
284284
app.kubernetes.io/instance: digarr
285-
app.kubernetes.io/version: "0.43.0"
285+
app.kubernetes.io/version: "0.44.0"
286286
app.kubernetes.io/managed-by: Helm
287287
app.kubernetes.io/component: database
288288
spec:

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "digarr",
3-
"version": "0.43.0",
3+
"version": "0.44.0",
44
"type": "module",
55
"private": true,
66
"scripts": {

0 commit comments

Comments
 (0)