Deluan
37f3b838d2
feat: add Now Playing Logger plugin to showcase calling host functions from Python plugins
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:30 -05:00
Deluan
3b9d426c5c
feat: add trace logging for plugin availability and error handling in agents
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:30 -05:00
Deluan
38d80a07de
feat: include plugin capabilities in loading log message
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
83eaad7292
feat: update Makefile and README to clarify Go plugin usage
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
870cd49307
feat: add Cover Art Archive plugin as an example of Python plugin
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
513c969c40
feat: add help target to Makefile for plugin usage instructions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
dd238e74fb
refactor: rename fake plugins to test plugins for clarity in integration tests
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
06e6c09882
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.
2025-12-31 17:06:29 -05:00
Deluan
cab656dbe5
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.
2025-12-31 17:06:29 -05:00
Deluan
b9fceac12c
feat: add Discord Rich Presence example plugin for Navidrome integration
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
f0d6fd4bc8
feat: add Cache service for in-memory TTL-based caching in plugins
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
66c396413c
refactor: moved public URL builders to avoid import cycles
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
a78bbca741
feat: implement Artwork service for generating artwork URLs in Navidrome plugins - WIP
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
e60efde4d4
refactor: simplify schedule cloning in Close method and enhance plugin cleanup error handling
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
e200b70ea6
refactor: rename pluginInstance to plugin for consistency across the codebase
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
8bfb14814e
refactor: rename plugin.create() to plugin.instance()
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
20c7e6c915
fix: use context.Background() in invokeCallback for scheduled tasks
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
9da40af6fb
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>
2025-12-31 17:06:29 -05:00
Deluan
d1225b7828
feat: implement WebSocket service for plugin integration and connection management
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
57aebf5ee9
feat: add WebSocket service definitions for plugin communication
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
6d4b708a28
refactor: update plugin manager initialization and encapsulate logic
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
36927729a4
test: add scheduler service isolation test for plugin instances
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
e951a82265
refactor: capabilities registration
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
b2e1c216a0
refactor(scheduler): replace uuid with id.NewRandom for schedule ID generation
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
1a7ba7f293
feat: rewrite the wikimedia plugin using the XTP CLI
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
7a9a63b219
fix: update wasm build rule to include all Go files in the directory
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
a770783c6c
docs(scheduler): clarify SchedulerCallback requirement for scheduling functions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
5e2e37bca7
refactor(scheduler): add Close method for resource cleanup on plugin unload
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
b94a214c91
refactor(scheduler): streamline scheduling logic and remove unused callback tracking
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
005fc684ed
feat(scheduler): add scheduler callback schema and implementation for plugins
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
3a6cdb3ed3
refactor(manifest): remove unused ConfigPermission from permissions schema
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
f4c6461c0a
feat(scheduler): implement Scheduler service with one-time and recurring scheduling capabilities
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
b84089cea4
feat(plugins): add WASI build constraints to client wrapper templates, to avoid lint errors
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:29 -05:00
Deluan
44c69de525
feat(scheduler): add Scheduler service interface with host function wrappers for scheduling tasks
2025-12-31 17:06:29 -05:00
Deluan
c059db4c9c
refactor(generator): remove error handling for response.Error in client templates
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
ba27a8ceef
feat(plugins): generate client wrappers for host functions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
a0a5168f5f
fix(generator): error-only methods in response handling
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
097774f9c2
feat(plugins): implement SubsonicAPI host function integration with permissions
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
62612391da
feat(subsonicapi): update Call method to return JSON string response
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
de90e191bb
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.
2025-12-31 17:06:28 -05:00
Deluan
9481ba3662
feat(plugins): add metadata agent and scrobbler schemas for bootstrapping plugins
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
1733129537
refactor(plugins): clean up manifest struct and improve plugin loading logic
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
415eac5399
feat(plugins): integrate logs
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
905cd613f3
feat(plugins): implement scrobbler plugin with authorization and scrobbling capabilities
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
876ecb29c8
feat(plugins): enhance plugin logging and set User-Agent header
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
5ddc763bb4
feat(plugins): add Wikimedia plugin for Navidrome to fetch artist metadata
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
6ac3ce3511
test(plugins): ignore goroutine leaks from notify library in tests
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
fed00e1838
tests(plugins): more optimizations
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
f0f191266c
tests(plugins): optimize tests
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00
Deluan
39be1878cb
tests(plugins): change BeforeEach to BeforeAll in MetadataAgent tests
...
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:28 -05:00