Skip to content

feat(pages): added groups - #709

Open
DasCanard wants to merge 2 commits into
rajnandan1:mainfrom
DasCanard:groups
Open

feat(pages): added groups#709
DasCanard wants to merge 2 commits into
rajnandan1:mainfrom
DasCanard:groups

Conversation

@DasCanard

Copy link
Copy Markdown

Summary

This PR introduces page-level monitor groups with inline expansion on public status pages and full group management inside the Pages admin UI.

It replaces the previous drawer-based group interaction with inline expandable sections, adds presentation-only page groups, and extends the page API/data model to support grouped monitor structures.

What’s Included

  • Add page-scoped monitor groups in Pages -> Page Monitors
  • Allow groups to be created, edited, reordered, and deleted
  • Allow monitors to be moved into and out of groups
  • Replace bottom drawer/popover group details with inline expansion
  • Add group-level presentation settings:
    • adopt_child_status
    • description
    • default_expanded
  • Extend page API request/response payloads with monitor_groups
  • Update OpenAPI docs and locale keys

Public Status Page Changes

  • Existing technical GROUP monitors now expand inline instead of opening a bottom drawer
  • New page groups render as collapsible inline sections with nested monitor rows
  • Groups can optionally adopt the status of their child monitors
  • Group status behavior was adjusted so:
    • a group is DOWN only when all child monitors are down
    • mixed states containing down monitors are shown as DEGRADED
  • Groups can be configured to be expanded by default on initial page load

Admin UI Changes

  • Added group management to the page editor
  • Added a group dialog for create/edit
  • Added support for:
    • group name
    • group description
    • adopt child status
    • expanded by default
  • Added nested ordering and monitor move actions within grouped page structures

Backend / Data Model

  • Added pages_monitor_groups
  • Extended pages_monitors with optional group membership
  • Extended controller/repository logic to load, save, reorder, and replace grouped page monitor structures
  • Preserved existing technical GROUP monitor behavior in monitoring logic

API Changes

  • GET /api/v4/pages and GET /api/v4/pages/{page_path} now return grouped page structures
  • POST /api/v4/pages and PATCH /api/v4/pages/{page_path} now accept grouped page monitor payloads
  • Added monitor_groups support to the OpenAPI reference

Validation

  • Existing baseline Svelte warnings remain unchanged

Images
image
image
image
image

Resolves
resolves #708

@rajnandan1

Copy link
Copy Markdown
Owner

how does it look when closed?

@rajnandan1

Copy link
Copy Markdown
Owner

i will take a look this weekend as i have recently joined a new workplace and been busy. hope that is alright

@DasCanard

Copy link
Copy Markdown
Author

how does it look when closed?

image

i will take a look this weekend as i have recently joined a new workplace and been busy. hope that is alright

Congrats!
Sure, thats okay.

@DasCanard

Copy link
Copy Markdown
Author

Group between Monitors:

image image

@DasCanard

Copy link
Copy Markdown
Author

group after group:
image

@watermelon1024

Copy link
Copy Markdown

Thanks for working on this! The inline expansion is a great addition to the UX.

However, I have a small suggestion regarding the collapsed state of the group:
Currently, the group header shows a text label for the status (e.g., UP). However, it seems to be missing the Status History bar (the visual uptime blocks) that the original Kener group layout provides.

Would it be possible to include the aggregated status history bar in the group header?

@DasCanard

Copy link
Copy Markdown
Author

Thanks, yes thats a good idea @watermelon1024!
Sorry, I thought I hit the thumbs up button few days ago...😅

I worked on this:

image

As building this I also felt like that those groups needed an own day detail menu.

So I did!
image
image

Status Tab: uses the same state as the group
(removed Latency Tab as averaging the monitors seems kinda useless)
Incidents Tab: shows all incidents of the monitors thats lives in the group
Maintenance Tab: same as Incidents Tab


I need to do a bit of polishing and will push it in a few hours.
In the meantime let me know if you guys like or somethings is off.

@BCJonkhout

Copy link
Copy Markdown

Hey @DasCanard / @rajnandan1 — quick signal from a real production user.

We run Kener for status.prudai.com (PrudAI, a Dutch legal-AI SaaS). One of the recurring UX problems we hit is exactly what this PR solves: our status page monitors a few external Dutch government APIs (wetten.overheid.nl, rechtspraak.nl) that our product depends on, and when those go down our customers think we are down. We need a way to render those as a clearly-labelled, visually-separated section with an explanatory description like "Operated by external providers, outages are outside our control."

The combination of inline expansion + per-group description + adopt_child_status in this PR is exactly the primitive we'd reach for. The current monitor_type: "GROUP" works but the drawer-based interaction hides the context, and there's no description field for the disclaimer.

Happy to deploy the DasCanard/kener:groups branch on our status page (real traffic, real third-party dependencies) and report back with any rough edges before merge if that helps. Let me know.

@garadar

garadar commented Jul 13, 2026

Copy link
Copy Markdown

Hello @rajnandan1

Thank you for this PR;

This feature is really interesting, and it's exactly what I was looking for. Can we move on to the next step if everything is working properly? 🙏

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.

Group monitor - Add "Inline Expansion" mode for sub-monitors within groups

5 participants