• v0.8.0 dfd7329177

    Notify Bridge 0.8.0
    Release / release (push) Successful in 1m55s
    Stable

    alexei.dolgolyov released this 2026-05-12 03:01:06 +03:00 | 18 commits to master since this release

    v0.8.0 (2026-05-12)

    User-facing changes

    Features

    • Quiet hours now defer notifications instead of dropping them. Events that arrive during a tracker's quiet window are stored on disk and re-fired at the window end. Asset events for the same (link, event_type, collection) coalesce so a flurry of adds/removes during the night collapses into a single morning notification (ba199f2)
    • Upstream release check. New "Release Cassette" in Settings polls a configurable Gitea or GitHub repo on a schedule and surfaces the latest tag in the UI so you know when a newer Notify Bridge is available. Pre-release filtering and interval are operator-configurable; the install ships pointed at this repo's own upstream (ba199f2)
    • Frontend polish across the board. New MetaStrip component, expanded EventDetailModal, and i18n additions land alongside cohesive Aurora-glass styling tweaks on most management pages — providers, targets, bots, trackers, command and notification templates, users, actions, layout, and dashboard (ba199f2)

    Documentation

    • README rewritten to cover every supported provider, target type, bot command, and smart action — including the deploy / env-var matrix (bb5afcc, 4335036)

    Development / Internal

    Architecture

    • New deferred_dispatch table with two migrations: an ON DELETE SET NULL FK rebuild on event_log_id (so the daily event-log retention sweep no longer deadlocks against pending defers), and a partial unique index on (link_id, collection_id, event_type) WHERE status='pending' to make coalescing race-safe under SQLite's serializable writes (ba199f2)
    • Drain scheduler with three layers: a one-shot APScheduler date job per window-end (idempotent, minute-bucketed), a 5-minute periodic catch-up scan as safety net for misfire-grace overflow and process-restart gaps, and load_pending_drain_jobs to re-arm scheduled drains on boot (ba199f2)
    • Release-check provider abstraction (packages/core/.../release/) with Gitea and GitHub adapters, SSRF-safe outbound URL validation, a registry/factory, and a server-side scheduler probe with cached state and on-settings-change cache invalidation (ba199f2)
    • Version resolution helper (packages/server/.../version.py) that returns the max of installed-package metadata vs source pyproject.toml — fixes the long-running editable-install bug where bumping the version without reinstalling kept the old number visible in the UI (ba199f2)

    Tests

    • New test suites: test_deferred_dispatch.py (drain + coalescing + retention interaction), test_release_provider.py (Gitea and GitHub adapter parsing and error paths), and test_release_service.py (scheduler-level caching and settings invalidation) (ba199f2)

    All Commits
    Hash Message Author
    ba199f2 feat: deferred dispatch, release-check provider, settings polish alexei.dolgolyov
    bb5afcc docs: expand README with all providers, targets, bot commands, and smart actions alexei.dolgolyov
    4335036 docs: sync README deploy section with actual env vars alexei.dolgolyov

    Changelog

    dfd7329 chore: release v0.8.0
    ba199f2 feat: deferred dispatch, release-check provider, settings polish
    bb5afcc docs: expand README with all providers, targets, bot commands, and smart actions
    4335036 docs: sync README deploy section with actual env vars

    Downloads