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: urgent alert notifications (AlertNotificationSystem) and current conditions updates (MainWindow) gated on meaningful changes
  • Tests for ring buffer, dispatcher, threshold gating, and main window emission

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 and can optionally mirror toast notifications.

Follow-up (Phase 2)

  • Event center UI for browsing channels/events and read-state controls
  • Hourly/daily/discussion channel producers
  • Cursor/pagination hooks

Validation

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

Rebase note (2026-03-17)

Rebased onto latest dev. One conflict in main_window.py — kept both the new main_window_notification_events import (from dev) and the WeatherEvent/should_emit_current_conditions_event imports (from this PR). All 9 feature tests pass.

@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
@Orinks Orinks force-pushed the feat/weather-event-pipeline-phase1 branch from 311a0ca to 3ba540c Compare March 17, 2026 12:43
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