442 Commits

Author SHA1 Message Date
Deluan
85af9edc88
Ignore #snapshot folders when scanning. Fixes #3257 2026-01-02 20:39:41 +00:00
Deluan Quintão
e766adaa03
Upgrade TagLib 2.0.2, GoReleaser 2.2.0 (#3217)
* Upgrade ci-goreleaser

* Fix tests

* Fix taglib lib path in macOS
2026-01-02 20:39:13 +00:00
Deluan Quintão
819d0afd03
Upgrade Go to 1.23 (#3190)
* Upgrade to Golang 1.23rc1

* Fix imports

* Go 1.23 final version

* Fix lint compatibility with ci-goreleaser
2026-01-02 20:38:44 +00:00
Deluan
843d48f448
Upgrade to ttlcache/v3 2026-01-02 20:37:15 +00:00
Deluan
10ab9cfb55
Wrap ttlcache in our own SimpleCache implementation 2026-01-02 20:37:15 +00:00
kartikynwa
fc1a5cb908
Add R128_{TRACK,ALBUM}_GAIN support to the scanner (#3072)
* Add R128 gain tags support to the scanner

* Add R128 test to metadata_internal_test.go

* Pass explicit tag names to getGainValue function
2026-01-02 20:37:00 +00:00
Deluan
38a219648d
Refactor string utilities into its own package str 2026-01-02 20:36:59 +00:00
Rob Emery
ef14eb74f9
Fix memory leak in CachedGenreRepository (#3031)
that the scanner was run, the ttlcache was also created each time.
This caused (under testing with 166 genres in the database) the
memory consumed by navidrome to 101.18MB over approx 3 days; 96%
of which is in instances of this cache. Swapping to a singleton
has reduced this to down to ~ 2.6MB

Co-authored-by: Rob Emery <git@mintsoft.net>
2026-01-02 20:36:57 +00:00
Deluan
42812165a7
Fix race condition 2026-01-02 20:36:57 +00:00
Deluan
ffbc1cebd4
Associate main entities with library 2026-01-02 20:36:57 +00:00
Deluan
b0f6a395a8
Rename MediaFolder to Library 2026-01-02 20:36:57 +00:00
Deluan
4007dd0560
Add sampleRate to the DB 2026-01-02 20:36:56 +00:00
Deluan
caa2126677
Read sampleRate from audio files 2026-01-02 20:36:56 +00:00
Deluan
5be6dfc54b
Clean up runNavidrome function 2026-01-02 20:36:55 +00:00
Deluan Quintão
9e9f72ae8a
Make sorting lists by name/title case-insensitive (#2993)
* Make sort by order_* fields case-insensitive.

* Sort internet radios by name case-insensitive
2026-01-02 20:36:55 +00:00
Deluan
6640509044
Make dependency injection more consistent 2026-01-02 20:36:55 +00:00
Deluan
02604f0cfb
Allow comments in the NSP file.
See comment https://github.com/navidrome/navidrome/issues/1417#issuecomment-2064731407
2026-01-02 20:35:03 +00:00
Deluan
d642d6f60f
Move TempFileName to utils 2026-01-02 20:33:14 +00:00
Deluan
1effc6a378
Run Test job in ci-goreleaser container 2026-01-02 20:33:14 +00:00
Deluan
58fe792d0d
Show taglib and ffmpeg versions in the log 2026-01-02 20:33:14 +00:00
Deluan
116f5d02ff
Stop using deprecated TagLib method length 2026-01-02 20:33:14 +00:00
Deluan
a0bac6c068
Send Subsonic formatted response on marshalling errors 2026-01-02 20:33:14 +00:00
Deluan
a8a14370bd
Use new slices package from Go standard lib 2026-01-02 20:33:14 +00:00
Deluan
d7b7626488
Bump github.com/jellydator/ttlcache/v2 to v2.11.1 2026-01-02 20:33:14 +00:00
Deluan
89dadbfcb8
Bump golang.org/x/exp version 2026-01-02 20:33:00 +00:00
Deluan Quintão
cf3754e868
Upgrade to Go 1.22 and Node v20 (#2861)
* Remove workaround for missing `context.WithoutCancel` in Go 1.20

* Upgrade to Go 1.22

* Upgrade GitHub Actions

* Upgrade Node to v20
2026-01-02 20:33:00 +00:00
Deluan
9a54740bad
Handle "Infinity" values for ReplayGain. Fix #2862 2026-01-02 20:33:00 +00:00
Caio Cotts
b57ba9e232
Fix null values in DB (#2840)
* Fix album image_files being null.

* Fix small nitpick.

* Use ExecContext instead of Exec.

* Change more columns to not null and set default values.

* Remove columns that don't need to be changed from migration.

* Fix typo.

* Remove unnecessary select statements.

* Remove duplicate code.

* Do not apply changes to radio table.

* Do not apply changes full_text columns and respective indexes.

* Fix musicbrainz columns.

* Rename migration.

* Make ExternalInfoUpdatedAt nullable

* Make Share's timestamps nullable

---------

Co-authored-by: Deluan Quintão <deluan@navidrome.org>
2026-01-02 20:32:59 +00:00
Deluan
5e35aa6eb8
Don't add empty TIPL roles 2026-01-02 20:32:58 +00:00
Deluan
0d27160e22
Parse the ID3v2.4 TIPL frame 2026-01-02 20:32:58 +00:00
Deluan
27b9812e45
Import ID3 sort_* tags 2026-01-02 20:32:58 +00:00
Deluan
faed89622d
Fix ReplayGain values not being retrieved from DB 2026-01-02 20:32:37 +00:00
Kendall Garner
044c8c09ac
Add OS Lyrics extension (#2656)
* draft commit

* time to fight pipeline

* round 2 changes

* remove unnecessary line

* fight taglib. again

* make taglib work again???

* add id3 tags

* taglib 1.12 vs 1.13

* use int instead for windows

* store as json now

* add migration, more tests

* support repeated line, multiline

* fix ms and support .m, .mm, .mmm

* address some concerns, make cpp a bit safer

* separate responses from model

* remove [:]

* Add trace log

* Try to unblock pipeline

* Fix merge errors

* Fix SIGSEGV error (proper handling of empty frames)

* Add fallback artist/title to structured lyrics

* Rename conflicting named vars

* Fix tests

* Do we still need ffmpeg in the pipeline?

* Revert "Do we still need ffmpeg in the pipeline?"

Yes we do.

This reverts commit 87df7f6df79bccee83f48c4b7a8118a7636a5e66.

* Does this passes now, with a newer ffmpeg version?

* Revert "Does this passes now, with a newer ffmpeg version?"

No, it does not :(

This reverts commit 372eb4b0ae05d9ffe98078e9bc4e56a9b2921f32.

* My OCD made me do it :P

---------

Co-authored-by: Deluan Quintão <deluan@navidrome.org>
2026-01-02 20:32:37 +00:00
Deluan
5c36d42333
Add "inspect" command to CLI 2026-01-02 20:32:37 +00:00
Deluan
af32d79ffc
Discard duplicated tags 2026-01-02 20:32:37 +00:00
Andrew Katsikas
d562fce71b
Add TAK support (#2745)
* bug(consts/mime_types): tak-support - 2514

Add tak to mime_types audioFormats

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* bug(scanner): tak-support - 2514

Add tak test fixture file and add fixes for tag_scanner and walk_dir_tree tests

Signed-off-by: apkatsikas <apkatsikas@gmail.com>

* Remove comment

---------

Signed-off-by: apkatsikas <apkatsikas@gmail.com>
2026-01-02 20:32:37 +00:00
Deluan
0d18620030
Add log.IsGreaterOrEqualTo, that take into consideration path-scoped log levels 2026-01-02 20:32:37 +00:00
Deluan
309a8d39f4
Add more trace log to TagLib Wrapper 2026-01-02 20:32:37 +00:00
Deluan
88dcfd0f96
Name mapDates return values 2026-01-02 20:32:36 +00:00
Deluan
e307b0e96c
Better workaround for Go 1.20 missing context.WithoutCancel 2026-01-02 20:32:35 +00:00
Deluan
aca4ccbd0f
Temporary fix for scan context cancellation for Go 1.20 2026-01-02 20:32:35 +00:00
Deluan
b60ac35e4f
Don't cancel Scan on context cancellation 2026-01-02 20:32:35 +00:00
Deluan Quintão
274ad1f7d5
Replace beego/orm with dbx (#2693)
* Start migration to dbx package

* Fix annotations and bookmarks bindings

* Fix tests

* Fix more tests

* Remove remaining references to beego/orm

* Add PostScanner/PostMapper interfaces

* Fix importing SmartPlaylists

* Renaming

* More renaming

* Fix artist DB mapping

* Fix playlist updates

* Remove bookmarks at the end of the test

* Remove remaining `orm` struct tags

* Fix user timestamps DB access

* Fix smart playlist evaluated_at DB access

* Fix search3
2026-01-02 20:31:57 +00:00
caiocotts
04fdc61998
Fix ld warnings on taglib_wrapper. 2026-01-02 20:31:56 +00:00
Kendall Garner
59bdb0e09b
Parse more itunes keys, optimize taglib wrapper (#2680)
* parse more itunes keys

* Move special iTunes M4A logic to Go code

* Simplify ASF/WMA tags handling

* Simplify ASF/WMA tags handling even more, moving compilation logic to `metadata` normalizer

* Remove strdups from C++ code, `C.GoString` already duplicates the strings

* reduced set

* remove strdup

* Small nitpick

---------

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:31:56 +00:00
Deluan
062889a88a
Generalize BreakUp/RangByChunks functions 2026-01-02 20:31:30 +00:00
caiocotts
a6742e0249
Revert walk_dir_tree.go back to using the os package. 2026-01-02 20:31:11 +00:00
Kendall Garner
4745950eb9
Do not empty old artist metadata (#2423) 2026-01-02 20:29:59 +00:00
Kendall Garner
dd9c4d8e6e
Add more replaygain tests, fix wma (#2356)
* add more replaygain tests, fix wma

* Convert individual specs to a table spec

* Fix pipeline, by commenting incompatible tests

---------

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:29:59 +00:00
certuna
98cb9fe4d7
Small date mapping fix (#2584)
* Update mapping.go

fallback in the case there's no Date tagged but Original Date or Release Date are tagged

* Add tests

---------

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:29:59 +00:00