55 Commits

Author SHA1 Message Date
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
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
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
221ccdc18d docs: update plugin registration docs
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
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
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
Deluan
31842b2c3d refactor(plugins): consistent naming/types across PDK
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
d81e641cc6 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>
2026-01-12 08:16:06 -05:00
Deluan
b4b7b91cf7 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>
2026-01-12 08:16:06 -05:00
Deluan
05455de90b 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>
2026-01-12 08:16:06 -05:00
Deluan
bbb1596b4b feat(plugins): generate Go client stubs for non-WASM platforms
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
1d18b3a092 feat(plugins): add Go client library with host function wrappers and documentation
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
b8ff660485 feat(plugins): enhance Rust code generation with typed struct support and improved type handling
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
1b589f292f refactor(plugins): update JSON field names to camelCase for consistency
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
de45079ff6 feat(plugins): add Rust host function library and example implementation of Discord Rich Presence plugin in Rust
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
628e0b58b7 docs: enhance README with Extism plugin development resources and recommendations
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
7664b22f04 docs: update README for .ndp plugin packaging and installation instructions
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
9d4b838ecb feat(plugins): add support for .ndp plugin packages and update build process
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
822fb0370c fix(build): update target to wasm32-wasip1 for improved WASI support
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
0fc0f3c105 docs: update README to reflect JSON configuration format for plugins
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
766689428d feat(plugins): add Library Inspector plugin for periodic library inspection and file size logging
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
9a070a63fc docs: update READMEs
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:06 -05:00
Deluan
065b076f45 feat: add Webhook Scrobbler plugin in Rust to send HTTP notifications on scrobble events
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:05 -05:00
Deluan
d8cc4d57eb feat: update Python plugin documentation and usage instructions for host function wrappers
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:05 -05:00
Deluan
dfa7e0d9fc feat: add generated host function wrappers for Scheduler and SubsonicAPI services
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:05 -05:00
Deluan
8c4d94e64f feat: add Now Playing Logger plugin to showcase calling host functions from Python plugins
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:05 -05:00
Deluan
ca2b26f9bd feat: update Makefile and README to clarify Go plugin usage
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:05 -05:00
Deluan
f26448fb7c feat: add Cover Art Archive plugin as an example of Python plugin
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:05 -05:00
Deluan
a3a5412741 feat: add help target to Makefile for plugin usage instructions
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:05 -05:00
Deluan
5deedbe341 refactor: error handling in various plugins to convert response.Error to Go errors
- Updated error handling in `nd_host_scheduler.go`, `nd_host_websocket.go`, `nd_host_artwork.go`, `nd_host_cache.go`, and `nd_host_subsonicapi.go` to convert string errors from responses into Go errors.
- Removed redundant error checks in test data plugins for cleaner code.
- Ensured consistent error handling across all plugins to improve reliability and maintainability.
2026-01-12 08:16:05 -05:00
Deluan
693ce7d280 refactor: host function wrappers to use structured request and response types
- Updated the host function signatures in `nd_host_artwork.go`, `nd_host_scheduler.go`, `nd_host_subsonicapi.go`, and `nd_host_websocket.go` to accept a single parameter for JSON requests.
- Introduced structured request and response types for various cache operations in `nd_host_cache.go`.
- Modified cache functions to marshal requests to JSON and unmarshal responses, improving error handling and code clarity.
- Removed redundant memory allocation for string parameters in favor of JSON marshaling.
- Enhanced error handling in WebSocket and cache operations to return structured error responses.
2026-01-12 08:16:05 -05:00
Deluan
dd6a6e6ba7 feat: add Discord Rich Presence example plugin for Navidrome integration
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
aa1cb78a46 feat: add Crypto Ticker example plugin for real-time cryptocurrency price updates via Coinbase WebSocket API
Also add the lifecycle capability

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
Deluan
88bd0dbe46 feat: rewrite the wikimedia plugin using the XTP CLI
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:04 -05:00
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
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
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
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