Skip to content

fix: improve mobile alert details and notification navigation - #91

Merged
Aidaho12 merged 5 commits into
roxy-wi:release/2.3from
CoooderSan:fix/mobile-alert-details-responsive-2.3
Sep 18, 2026
Merged

Aidaho12 merged 5 commits into
roxy-wi:release/2.3from
CoooderSan:fix/mobile-alert-details-responsive-2.3

Conversation

@CoooderSan

Copy link
Copy Markdown
Contributor

Summary

Improve the mobile alert-details experience and notification deep-link flow, rebased onto release/2.3 and aligned with the final AlertGroup API contract.

Changes

  • Make alert details responsive on narrow screens, including long titles, labels, messages, and detail values.
  • Display alert details as a full-screen, theme-consistent view on mobile devices.
  • Lock the page behind an open modal and prevent scroll chaining at modal boundaries.
  • Open notification links directly on the target alert instead of briefly showing the dashboard first.
  • Reuse an active PWA window when possible and mask stale iOS PWA snapshots during navigation.
  • Render the alert-details loading state immediately for direct alert URLs.
  • Normalize trailing slashes so /alerts/ resolves exactly like /alerts.
  • Avoid duplicate syncAlertDetailsFromUrl() calls during authentication and route rendering.
  • Reject cross-origin notification targets before service-worker navigation.
  • Move AlertGroup API calls, OpenAPI definitions, tests, and documentation to /api/alert-groups/....
  • Use /acknowledge and /{target_group_id}/merge for the final 2.3 API contract.
  • Keep /alerts/<id> unchanged as the browser-facing deep-link route.

Testing

  • pytest -q — 1,842 passed.
  • AlertGroup API, OpenAPI, routing, PWA, modal-scroll, and notification regression tests passed.
  • Ruff passed.
  • JavaScript syntax validation passed for all static JavaScript files.
  • git diff --check passed.

Manual verification

The mobile UX changes carried over from #90 were manually verified on iPhone:

  • notification deep links open the target alert;
  • alert details fit the viewport without horizontal overflow;
  • the background does not scroll after reaching the end of the details view;
  • the mobile alert-details theme is consistent;
  • direct alert URLs load the details view correctly.

Contributor License Agreement

After opening this pull request, comment exactly:

/sign-cla

You only need to sign once per CLA version. If you already accepted the current CLA.md, the CLA status check will pass automatically.

@CoooderSan

Copy link
Copy Markdown
Contributor Author

/sign-cla

@Aidaho12

Copy link
Copy Markdown
Member

Thank you!

@Aidaho12
Aidaho12 merged commit 23e2fee into roxy-wi:release/2.3 Sep 18, 2026
6 checks passed
Aidaho12 added a commit that referenced this pull request Sep 30, 2026
* Init 2.3 release

* feat(incidents): add Incident core service and lifecycle management

* add repository layer for first-class Incident records
* add Incident create, read and update operations
* implement optimistic concurrency using row_version compare-and-swap
* add centralized Incident workflow transition validation
* support assign, reassign, unassign and independent operational ownership
* keep Incident assignee independent from AlertGroup technical assignee
* add Incident to AlertGroup link and unlink operations with retained link history
* enforce one active non-closed Incident per AlertGroup
* enforce a single active primary AlertGroup link per Incident
* validate team, service and user ownership boundaries
* add PostgreSQL row locking for concurrent Incident and AlertGroup link operations
* preserve transactional behavior for SQLite deployments
* add Incident operational timeline events
* add audit logging for Incident mutations and relationship changes
* preserve existing AlertGroup lifecycle, comments, notification and escalation behavior
* extend Incident core migration for operational event storage
* add regression coverage for lifecycle transitions, stale updates, assignment independence and link history
* update Incident Management v2 architecture documentation
* update English and Russian documentation
* update README with Incident Management 2.3 domain boundaries

Part of #45
Part of #47

* feat(incidents): add Incident core service and lifecycle management

* add repository layer for first-class Incident records
* add Incident create, read and update operations
* implement optimistic concurrency using row_version compare-and-swap
* add centralized Incident workflow transition validation
* support assign, reassign, unassign and independent operational ownership
* keep Incident assignee independent from AlertGroup technical assignee
* add Incident to AlertGroup link and unlink operations with retained link history
* enforce one active non-closed Incident per AlertGroup
* enforce a single active primary AlertGroup link per Incident
* validate team, service and user ownership boundaries
* add PostgreSQL row locking for concurrent Incident and AlertGroup link operations
* preserve transactional behavior for SQLite deployments
* add Incident operational timeline events
* add audit logging for Incident mutations and relationship changes
* preserve existing AlertGroup lifecycle, comments, notification and escalation behavior
* extend Incident core migration for operational event storage
* add regression coverage for lifecycle transitions, stale updates, assignment independence and link history
* update Incident Management v2 architecture documentation
* update English and Russian documentation
* update README with Incident Management 2.3 domain boundaries

Part of #45
Part of #47

* fix(api): restore AlertGroup collaboration behavior after API split

