Deluan
547232e280
fix: update wasm build rule to include all Go files in the directory
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
7f055bcba2
docs(scheduler): clarify SchedulerCallback requirement for scheduling functions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
0c9cb6243b
refactor(scheduler): add Close method for resource cleanup on plugin unload
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
e93624b10b
refactor(scheduler): streamline scheduling logic and remove unused callback tracking
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
4631d05082
feat(scheduler): add scheduler callback schema and implementation for plugins
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
e4b0e31c85
refactor(manifest): remove unused ConfigPermission from permissions schema
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
c350f8edcb
feat(scheduler): implement Scheduler service with one-time and recurring scheduling capabilities
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
9e3f03a3b2
feat(plugins): add WASI build constraints to client wrapper templates, to avoid lint errors
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
dc2ccdc847
feat(scheduler): add Scheduler service interface with host function wrappers for scheduling tasks
2026-01-12 08:16:04 -05:00
Deluan
3faa554935
refactor(generator): remove error handling for response.Error in client templates
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
17b7c0de89
feat(plugins): generate client wrappers for host functions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
aba6842bfa
fix(generator): error-only methods in response handling
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
26bfbb968d
feat(plugins): implement SubsonicAPI host function integration with permissions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
d93b758b16
feat(subsonicapi): update Call method to return JSON string response
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
5769b25add
feat(hostgen): add hostgen tool for generating Extism host function wrappers
...
- Implemented hostgen tool to generate wrappers from annotated Go interfaces.
- Added command-line flags for input/output directories and package name.
- Introduced parsing and code generation logic for host services.
- Created test data for various service interfaces and expected generated code.
- Added documentation for host services and annotations for code generation.
- Implemented SubsonicAPI service with corresponding generated code.
2026-01-12 08:16:04 -05:00
Deluan
d15dc01933
feat(plugins): add metadata agent and scrobbler schemas for bootstrapping plugins
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
64eefa0e28
refactor(plugins): clean up manifest struct and improve plugin loading logic
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
ed3e2cb6b5
feat(plugins): integrate logs
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
2a030b789a
feat(plugins): implement scrobbler plugin with authorization and scrobbling capabilities
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
df2b28ed4d
feat(plugins): enhance plugin logging and set User-Agent header
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
af89e04bc0
feat(plugins): add Wikimedia plugin for Navidrome to fetch artist metadata
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
a1a24950db
test(plugins): ignore goroutine leaks from notify library in tests
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
1292b02aff
tests(plugins): more optimizations
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
7c191f05d6
tests(plugins): optimize tests
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
318bb35779
tests(plugins): change BeforeEach to BeforeAll in MetadataAgent tests
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
6a689720fe
fix(plugins): race condition in plugin manager
2026-01-12 08:16:04 -05:00
Deluan
81e9c5b4e9
refactor(plugins): implement plugin function call helper and refactor MetadataAgent methods
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:03 -05:00
Deluan
6d13416c15
fix(plugins): improve error handling and logging in plugin manager
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:03 -05:00
Deluan
6a1c58fb4a
refactor(plugins): standardize variable names and remove superfluous wrapper functions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:03 -05:00
Deluan
8eeb61c3eb
feat(plugins): add auto-reload functionality for plugins with file watcher support
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:03 -05:00
Deluan
e7a4043194
feat(plugins): add auto-reload functionality for plugins with file watcher support
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:03 -05:00
Deluan
19800917a6
feat(plugins): add capability detection for plugins based on exported functions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:03 -05:00
Deluan
305896f917
feat(plugins): implement new plugin system with using Extism
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:03 -05:00
Deluan
2180181de9
chore(plugins): remove the old plugins system implementation
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:03 -05:00
Deluan
9d95ef7b3f
fix: specify media_file.id in track loading query to improve accuracy
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:15:46 -05:00
Deluan
55966ba5ec
feat(agents): add ID field to Artist and Song structs with direct matching
...
Add ID field to Artist and Song structs in the agents package. When resolving
similar artists and top songs, the provider now uses a three-phase lookup:
1. Direct ID match (if agent returns internal Navidrome IDs)
2. MBID exact match (if MusicBrainz ID is available)
3. Fuzzy name/title match (existing behavior)
This enables agents to return more precise matches when they have access to
internal database IDs, while maintaining backward compatibility with
name-based matching.
2026-01-11 17:06:25 -05:00
Deluan Quintão
5c3568f758
fix(ui): make playlist name sorting case-insensitive ( #4845 )
...
* fix: make playlist name sorting case-insensitive
Add collation NOCASE to playlist.name column to ensure case-insensitive sorting, matching the behavior of other tables like radio and user. This fixes the issue where uppercase playlist names would appear before lowercase names regardless of alphabetical order.
The migration recreates the playlist table with the proper collation and recreates all associated indexes. Corresponding collation tests are added to verify the fix persists through future migrations.
* fix: add default sorting to playlist names
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-05 19:05:11 -05:00
Deluan
735c0d9103
chore(deps): remove direct dependency on golang.org/x/exp
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:03:44 -05:00
Deluan
fc9817552d
fix(subsonic): make getUser?username comparison case-insensitive
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-19 17:56:40 -05:00
Xabi
0c1b65d3e6
fix(ui): update Basque translation ( #4815 )
...
Added missing strings and a fix or two
2025-12-19 08:32:13 -05:00
Deluan
47b448c64f
chore(deps): update action versions in pipeline configuration
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-19 08:30:18 -05:00
Deluan
834fa494e4
chore(deps): update golangci-lint to v2.7.2
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-19 08:25:51 -05:00
Deluan
5d34640065
chore(deps): update dependencies for maruel/natural to v1.3.0 and tetratelabs/wazero to v1.11.0
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-19 08:24:45 -05:00
Deluan
9ed309ac81
feat(scanner): implement file-based target passing for large target lists
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-16 16:08:32 -05:00
Deluan
8c80be56da
fix(scanner): ensure FullScanInProgress reflects current scan request during interrupted scans
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-16 12:16:00 -05:00
Deluan
cde5992c46
fix(scanner): execute GetFolderUpdateInfo in batches to avoid "Expression tree is too large (maximum depth 1000)"
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-16 11:37:13 -05:00
Deluan
017676c457
fix(ui): export all missing files instead of first 1000
...
Fixes #4721
2025-12-16 06:43:02 -05:00
Deluan
2d7b716834
fix(scanner): remove stale role associations when artist role changes. Fix #4242
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-16 06:38:50 -05:00
Deluan
c7ac0e4414
chore(docker): update Alpine base image to version 3.20 and bump XX_VERSION to 1.9.0
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-15 14:10:34 -05:00
Deluan
c9409d306a
chore(deps): update Go dependencies to latest versions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-15 13:09:06 -05:00