4642 Commits

Author SHA1 Message Date
Deluan
5f54944366 feat: implement user permissions for SubsonicAPI and scrobbler plugins
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
d660bbd900 test: add integration tests for UsersService enable gate behavior
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
2d4a3c621c refactor: remove UserID from scrobbler request structure
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
5c1b8498ce refactor: streamline users integration tests and enhance plugin user management
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
08280eaea8 feat: add users permission management to plugin system
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
6ab277bf9e test: add ndpgen plugin tests in the pipeline and update Makefile
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
df1ed336cc refactor: rename List method to Keys for clarity in configuration management
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
1f24c14b9e refactor: update interface types to use 'any' in plugin repository methods
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
f8ea65dbc8 refactor: make MockPDK private
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
1fdeb54961 feat: enhance plugin manager to support metrics recording
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
84d421c9df feat: implement ConfigService for plugin configuration management
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
68b4e2052c feat: conditionally include error handling in generated client code templates
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
9e9d5cd615 fix: context cancellation and implement WebSocket callback timeout for improved error handling
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
5c7173b61c fix: update return types in minimalPlugin and wikimediaPlugin methods to use pointers
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00
Deluan
188a3a19d5 feat: add unit tests for Discord plugin and RPC functionality
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
363177e1d4 feat: add PDK abstraction layer with mock support for non-WASM builds
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
b95d3d7831 feat: add support for experimental WebAssembly threads
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
dd94355c46 refactor: Discord RPC struct to encapsulate WebSocket logic
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
93e9f12685 feat: implement mock service instances for non-WASM builds using testify/mock
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
a427166084 fix: handle URL parsing errors and use atomic upsert in plugin repository
Added proper error handling for url.Parse calls in PublicURL and AbsoluteURL
functions. When parsing fails, PublicURL now falls back to AbsoluteURL, and
AbsoluteURL logs the error and returns an empty string, preventing malformed
URLs from being generated.

Replaced the non-atomic UPDATE-then-INSERT pattern in plugin repository Put
method with a single atomic INSERT ... ON CONFLICT statement. This eliminates
potential race conditions and improves consistency with the upsert pattern
already used in host_kvstore.go.
2026-01-12 08:16:07 -05:00
Deluan
ac3889cac9 docs: update README to include Rust PDK crate information for plugin developers
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
5c087a12af docs: clarify artwork URL generation capabilities in service descriptions
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
0ec82e83f6 docs: correct example link for library inspector in README
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
f8149c320f docs: update Go and Rust plugin developer sections for clarity
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
374dd2343d fix(plugins): update response types in testMetadataAgent methods to use pointers
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
89d9aa1434 feat(plugins): implement XTP JSONSchema validation for generated schemas
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
aa03d53524 test(plugins): add unit tests for rustOutputType and isPrimitiveRustType functions
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
169bbb9d0a fix(plugins): update IsAuthorized method to return boolean instead of response object
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
e750bf8232 fix(plugins): enhance type handling for Rust and XTP output in capability generation
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
867000b70a fix(plugins): update return types in metadata interfaces to use pointers
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
fc89abd0ea refactor(plugins): update plugin instance creation to accept context for cancellation support
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
6210af8d90 docs: update README to reflect changes in plugin import paths
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
f0c8e98c6d test(plugins): conditionally run goleak checks based on CI environment
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
37473a7096 fix(plugins): generate host wrappers
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
221ccdc18d docs: update plugin registration docs
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
633a26a273 refactor(plugins): update export wrappers to use //go:wasmexport for WebAssembly compatibility
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
06c2556a8f refactor(plugins): rename scheduler callback methods for consistency and clarity
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
53aa1a67ee refactor(plugins): update macro names for websocket and metadata registration to improve clarity and consistency
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
3bfce4cc9c refactor(plugins): update Discord Rich Presence and Library Inspector plugins to use nd-pdk for service calls and implement lifecycle management
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
2b2b673581 refactor(plugins): reorganize Rust output structure to follow standard conventions
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
e2d0c5626c feat: implement Rust PDK
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
c19ce124d5 refactor(plugins): consolidate PDK module path and update Go version to 1.25
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
034e8af90b build: mark .wasm files as intermediate for cleanup after building .ndp
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
3d14349b99 refactor(plugins): update request/response types to use private naming conventions
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
810ee687fa refactor(plugins): update function signatures to return values directly instead of response structs
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
312a31f688 refactor(plugins): update error handling for methods to return errors directly
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
723b19c8de refactor(plugins): reorganize and sort type definitions for consistency
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
25b5acad8a test: make all test plugins use the PDK
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
9ac0764cc2 refactor(plugins): update scrobbler interface to return errors directly instead of response structs
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:07 -05:00
Deluan
306b2fc525 refactor(plugins): streamline plugin function signatures and error handling
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00