99 Commits

Author SHA1 Message Date
Deluan
04abdf4509
Initial work on Shares 2026-01-02 20:21:58 +00:00
Kendall Garner
3242ae96b7
Get album info (when available) from Last.fm, add getAlbumInfo endpoint (#2061)
* lastfm album.getInfo, getAlbuminfo(2) endpoints

* ... for description and reduce not found log level

* address first comments

* return all images

* Update migration timestamp

* Handle a few edge cases

* Add CoverArtPriority option to retrieve albumart from external sources

* Make agents methods more descriptive

* Use Last.fm name consistently

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:21:18 +00:00
Kendall Garner
2fb60b92ca
ReplayGain support + audio normalization (web player) (#1988)
* ReplayGain support

- extract ReplayGain tags from files, expose via native api
- use metadata to normalize audio in web player

* make pre-push happy

* remove unnecessary prints

* remove another unnecessary print

* add tooltips, see metadata

* address comments, use settings instead

* remove console.log

* use better language for gain modes
2026-01-02 20:21:18 +00:00
Kendall Garner
2cab4a4352
Add Internet Radio support (#2063)
* add internet radio support

* Add dynamic sidebar icon to Radios

* Fix typos

* Make URL suffix consistent

* Fix typo

* address feedback

* Don't need to preload when playing Internet Radios

* Reorder migration, or else it won't be applied

* Make Radio list view responsive

Also added filter by name, removed RadioActions and RadioContextMenu, and added a default radio icon, in case of favicon is not available.

* Simplify StreamField usage

* fix button, hide progress on mobile

* use js styles over index.css

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:21:17 +00:00
Deluan
0399741cd9
"Touch" playlists to force some clients to reload cover art 2026-01-02 20:21:17 +00:00
Deluan
25d61c0456
Find artist.* image in Artist folder 2026-01-02 20:21:16 +00:00
Deluan
4bd0f4400e
Use custom sanitize package, fix #2070 2026-01-02 20:20:21 +00:00
Deluan
e44a9574b9
Remove CoverArtID, fix tests 2026-01-02 20:20:17 +00:00
Deluan
d201cc4c79
Add all images found for each album in the database 2026-01-02 20:20:17 +00:00
Deluan
e8d8fdd8eb
Remove old refresh code 2026-01-02 20:20:17 +00:00
Deluan
e0bfb22007
Rename log.LevelCritical to log.LevelFatal 2026-01-02 20:20:16 +00:00
Deluan
34bd983ef5
Shutdown gracefully, close DB connection 2026-01-02 20:16:00 +00:00
Zane van Iperen
82c56e1115
Capture "musicbrainz_releasetrackid" tag (#1827)
* db/migration: typo fix

* model: add MbzReleaseTrackID field

* scanner: capture the musicbrainz_releasetrackid tag
2026-01-02 20:15:58 +00:00
Deluan
4bfceb3710
Simplify Singleton usage by leveraging Go 1.18's generics 2026-01-02 20:14:22 +00:00
Deluan
90bc1981d8
Upgrade Ginkgo to V2 2026-01-02 20:14:21 +00:00
Deluan
4fb2b39d61
Remove non-album artist_ids from the DB 2026-01-02 20:09:31 +00:00
Deluan
fe6eb1a795
Fix migration to support null values 2026-01-02 20:09:31 +00:00
Deluan
dc94ee22ed
Add a new index for album, to optimize the getAlbumList?type=alphabeticalByArtist Subsonic query 2026-01-02 20:09:30 +00:00
Deluan
23fa956d6b
Add owner_id to playlist 2026-01-02 20:09:02 +00:00
Deluan
bb29e2bdd6
Fix double escaped lyrics and comments 2026-01-02 20:09:01 +00:00
Deluan
dc70dc99c8
Better way to match top songs from external sources (Last.fm) 2026-01-02 20:09:00 +00:00
Deluan
d8adf68ef5
Initial drafts for Smart Playlists 2026-01-02 20:08:58 +00:00
Miguel A. Arroyo
e9a7d0c5a2
feat: Adds Audio Channel Metadata - #1036 2026-01-02 20:08:00 +00:00
Deluan
6678a4185a
Inject DB into DataStore, instead of hardcode the dependency 2026-01-02 20:06:11 +00:00
Deluan
a7b9051f77
Force full rescan when adding multi-genres 2026-01-02 20:06:08 +00:00
Deluan
52510a55c4
Add genre tables, read multiple-genres from tags 2026-01-02 20:06:08 +00:00
Deluan
6d46689622
Implement Scrobble buffering/retrying 2026-01-02 20:05:07 +00:00
Deluan
4afceda999
Add referential integrity to remove user's props when user is deleted 2026-01-02 20:05:06 +00:00
Deluan
4fd29b15ff
Suppress logs of successful DB migrations applied when running for the first time 2026-01-02 20:05:05 +00:00
Deluan
a52a88d1d7
Move user properties (like session keys) to their own table 2026-01-02 20:05:05 +00:00
Deluan
1ac077cf22
Fix GetNowPlaying endpoint showing only the last play 2026-01-02 20:04:23 +00:00
Deluan Quintão
5590fa3550
Encrypt passwords in DB (#1187)
* Encode/Encrypt passwords in DB

* Only decrypts passwords if it is necessary

* Add tests for encryption functions
2026-01-02 20:04:16 +00:00
Yash Jipkate
d910beea75
Add Native Sharing REST API (#1150)
* Initial draft - UNTESTED

* changes to Save() and Update()

* apply col filter and limit nanoid

* remove columns to not update
2026-01-02 19:32:11 +00:00
Yash Jipkate
3d8ee76b40
Create share table and repository. (#930)
* Add share table and repository

* Add datastore mock

* Try fixing indent

* Try fixing indent - 2

* Try fixing indent - 3

* Implement rest.Repository and rest.Persistance

* Renew date

* Better error handling

* Improve field name

* Fix json name conventionally
2026-01-02 19:31:52 +00:00
Deluan
afa25fd212
Integrate goose log with our own log system 2026-01-02 19:31:09 +00:00
Brian Schrameck
4264a5c6ef
BPM metadata enhancement (#1087)
* BPM metadata enhancement

Related to #1036.

Adds BPM to the stored metadata about MediaFiles.

Displays BPM in the following locations:
- Listing songs in the song list (desktop, sortable)
- Listing songs in playlists (desktop, sortable)
- Listing songs in albums (desktop)
- Expanding song details

When listing, shows a blank field if no BPM is present. When showing song details, shows a question mark.

Updates test MP3 file to have BPM tag. Updated test to ensure tag is read correctly.

Updated localization files. Most languages just use "BPM" as discovered during research on Wikipedia. However, a couple use some different nomenclature. Spanish uses PPM and Japanese uses M.M.

* Enhances support for BPM metadata extraction

- Supports reading floating point BPM (still storing it as an integer) and FFmpeg as the extractor
- Replaces existing .ogg test file with one that shouldn't fail randomly
- Adds supporting tests for both FFmpeg and TagLib

* Addresses various issues with PR #1087.

- Adds index for BPM. Removes drop column as it's not supported by SQLite (duh).
- Removes localizations for BPM as those will be done in POEditor.
- Moves BPM before Comment in Song Details and removes BPM altogether if it's empty.
- Omits empty BPM in JSON responses, eliminating need for FunctionField.
- Fixes copy/paste error in ffmpeg_test.
2026-01-02 19:26:43 +00:00
caiocotts
bc4cfba8e6
Better handling of album comments (#1013)
* Change album comment behaviour

* Don't check first item

* Fix previously imported album comments.

* Remove song comments if album comment is present
2026-01-02 19:26:40 +00:00
Deluan
485afb5986
Fix migration error caused by #868 2026-01-02 19:26:38 +00:00
Deluan
75659fb193
Add timestamp indexes 2026-01-02 19:22:07 +00:00
Deluan
20f56313a8
Rename migration package to migrations 2026-01-02 19:22:07 +00:00
Deluan
10cf2372f8
Move project to Navidrome GitHub organization 2026-01-02 19:20:16 +00:00
Deluan
749edc4661
Use new simplified uuid.NewString() syntax 2026-01-02 19:20:14 +00:00
Deluan
f8d991cc80
Add denormalized list of artist_ids to album, to speed-up artist's albums queries
This will be removed once we have a proper many-to-many relationship between album and artist
2026-01-02 19:20:11 +00:00
Deluan
f70becc0d3
Add option for player to report real paths in Subsonic API. Closes #625 2026-01-02 19:20:09 +00:00
Deluan
750b665705
Update sizes with SQL, instead of a full rescan 2026-01-02 19:20:05 +00:00
Deluan
417fcb37e5
Import comments and lyrics 2026-01-02 19:19:34 +00:00
Deluan
62f7f184cc
Add artistImageUrl available in getArtists endpoint
Also cache artist info in the DB for 1 hour
2026-01-02 19:18:58 +00:00
Deluan
311b590462
Remove invalid migration 2026-01-02 19:18:25 +00:00
Deluan
04fe3aff4a
Add simple cache warmer, disabled by default 2026-01-02 19:18:25 +00:00
Deluan
075c28d2e5 Fix performance and precision of TopSongs 2020-10-21 14:07:01 -04:00