* restore responder request validation for AlertGroup collaboration endpoints
* reject missing or conflicting responder target identifiers with validation errors
* allow responder targets to accept or decline their own requests
* return access_denied for unauthorized responder status changes
* restore responder response messages and actor context in technical timeline events
* restore AlertGroup stakeholder removal endpoint
* restore audit logging for legacy AlertGroup responder and stakeholder mutations
* keep responders and stakeholders on AlertGroup until the planned Incident collaboration migration
* update AlertGroup API regression tests for the final 2.3 contract
* fix stale Peewee model assertions in priority tests
* update maintenance response expectations to use maintenance_suppressed
* fix manual AlertGroup creation test setup regression

* fix: improve mobile alert details and notification navigation (#91)

* fix: open browser push links directly

* fix: prevent alert details overflow on narrow screens

* fix: prevent modal background scroll

* fix: open alert deep links without dashboard flash

* fix: align mobile alert flow with release 2.3

---------

Co-authored-by: caocong <caocong>

* Fix after PL

* feat(loading): add reusable loading and skeleton components with localization support

- Introduced CSS and JS utilities for rendering loading spinners, skeleton placeholders, and inline/block states.
- Integrated loading components into services, alerts, and dashboard pages.
- Added localization for generic loading and updating messages in multiple languages.
- Updated tests and templates to leverage new loading utilities.
- Improved accessibility with ARIA roles and reduced motion support.

* feat: improve integrations, overview dashboard and notification policy UX

 - fix Grafana webhook validation for payloads with explicit null map fields
 - accept values=null and other optional integration maps as empty objects
 - preserve strict validation for invalid non-map values
 - add regression coverage for Grafana and other integration payloads

 - redesign the Overview dashboard
 - replace narrow sidebar-heavy layout with a responsive two-column grid
 - add Alert activity trend chart
 - add Service health donut chart and operational status summary
 - combine Severity and Priority into a compact Alert distribution card
 - add stacked Active alerts by team chart for firing and acknowledged groups
 - add On-call now with current responders by rotation
 - replace duplicated Recent alerts with a Recent activity feed
 - expose recent AlertGroup lifecycle/activity events on the dashboard
 - reduce excessive whitespace and align related dashboard cards
 - improve activity indicator, text and timestamp alignment
 - add semantic colors for firing, acknowledged and resolved summary cards

 - improve Active incidents actions on Overview
 - move Ack and Resolve into the standard three-dot action menu
 - add Shelve and Unshelve actions
 - reuse the existing shelving dialog with duration and reason
 - refresh Overview state after alert actions

- improve Overview responsiveness
  - balance primary and secondary column widths
  - keep related dashboard cards at matching heights
  - reorganize distribution, team activity, recent activity and on-call widgets
  - preserve single-column behavior on smaller screens

- fix Notification Policy channel selection
  - keep disabled channels visible in rule editors
  - mark disabled channels explicitly instead of silently filtering them out
  - preserve existing rules that reference disabled channels
  - use rule channel data as a fallback when the channel list is incomplete
  - show a proper empty state when no channels are available

- update localization for the new Overview widgets and actions

Fixes #94

* feat: add first-class Incidents UI and polish 2.3 alert workflows

- add a dedicated Incidents section and SPA route
- add standalone Incident list, creation flow and details workspace
- support direct /incidents/{id} navigation
- add Incident lifecycle actions including close and reopen
- add Incident assignment, reassignment, unassign and Assign to me
- add Incident activity and linked AlertGroup views
- add AlertGroup link and unlink actions from Incident details
- add Create Incident action from AlertGroup details
- keep Incident operational ownership independent from AlertGroup technical ownership
- integrate Incidents with global team filtering and RBAC-aware controls
- add localization for the new Incidents UI
- fix Notification Policy channel rendering for disabled channels
- keep disabled channels visible and preserve existing rule references
- improve Overview layout, card height alignment and widget placement
- move Active alerts by team next to Alert distribution
- move Recent activity next to On-call now
- align Recent activity status indicators, text and timestamps
- keep Overview alert actions in the standard three-dot menu
- add Shelve and Unshelve actions to Overview
- remove brittle frontend source-text regression tests

* feat: widen alert text fields and improve modal behavior

- Migrate alert text fields (`title`, `external_id`, `group_key`) to unbounded `TEXT` for increased reliability with long upstream values.
- Remove btree indexes from `group_key` to avoid PostgreSQL constraints.
- Add test coverage for new text field configurations and rollback scenarios.
- Replace side panel behavior with modals for maintenance and rotation details to improve UX consistency and accessibility.
- Align modals with improved responsive styles and semantic layouts.

Close: #97

* Improve notification policy rule filters and details UI

- add common Notification Policy rule filters for priority, severity, source,
  service, environment, criticality and tier
- keep advanced matchers for custom conditions
- store common filters in the existing matcher engine
- move Notification Policy details into a modal
- fix rule checkbox layout
- update docs, translations and regression tests

Closes #64
Closes #66

* Harden Incident Management 2.3 release

- add migration reconciliation and rollback coverage
- add AlertGroup/Incident ID collision regression tests
- harden cross-team Incident link authorization
- add PostgreSQL concurrency coverage for Incident links
- document the breaking 2.3 API migration and release notes

Refs #45
Refs #47
Refs #48
Refs #55

* Improve Incident page

---------

Co-authored-by: CoooderSan <dazz.cao@ecochn.com>
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.

2 participants