4633 Commits

Author SHA1 Message Date
Deluan
3dba572ce7 refactor: rename List method to Keys for clarity in configuration management
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 14:08:26 -05:00
Deluan
15a1d4152a refactor: update interface types to use 'any' in plugin repository methods
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 10:03:35 -05:00
Deluan
d0482ec9ac refactor: make MockPDK private
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 00:59:35 -05:00
Deluan
7b1126201e feat: enhance plugin manager to support metrics recording
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 00:41:33 -05:00
Deluan
b90ecb9754 feat: implement ConfigService for plugin configuration management
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-01 19:56:33 -05:00
Deluan
4b66560f50 feat: conditionally include error handling in generated client code templates
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-01 19:53:07 -05:00
Deluan
20ae227bd3 fix: context cancellation and implement WebSocket callback timeout for improved error handling
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-01 17:52:16 -05:00
Deluan
b35928e598 fix: update return types in minimalPlugin and wikimediaPlugin methods to use pointers
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-01 17:24:54 -05:00
Deluan
3c83c44dc7 feat: add unit tests for Discord plugin and RPC functionality
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-01 17:15:35 -05:00
Deluan
9522b060d5 feat: add PDK abstraction layer with mock support for non-WASM builds
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-01 15:44:32 -05:00
Deluan
c6fe02a49c feat: add support for experimental WebAssembly threads
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-01 13:19:52 -05:00
Deluan
a2ace6e84e refactor: Discord RPC struct to encapsulate WebSocket logic
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 21:02:01 -05:00
Deluan
e111c5832f feat: implement mock service instances for non-WASM builds using testify/mock
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 19:34:14 -05:00
Deluan
6b0ea10f4e 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.
2025-12-31 17:06:33 -05:00
Deluan
aa207fb521 docs: update README to include Rust PDK crate information for plugin developers
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
e2f64880e6 docs: clarify artwork URL generation capabilities in service descriptions
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
69ded80806 docs: correct example link for library inspector in README
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
477cec93a9 docs: update Go and Rust plugin developer sections for clarity
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
7b0db4f8d6 fix(plugins): update response types in testMetadataAgent methods to use pointers
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
ad9cda9d57 feat(plugins): implement XTP JSONSchema validation for generated schemas
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
e3bfcff8c4 test(plugins): add unit tests for rustOutputType and isPrimitiveRustType functions
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
6698e94a9c fix(plugins): update IsAuthorized method to return boolean instead of response object
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
6fff476e93 fix(plugins): enhance type handling for Rust and XTP output in capability generation
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
e6b0af63ce fix(plugins): update return types in metadata interfaces to use pointers
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
d6b412acde refactor(plugins): update plugin instance creation to accept context for cancellation support
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
8d586f7425 docs: update README to reflect changes in plugin import paths
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
451475a7af test(plugins): conditionally run goleak checks based on CI environment
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
dc5100e56a fix(plugins): generate host wrappers
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
4678da1e5b docs: update plugin registration docs
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
1fc1a667f1 refactor(plugins): update export wrappers to use //go:wasmexport for WebAssembly compatibility
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
59085145f5 refactor(plugins): rename scheduler callback methods for consistency and clarity
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
e6e2582abf refactor(plugins): update macro names for websocket and metadata registration to improve clarity and consistency
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
06d75476f6 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>
2025-12-31 17:06:33 -05:00
Deluan
4f260c058d refactor(plugins): reorganize Rust output structure to follow standard conventions
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
67ab3dc81a feat: implement Rust PDK
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
ae41164c1f refactor(plugins): consolidate PDK module path and update Go version to 1.25
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
4ea54fe176 build: mark .wasm files as intermediate for cleanup after building .ndp
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:33 -05:00
Deluan
ca36c5df13 refactor(plugins): update request/response types to use private naming conventions
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
7cad08ad09 refactor(plugins): update function signatures to return values directly instead of response structs
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
11d99ef673 refactor(plugins): update error handling for methods to return errors directly
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
6ee64ceeec refactor(plugins): reorganize and sort type definitions for consistency
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
f221c01bd9 test: make all test plugins use the PDK
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
f1b85e6a19 refactor(plugins): update scrobbler interface to return errors directly instead of response structs
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
d43724c571 refactor(plugins): streamline plugin function signatures and error handling
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
301b2c850c refactor(plugins): consistent naming/types across PDK
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
547363eab7 feat(plugins): implementation of the Navidrome Plugin Development Kit with generated client wrappers and service interfaces - Phase 5
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
8a453cb22c feat(plugins): implementation of the Navidrome Plugin Development Kit with generated client wrappers and service interfaces - Phase 4
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
2e716ed780 feat(plugins): implementation of the Navidrome Plugin Development Kit with generated client wrappers and service interfaces - Phase 3
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
6d3c29912b feat(plugins): implementation of the Navidrome Plugin Development Kit with generated client wrappers and service interfaces - Phase 2 (2)
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00
Deluan
6fa9ef0dfe feat(plugins): implementation of the Navidrome Plugin Development Kit with generated client wrappers and service interfaces - Phase 2
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:32 -05:00