Release Notes - v0.46.0
v0.46.0
Section titled “v0.46.0”Title: Reliable processing, logging controls, and platform installers
Version: v0.46.0
Compare: v0.45.0…v0.46.0
This release improves plugin and pipeline behavior, logging controls, event handling, platform installers, tray reliability, governance data handling, and documentation.
✨ Highlights
Section titled “✨ Highlights”-
Clarified configuration precedence and saves: Explicit CLI flags have the highest priority, followed by environment variables, YAML configuration, and defaults. Adder also serializes atomic configuration saves and synchronizes them more safely during concurrent updates.
-
Separated chain rollback notifications: The
Chain rollbackspreference and wizard control now manage rollback notifications independently fromBlocks mintednotifications. -
Documented application architecture: Architecture guidance explains the processing pipeline, plugin model, configuration precedence, concurrency, shutdown behavior, and tray and API integration.
-
Improved Cardano pool filtering: Pool filters now match SPO voting procedures, while missing stake credentials no longer match or cause unsafe access.
-
Expanded operational logging: Structured fields and component specific loggers make startup, chain synchronization, push, Telegram, and webhook output easier to interpret. Adder reduces sensitive FCM tokens and webhook URLs and payloads in logs.
-
Refined plugin option parsing: Comma-separated Cardano filter, event type, and ChainSync intersection values now ignore surrounding whitespace and empty entries, so YAML block-formatted lists match configured values correctly. Empty intersection values follow the behavior configured by
--input-chainsync-intersect-tip. -
Adjusted Telegram delivery retries: Telegram output now waits for Telegram’s
retry_afterduration when long polling encounters rate limiting, reducing premature retries. -
Clarified API documentation paths: API clients now reach
/ping,/healthcheck, and/eventsat the root, while/v1/fcmand/v1/qrcoderemain under/v1; Swagger is available at/swagger/. -
Validated FCM token input: API requests now validate
fcmTokenbefore processing. -
Improved Telegram multipart uploads: Telegram output can retry HTTP/2 GOAWAY responses, avoids empty multipart bodies for calls without fields, and counts request fields more accurately. Buffered uploads can use more memory.
-
Introduced the managed plugin lifecycle: Custom Go plugin authors must migrate to the
plugin.ManagedPluginlifecycle contract and the sharedplugin.Baseimplementation; legacy lifecycle wiring no longer works. -
Made processing order predictable: Adder validates plugin connections, starts consumers before producers, preserves the configured filter order, and stops components in reverse order.
-
Propagated terminal plugin failures: A terminal failure now stops the pipeline promptly and makes the failing component and error available through the pipeline status.
-
Stopped ChainSync reconnects during cancellation: ChainSync now ends connection handshakes and reconnect attempts when the pipeline shuts down.
-
Halted UTxORPC reconnects during cancellation: UTxORPC now ends its reconnect backoff when the pipeline shuts down.
-
Ended Push delivery during cancellation: Push notification token requests and FCM sends now stop when the pipeline shuts down.
-
Prevented Webhook retries after cancellation: Webhook delivery stops retrying when the pipeline shuts down and does not report cancellation as a delivery error.
-
Matched ChainSync epochs to the selected network: ChainSync status now calculates epoch numbers from the configured network’s era boundaries.
-
Rejected failed WebSocket upgrades: Event streaming now returns WebSocket errors instead of silently falling back to SSE when a client requests a WebSocket upgrade.
-
Removed legacy logging settings: Adder no longer accepts
--logging-levelor related top-level logging settings. Adder now controls selected output logging throughoutput.log.levelor--output-log-level.
⚠️ Event Compatibility
Section titled “⚠️ Event Compatibility”-
Updated generated API integration: Integrations can now import the generated OpenAPI module from
github.com/blinklabs-io/adder/openapi. -
Hardened webhook event handling: Malformed or unknown events no longer cause webhook output to panic. Adder sends the errors through the plugin error channel and coordinates shutdown and retry handling safely.
💪 Improvements
Section titled “💪 Improvements”-
Preserved governance deposit values: Governance certificate deposits now preserve the full unsigned 64 bit value range instead of limiting values to signed 64 bit integers.
-
Prevented tray process buildup: Folders, URLs, and installers launched from the tray now finish asynchronously, avoiding lingering child processes.
-
Hardened Windows tray operation: The tray records diagnostics in its Windows log file, recovers startup panics, permits only one instance per session, and manages service registration, process identity, and restarts more reliably.
-
Corrected tray event and notification behavior: Initial event connections can receive live events without buffered replay, reconnects restore replay, explorer links open the correct transaction or block on the selected network, and followed pools and DReps receive only relevant notifications with the followed DRep’s governance vote.
-
Disabled the tray in FreeBSD release artifacts: FreeBSD
amd64andarm64packages now ship without the tray component. -
Resolved a
crypto/x509vulnerability in tray downloads: Builds now use Go1.27.3and require Go1.26.10.
📚 Documentation
Section titled “📚 Documentation”-
Published library examples: The published documentation site now hosts Adder library examples alongside the product guidance.
-
Outlined governance event reference: Documentation now describes
input.governancefields, supported action types, nested structures, and filtering examples, with schema examples aligned to emitted event data. -
Enabled Dingo pipeline validation: Docker and macOS workflows connect Adder to Dingo through a shared connection on Cardano’s preview network and verify that Adder resumes at the chain tip, while local runs limit container log growth.
-
Consolidated troubleshooting guidance: The documentation now covers connection, configuration, filter, FCM, and webhook diagnostics, common error messages, and Go 1.26 goroutine leak profiling with
GOEXPERIMENT=goroutineleakprofile. -
Specified filter and governance examples: The README now maps
--filter-address,--filter-pool, and--filter-drepto their environment variables and configuration keys, explains comma-separated values and AND/OR behavior, and documents governance event matching for stake and payment addresses plus bech32 and hexadecimal DRep identifiers.
Docs authored by Doc Holiday