Skip to content

Release Notes - 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.

  • 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 rollbacks preference and wizard control now manage rollback notifications independently from Blocks minted notifications.

  • 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_after duration when long polling encounters rate limiting, reducing premature retries.

  • Clarified API documentation paths: API clients now reach /ping, /healthcheck, and /events at the root, while /v1/fcm and /v1/qrcode remain under /v1; Swagger is available at /swagger/.

  • Validated FCM token input: API requests now validate fcmToken before 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.ManagedPlugin lifecycle contract and the shared plugin.Base implementation; 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-level or related top-level logging settings. Adder now controls selected output logging through output.log.level or --output-log-level.

  • 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.

  • 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 amd64 and arm64 packages now ship without the tray component.

  • Resolved a crypto/x509 vulnerability in tray downloads: Builds now use Go 1.27.3 and require Go 1.26.10.

  • Published library examples: The published documentation site now hosts Adder library examples alongside the product guidance.

  • Outlined governance event reference: Documentation now describes input.governance fields, 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-drep to 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.


Doc Holiday logo

Docs authored by Doc Holiday

Edit page

Last updated: