Skip to content

Uplinkr Release Notes and Changelog

v0.2.1 — Scheduler safety for async probe execution

Section titled “v0.2.1 — Scheduler safety for async probe execution”
  • Added scheduler.alert_cron as a separate cron expression for uplinkr:project:alert:decision
  • Default scheduler.alert_cron is now */2 * * * * to give queued probe jobs more time to persist fresh state.json data
  • Setting scheduler.alert_cron to null reuses the main scheduler.cron schedule
  • uplinkr:project:alert:decision is no longer scheduled with runInBackground()
  • Reduces the risk of stale state.json reads when async (job) probe execution returns before queue workers persist probe state

v0.2.0 — TLS, async execution & alert quality improvements

Section titled “v0.2.0 — TLS, async execution & alert quality improvements”
  • Added async probe execution via queue jobs (execution_mode: direct or job)
  • Added new uplinkr:config command to inspect effective configuration
  • Added TLS metadata field probe_tls_expiration_date in probe results
  • Added project-level alert notification aggregation (reduced alert noise)
  • Added aggregated notification rendering with deterministic probe ordering
  • Added configurable probe-result JSON formatting (pretty_print_probe_results)
  • probes.execution_mode
  • probes.queue_connection
  • storage.pretty_print_probe_results
  • Added explicit Composer requirement ext-openssl for TLS certificate parsing support
  • UrlHandler now dispatches jobs when execution_mode = 'job' and returns null for dispatched probe runs
  • UplinkrConfig now includes probeExecutionMode, probeQueueConnection, and shouldExecuteProbesAsJob()
  • HandlesProbeOutput now handles null results and shows clearer feedback for queued probe dispatching
  • probe_tls_expiration_date is now propagated into alert notification payloads (mail, webhook, log)
  • Project handlers were reorganized into focused namespaces (Analyze, Archive, Probes) with updated imports/bindings/tests
  • AlertDecisionHandler now persists alert state immediately after each successfully delivered grouped notification batch to reduce duplicate alerts on partial failures
  • Persisted probe_tls_expiration_date into state.json probe entries for reliable alert decision access
  • Aggregated mail output now renders n/a when TLS expiration is null
  • uplinkr:config output now escapes keys/values to avoid console markup parsing and shows empty arrays as []
  • AnalyzeHandler::extractDateFromFilename() now respects the configured probe filename separator
  • PruneHandler now parses probe-result dates according to configured grouping (daily, hourly, monthly)
  • Added backward-compatible normalization from legacy header to headers in project storage and values
  • Extended probe/job execution test coverage (direct mode, job mode, and executeProbe())
  • Added coverage for TLS metadata propagation, aggregated alert notifications/log output, and deterministic probe ordering
  • Added coverage for configurable probe-result JSON pretty printing and config command escaping
  • Added coverage for custom filename separators, hourly pruning, and header key normalization
  • No breaking changes
  • Default behavior remains synchronous (execution_mode=direct)
  • Existing storage behavior remains unchanged by default (pretty_print_probe_results = true)

v0.1.2 — Stability & compatibility fixes

Section titled “v0.1.2 — Stability & compatibility fixes”

This patch release focuses on configuration safety, clearer error handling, and general code quality improvements. No new features are introduced; existing behavior is preserved while preventing unintended breaking changes.

  • User-Agent configuration for HTTP probes

  • Implemented configurable user_agent support for HTTP-based probes.

  • Constructor compatibility safeguard

  • Moved the userAgent parameter to the end of the UplinkrConfig constructor.

  • Prevents breaking changes by maintaining positional argument compatibility for existing constructor calls.

  • Improved error logging

  • Added explicit error logging when invalid JSON data is encountered.

  • Corrected analysis failure messaging

  • Fixed incorrect string output used for failed analyses in result messages.

  • General code cleanup

  • Minor refactoring and cleanup to improve readability and maintainability.

  • No breaking changes
  • Recommended update for all users

This patch release improves resilience in containerized environments where filesystem permission issues can affect access to storage/app/uplinkr.

  • League\Flysystem\UnableToListContents is now explicitly handled during project directory listing.
  • Instead of aborting execution, Uplinkr now falls back gracefully to an empty result ([]).
  • A warning log entry is emitted to make the fallback reason visible to operators.

When storage listing fails, Uplinkr logs a warning with structured context:

  • disk
  • storage_path
  • reason (original exception message)
  • No breaking changes.
  • CLI commands remain stable and do not crash on listing permission failures.
  • Improved observability through explicit warning logs.

If this warning appears, verify:

  • Runtime user permissions (for example: www-data)
  • Owner/group configuration of mounted storage directories
  • Container mount options (read/write access, UID/GID mapping)
  • Added a unit test covering the exception path and verifying warning log emission.
  • Updated README, CHANGELOG and CONTRIBUTING for clarity and consistency.

  • CLI-first monitoring for URLs and APIs
  • Project and probe management
  • File-based JSON storage
  • Alert configuration with log, mail and webhook channels
  • Scheduler integration for automated probe execution
  • Prune tooling for old results
  • Minimal result summaries (experimental)

Notes

  • Requires PHP 8.2+ and Laravel 12
  • Early MVP — API and behavior may evolve
  • No breaking changes