Skip to content

Releases: IQAIcom/alert-logger

v1.1.0

15 May 19:41
b24ff74

Choose a tag to compare

Minor Changes

  • #21 3633fee Thanks @Royal-lobster! - Make sustained alerting quieter and more informative by:

    • adding rate-aware early handoff from ramp to sustained mode
    • changing the default sustained update interval from 5 minutes to 15 minutes
    • adding aggregation.periodCount for per-update deltas while keeping suppressedSince for compatibility
    • exposing aggregation.rampExitRatePerSecond and aggregation.rampExitRateWindowMs configuration knobs
    • updating sustained formatter output to show both per-period and total counts

v1.0.1

22 Apr 13:55
18c9bae

Choose a tag to compare

Patch Changes

  • 942e36f Thanks @Royal-lobster! - fix(fingerprinter): normalize numbers adjacent to unit letters

    The built-in NUMBER_RE used \b\d+\b, which failed to match digits
    immediately followed by word characters (e.g. 330s, 120ms). Messages
    like "No block processed for 330s" and "... for 360s" produced
    different fingerprints, so aggregation treated each tick as a fresh
    onset and no suppression occurred. Loosened to \d+ so duration/size
    suffixes are collapsed too.

  • #20 3239f66 Thanks @Royal-lobster! - fix(fingerprinter): run built-in normalizers before user-defined ones

    User-defined normalizers previously ran before the built-in ones, so a
    broad rule like { pattern: /\d+/g, replacement: "<num>" } would strip
    digits out of UUIDs and hex addresses before UUID_RE and HEX_RE had a
    chance to match. Every trade ID or transaction hash then produced a
    distinct fingerprint, which made the aggregator treat each occurrence as
    a fresh onset and suppression never kicked in.

    Built-ins now collapse structural identifiers first, and user rules
    compose on top of the normalized output.

v1.0.0

10 Apr 18:23
8cb83fa

Choose a tag to compare

Major Changes

  • #16 bc50c1a Thanks @Royal-lobster! - Add Slack and Telegram adapters with adapter-owned routing

    Breaking changes:

    • Removed RoutingConfig type, Router class, and routing option from AlertLoggerConfig
    • Removed webhookUrl and pings from FormattedAlert
    • Removed pings from EnvironmentConfig
    • Routing is now configured per-adapter via channels, tags, and mentions constructor options

    Migration: Move routing.channels, routing.tags, and routing.pings into your adapter constructor:

    // Before
    AlertLogger.init({
      adapters: [new DiscordAdapter({ webhookUrl: "..." })],
      routing: {
        channels: { critical: "..." },
        pings: { critical: ["<@&role>"] },
      },
    });
    
    // After
    AlertLogger.init({
      adapters: [
        new DiscordAdapter({
          webhookUrl: "...",
          channels: { critical: "..." },
          mentions: { critical: ["<@&role>"] },
        }),
      ],
    });

    New features:

    • SlackAdapter — Incoming Webhooks with Block Kit formatting, per-level channel routing, mention support, mrkdwn sanitization
    • TelegramAdapter — Bot API with HTML formatting, per-level forum topic routing, tag-to-topic mapping, @username mentions, safe HTML truncation

v0.4.1

06 Apr 11:29
61c5523

Choose a tag to compare

Patch Changes

  • #13 417688e Thanks @Royal-lobster! - fix: improve default fingerprint aggregation to reduce alert noise

    • Normalize titles with the same rules used for messages (UUIDs, hex addresses, timestamps, numbers) so dynamic values in titles don't split fingerprints.
    • Reduce default stackDepth from 3 to 1 so the same error from different callers groups into a single aggregation stream. Users can restore the previous behavior with fingerprint: { stackDepth: 3 }.

v0.4.0

06 Apr 10:14
44e476a

Choose a tag to compare

Minor Changes

  • #11 44f5ee8 Thanks @Royal-lobster! - feat: add description option and fix resolution noise

    • Add description field to AlertOptions for separating short titles from detailed messages. When set, description is used as the embed body instead of the title.
    • Allow error() and critical() to accept (title, options) without an intermediate undefined error param.
    • Resolution notifications now only fire for sustained incidents (count > rampThreshold). One-off or sporadic alerts no longer produce "Resolved" messages.
    • NestJS exception filter uses {METHOD} {PATH} as the alert title instead of the full error message.

v0.3.1

06 Apr 08:01
6a68f25

Choose a tag to compare

Patch Changes

  • #9 c578183 Thanks @Royal-lobster! - Add typesVersions for TypeScript moduleResolution "node" subpath type resolution

v0.3.0

06 Apr 07:57
3209067

Choose a tag to compare

Minor Changes

  • #6 83c2811 Thanks @Royal-lobster! - Add configurable HealthPolicy for adapter health/retry behavior

    • New health config option with unhealthyThreshold, healthWindowMs, drainIntervalMs, maxRetries, and entryExpiryMs
    • Extract shared formatDuration utility to eliminate duplication between health-manager and discord formatter
    • Fix drain-only recovery: onRecovery now fires when adapters become unhealthy purely through background drain retries
    • Immediate re-drain after discarding expired queue entries for faster stale queue cleanup

Patch Changes

  • #8 0746d58 Thanks @Royal-lobster! - Add CommonJS build output alongside ESM for compatibility with projects using moduleResolution: "node"

v0.2.0

06 Apr 02:53
f1a2d38

Choose a tag to compare

Minor Changes

  • c31f9b9 Thanks @Royal-lobster! - Initial release of @iqai/alert-logger with core engine, Discord/Console adapters, reliability layer, and NestJS/Next.js integrations.