3975 Commits

Author SHA1 Message Date
Deluan
b7bb44cc7e
fix(server): race condition when updating artist/album from external sources
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
16f2f849e5
feat(server): get artist images from Last.fm
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
df0ba725c1
feat(server): enable "Report Real Path" by default
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan Quintão
6959412840
fix(ui): PWA not updating properly in new Vite config (#3493)
* fix: pwa not updating. use the custom code we had before

Signed-off-by: Deluan <deluan@navidrome.org>

* fix: docker build

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
f6de01f5f1
chore(deps): bump JS dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
0a03b57d22
chore(deps): bump Go dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Kursat Aktas
89f7429f64
feat: add Navidrome Guru on Gurubase.io (#3491)
Signed-off-by: Kursat Aktas <kursat.ce@gmail.com>
2026-01-02 20:41:56 +00:00
Deluan
361e5736e6
chore: update sanitize with updated diacritics
See https://github.com/navidrome/navidrome/issues/255#issuecomment-2488595427

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
f7a0484874
fix: pre-cache square images, or else they are not useful for the Album Grid
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
0744038ead
refactor: when resizing, don't buffer the original image "just in case"
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
fd85b458ac
refactor: remove unnecessary intermediate buffer for ffmpeg image extraction
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
75263e5b8f
refactor: reduce GC pressure by pre-allocating slices
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
67d4982632
revert: separation of write and read DBs
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:56 +00:00
Deluan
17755b7676
refactor: better implementation of newRefreshQueue.
- use pointer references in channel
 - actually exits when context is canceled

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:55 +00:00
Deluan
4825597116
refactor: change toSQL to use ReplaceAllStringFunc, to cause less static allocations
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:55 +00:00
Deluan
9e94cfcffc
refactor: load translations with sync.OnceValues
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:55 +00:00
Deluan
57854aab13
chore(deps): bump JS dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:55 +00:00
Deluan
83de77360d
chore(deps): bump Go dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:53 +00:00
Deluan Quintão
202b64ce9e
feat: cache login background images (#3462)
* feat: use direct links to unsplash for background images

Signed-off-by: Deluan <deluan@navidrome.org>

* feat: cache images from unsplash

Signed-off-by: Deluan <deluan@navidrome.org>

* refactor: use cache.HTTPClient to reduce complexity

Signed-off-by: Deluan <deluan@navidrome.org>

* refactor: remove magic numbers

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:22 +00:00
Deluan Quintão
54c3b8d14b
fix: forcing transcoding when client does not specify transcoding options (#3455)
* fix: wip

Signed-off-by: Deluan <deluan@navidrome.org>

* fix: revert #3227

It is not respecting the server configured transcoding for the player

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:22 +00:00
Deluan
53541a6d4a
chore(deps): bump JS dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:22 +00:00
Deluan
af86a590d8
chore(deps): bump Go dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:19 +00:00
Deluan
394e07bbd3
chore(deps): bump js dependencies 2026-01-02 20:41:04 +00:00
Deluan
de18d117a9
chore(deps): bump go dependencies 2026-01-02 20:41:04 +00:00
Deluan Quintão
dd94c6689b
fix(server): try to find proper embedded front cover - only for vorbis comments for now (#3348)
* fix(artwork): get the first image from vorbis comments, not the last. fixes #3254

This uses a fork for now.

* fix(artwork): prioritize getting embedded types that are listed as "front" covers

* fix: cleanup
2026-01-02 20:41:04 +00:00
Deluan Quintão
50ad8bb8e6
fix(server): fix case-insensitive sort order and add indexes to improve performance (#3425)
* refactor(server): better sort mappings

* refactor(server): simplify GetIndex

* fix: recreate tables and indexes using proper collation

Also add tests to ensure proper collation

* chore: remove unused method

* fix: sort expressions

* fix: lint errors

* fix: cleanup
2026-01-02 20:41:04 +00:00
Kendall Garner
a48bc207db
build: add packages for deb and rpm to release (#3202)
* support packing deb/rpm/archlinux

* .-.

* initial test

* fix postinstall, remove execstop

* bash -> sh, create toml manually if it doesn't exist (thanks debian)

* don't forget that newline

* postrm

* comments, contrib -> packaging/linux

* contrib > packaging in .goreleaser

* actually add toml

* openrc/sysv templates

* add apk. nothing else yet

* wait, we have a ntive uninstall

* fix: merge errors, move packaging to release

* chore: remove old goreleaser conf

* ci: remove `release` dependency on `docker push`

* ci: fix release version

* ci: upload packages

* ci: try to fix json file list

* ci: replace the json file list with a txt artifact

* postremove -> preremove, skip install/remove error

* actually do preremove

* better preremove

* ci: fix

* ci: fix?

* ci: clean-up

* ci: try to change labels and filenames

* ci: fix?

* ci: fix?

* ci: add `make package` target

* ci: make labels more readable

hope it doesn't break the pipeline again

* build: remove alpine and archlinux packages, for now.

---------

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:04 +00:00
Deluan Quintão
63b623a357
build(netgo): make sure the project is always compiled with netgo build tag (#3428)
* build(netgo): make sure the project is always compiled with `netgo` build tag

* docs(netgo): better comments
2026-01-02 20:41:04 +00:00
dependabot[bot]
e30b700d40
chore(deps-dev): bump eslint-plugin-jsx-a11y in /ui (#3416)
Bumps [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) from 6.10.0 to 6.10.1.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.10.0...v6.10.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsx-a11y
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 20:41:04 +00:00
dependabot[bot]
ecc5b54ef5
chore(deps-dev): bump eslint-plugin-react-refresh in /ui (#3419)
Bumps [eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) from 0.4.12 to 0.4.13.
- [Release notes](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/releases)
- [Changelog](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.4.12...v0.4.13)

---
updated-dependencies:
- dependency-name: eslint-plugin-react-refresh
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 20:41:04 +00:00
dependabot[bot]
c992a2df26
chore(deps-dev): bump @testing-library/jest-dom in /ui (#3418)
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.6.1 to 6.6.2.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.6.1...v6.6.2)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 20:41:04 +00:00
dependabot[bot]
a71cad5081
chore(deps-dev): bump @types/node from 22.7.6 to 22.7.7 in /ui (#3417)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.7.6 to 22.7.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 20:41:04 +00:00
dependabot[bot]
382d1fcf69
chore(deps-dev): bump @vitejs/plugin-react from 4.3.2 to 4.3.3 in /ui (#3415)
Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/v4.3.3/packages/plugin-react)

---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 20:41:04 +00:00
Deluan
2838d1552c
ci: ignore refactor commits in release notes 2026-01-02 20:41:04 +00:00
Deluan Quintão
e4c12c8739
refactor: small improvements and clean up (#3423)
* refactor: replace custom map functions with slice.Map

* refactor: extract StringerValue function

* refactor: removed unnecessary if

* chore: removed invalid comment

* refactor: replace more map functions

* chore: fix FFmpeg typo
2026-01-02 20:41:04 +00:00
Kendall Garner
8523c74d71
feat(subsonic): add MusicBrainz ID and Sort Name to getArtists 2026-01-02 20:41:03 +00:00
Rob Emery
56be97b9ce
feat(build): MSI installer improvements (#3376)
* feat(build): add a make target to build a msi installer locally

* Testing wrapping the executable in cmd

* build(ci): build msis in parallel

* feat(server): add LogFile config option

* Revert "Testing wrapping the executable in cmd"

This reverts commit be29592254cb903fd4904f2f50d4d1a860795d33.

* Adding --log-file for service executable

* feat(ini): wip

* feat(ini): parse nested ini section

* fix(conf): fix fatal error messages

* Now navidrome supports INI, we can use the built-in msi ini system
and not require the VBScript to convert it into toml

* File needs to be called .ini to be parsed as an INI and correct filename
needs to be passed to the service

* fix(msi): build msi locally

* fix(msi): pipeline

* fix(msi): pipeline

* fix(msi): pipeline

* fix(msi): pipeline

* fix(msi): pipeline

* fix(msi): Makefile

* fix(msi): more clean up

* fix(log): convert LF to CRLF on Windows

* fix(msi): config filename should be case-insensitive

* fix(msi): make it a little more idiomatic

* Including the latest windows release of ffmpeg into the msi
as built by https://www.gyan.dev/ffmpeg/builds/ (linked
to on the official ffmpeg source)

* This should version independent

* Need bash expansion for the * to work

* This will run twice, once for x86 and once for x64, I'll make it cache
the executable for now as it'll be quicker

* Silencing wget

* Add ffmpeg path to the config so Navidrome knows where to find it

* refactor: download ffmpeg from our repository

* When going back from the "Are you ready to install?" it should go back to the
Settings dialogue that you just came from

* fix: comments

---------

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:41:03 +00:00
Deluan
e758337896
feat(subsonic): getOpenSubsonicExtensions is now public 2026-01-02 20:41:03 +00:00
Deluan
be017614c5
fix(server): allow extra spaces in transcoding commands 2026-01-02 20:41:03 +00:00
Deluan
a581e3e0c5
refactor(server): remove ffmpeg unused code 2026-01-02 20:41:03 +00:00
Caio Cotts
0d00f29104
fix(playlists): make the m3u parser case-insensitive again #3410 2026-01-02 20:41:03 +00:00
Deluan
b1893ac7c6
fix(server): FFmpegPath can contain spaces 2026-01-02 20:41:03 +00:00
Deluan
44b2164659
perf(server): add index for sort tags.
Improves search performance when searching with PreferSortTags=true
2026-01-02 20:41:03 +00:00
Deluan
df8f13f593
fix: use docker buildx, as required by Linux 2026-01-02 20:41:03 +00:00
Deluan Quintão
39b668eb8e
fix(ui): update translations from POEditor (#3349)
Co-authored-by: deluan <331353+deluan@users.noreply.github.com>
2026-01-02 20:41:03 +00:00
Ivan Pešić
6dbcd35cf9
fix(ui): update Serbian translation (#3361) 2026-01-02 20:41:03 +00:00
jan666
a9657187ad
build: fix build on FreeBSD (#3403)
- vite: use rollup/wasm-node
- use vitejs/plugin-react instead of plugin-react-swc
2026-01-02 20:41:03 +00:00
Deluan Quintão
41d22e0aea
fix(ui): service worker does not load new version of ui (#3402)
* fix(pwa): wip

* fix(pwa): wip
2026-01-02 20:41:03 +00:00
Deluan
cc77274cf1
chore(deps): bump peter-evans/create-pull-request from 6 to 7 2026-01-02 20:41:03 +00:00
Deluan Quintão
7980ea6909
feat(subsonic): support OS clearing play queue (#3399) 2026-01-02 20:41:02 +00:00