155 Commits

Author SHA1 Message Date
Deluan
69d549d0d0
Add "random" sort option for Smart Playlists 2026-01-02 20:11:58 +00:00
Deluan
08f56cc7c8
Fix potential SQL injection in Smart Playlists 2026-01-02 20:11:58 +00:00
Deluan
e632893e62
Fix logging smart playlist's song count 2026-01-02 20:11:39 +00:00
Deluan
fa51e97a0f
Fix values from annotation table cannot be compared to 0
Solves this issue: https://github.com/navidrome/navidrome/issues/1417#issuecomment-974052454
2026-01-02 20:11:39 +00:00
BIKI DAS
65948a1ccf
Combined multiple appends into a single one (#1464) 2026-01-02 20:09:31 +00:00
Deluan
9d40694ae6
Fix playlist cannot be empty via Subsonic API 2026-01-02 20:09:31 +00:00
Deluan
2b15f4a4ba
Optimize AlbumRepository.GetAll and add a GetAllWithoutGenres method specifically for Subsonic API, where multiple-genres are not required 2026-01-02 20:09:30 +00:00
Deluan
294e200399
Fix dateLoved in criteria. Now log invalid field names in criteria 2026-01-02 20:09:02 +00:00
Deluan
23fa956d6b
Add owner_id to playlist 2026-01-02 20:09:02 +00:00
Deluan
4545cb89c3
Optimize queries by path, should speed up the scanner a bit 2026-01-02 20:09:02 +00:00
Deluan
507223ea40
Load playlist track genres 2026-01-02 20:09:01 +00:00
Deluan
83380f2de2
Fix/Optimized Playlist tracks deletion 2026-01-02 20:09:01 +00:00
Deluan
9ca4fb538b
Optimize playlist updates 2026-01-02 20:09:00 +00:00
Deluan
2c587d1fe6
Add dateLoved Criteria field 2026-01-02 20:09:00 +00:00
Deluan
1475597c16
Fix Genre field and Contains/NotContains/StartsWith/EndsWith in Criteria (Smart Playlists) 2026-01-02 20:09:00 +00:00
Deluan
dc70dc99c8
Better way to match top songs from external sources (Last.fm) 2026-01-02 20:09:00 +00:00
Deluan
0e77a73d3f
Rename hasCoverArt field in criteria 2026-01-02 20:08:59 +00:00
Deluan
557a78f192
Removed unused code 2026-01-02 20:08:59 +00:00
Deluan
674aab0ce5
Don't import invalid .nsp files 2026-01-02 20:08:59 +00:00
Deluan
1ccae7b21c
Use new Criteria and remove SmartPlaylist struct 2026-01-02 20:08:59 +00:00
Deluan
c7f3e20ffb
New Criteria API 2026-01-02 20:08:59 +00:00
Deluan
56fb82a29a
First version of SmartPlaylists being generated on demand 2026-01-02 20:08:58 +00:00
Deluan
874926481b
Add methods to Playlist model
Also, don't load genres for Playlists tracks (not necessary for now)
2026-01-02 20:08:58 +00:00
Deluan
2939c96bd8
Reduce number of queries for some playlists operations.
Also allow admins to update/delete playlists from other users in the Subsonic API. Closes #1366
2026-01-02 20:08:58 +00:00
Deluan
898e01013c
Load SmartPlaylists rules from DB 2026-01-02 20:08:58 +00:00
Deluan
d8adf68ef5
Initial drafts for Smart Playlists 2026-01-02 20:08:58 +00:00
Deluan
6740708313
Add songs to playlists with drag and drop 2026-01-02 20:08:31 +00:00
Miguel A. Arroyo
e9a7d0c5a2
feat: Adds Audio Channel Metadata - #1036 2026-01-02 20:08:00 +00:00
Deluan
44ea2c9c34
Remove unused AnnotatedModel interface 2026-01-02 20:06:11 +00:00
Deluan
18f6d55acb
Use structs lib to map models to DB. Fix #1266 2026-01-02 20:06:11 +00:00
Deluan
8d7cd365cf
Optimize GetAll genres query 2026-01-02 20:06:09 +00:00
Deluan
bc266f8fad
Add Genre filters to UI 2026-01-02 20:06:08 +00:00
Deluan
f7db423e9f
Add multiple genres to Artists 2026-01-02 20:06:08 +00:00
Deluan
15b3994d13
Remove unnecessary repositories methods 2026-01-02 20:06:08 +00:00
Deluan
5de062da03
Add multiple genres to Albums 2026-01-02 20:06:08 +00:00
Deluan
1e9e8edc49
Add multiple genres to MediaFile 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
6a254c8b67
Pass userId explicitly to UserPropsRepository methods 2026-01-02 20:05:06 +00:00
Deluan
006b8d0d4a
Add option to disable external scrobbling per player 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
f468522c72
Implement Last.FM Desktop Auth flow endpoints 2026-01-02 20:05:04 +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
Deluan
8e32b56ea0
Only send events to clients who need it
- User events (star, rating, plays) only sent to same user
- Don't send to the client (browser window) that originated the event
2026-01-02 20:02:35 +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
Deluan
6898f798de
Omit empty fields from Native API responses 2026-01-02 19:31:52 +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
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
Deluan
d7c7df2727
Require user to provide current password to be able to change it
Admins can change other users' password without providing the current one, but not when changing their own
2026-01-02 19:26:42 +00:00