Skip to content

feat(events): add phase-1 channelized weather event pipeline#368

Draft
Orinks wants to merge 3 commits intodevfrom
feat/weather-event-pipeline-phase1
Draft

feat(events): add phase-1 channelized weather event pipeline#368
Orinks wants to merge 3 commits intodevfrom
feat/weather-event-pipeline-phase1

Conversation

@Orinks
Copy link
Owner

@Orinks Orinks commented Feb 26, 2026

Summary

Implements Phase 1 infrastructure for a channelized weather event pipeline to support dual-mode weather presentation (visible UI + screen-reader/invisible announcements) while preserving existing full views.

Scope

  • Add WeatherEvent domain model and in-memory ring buffer store (default size 300)
  • Add WeatherEventDispatcher.dispatch_event(event, *, announce=True, mirror_toast=True)
  • Wire app-level retrieval hooks:
    • get_latest_event(channel=None)
    • get_unread_summary()
  • Integrate two producers only:
    • Urgent alert notifications path (AlertNotificationSystem)
    • Current conditions update path (MainWindow) gated on meaningful changes
  • Add tests for:
    • Store ring buffer behavior + unread counts
    • Dispatcher write/announce/toast behavior
    • Current conditions threshold gating

Behavior notes

  • Existing current conditions/forecast UI remains unchanged.
  • Existing toast behavior for alert notifications is preserved.
  • Event dispatcher mirrors to accessibility output via existing screen reader path (Prism/Prismatoid wrapper) and can optionally mirror toast notifications.

Follow-up (Phase 2)

  • Add event center UI for browsing channels/events and read-state controls
  • Add hourly/daily/discussion channel producers
  • Expand cursor/pagination hooks for richer visible/invisible workflows

Validation

  • ruff check on touched files
  • pytest -q tests/test_weather_event_pipeline.py tests/test_alert_lifecycle.py

@Orinks Orinks changed the title Phase 1: channelized weather event pipeline (urgent + now) feat(events): add phase-1 channelized weather event pipeline Mar 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant