Skip to content

Conversation

@ericmeadows
Copy link

@ericmeadows ericmeadows commented Jul 13, 2025

Fixes #415

In order to add somewhat fine-grained display functionality, we have submitted the work we did internally to limit certain monitors from being publicly visible within groups. This allows teams to expand the items in a healthcheck without displaying those results publicly. This is somewhat similar, but more-enhanced, functionality from Kuma Uptime. In order to accomplish this, there needed to be a "two-way" switch that allows for one setting to override the other - members of a group can set their own visibility in a group setting, and the parent can turn off the visibility for all children.

Here's the rough user story/specification:

  • An administrator should be able to:
    • See all healthchecks in a group, including their status
    • Quickly determine which healthchecks are going to be publicly hidden
    • Quickly edit the visibility of a groups children from the parent
    • Edit the visibility of a child from all groups when editing the child itself
  • A user should be able to:
    • Not see the drilldown button when:
      • There are no children with the show visibility in group setting
      • The parent does not allow children to be visible
    • See a drilldown when there are 1 or more children of a group that are publicly visible and the parent enables drilldown functionality
    • Not see individual pages for children of a group when:
      • There are no children with the show visibility in group turned on
      • The parent does not allow children to be visible
    • See individual pages when:
      • A child has show visibility in group turned on
      • The parent has show visibility of children turned on

Here's the functionality checklist:

  • Migration that adds new fields
  • Backend calculation for group member drilldown
    • UI button shows/hides appropriately
  • Individual Monitor
    • Data propagation for Update/Create functionality
    • Data propagation on Get functionality
    • Checkbox UI
  • Group Monitor
    • Data propagation for Update/Create functionality
    • Data propagation on Get functionality
    • Checkbox UI
  • Group page
    • Hide individually-hidden monitors when logged-out
    • Show * when logged-in to let users know it's not visible publicly
      • Add internationalization for text
  • Return 401 when:
    • Parent disallows group members from being views
    • Child is set to not show inside a group
  • Self-review to minimize changes and ensure debugging efforts are stripped.

Possible future functionality (feel free to request this if really needed):

  • Show * on the main page when the drill-down is going to be disabled publicly
  • Show i18n text that shows what the * means
  • Handle a child being shown in multiple groups where 1 parent allows children to be shown and another does not
    • This was skipped in order to get the basic feature shipped (we need this)

@ericmeadows ericmeadows changed the title [WIP] Enable fine-grained visibility controls for group members Enable fine-grained visibility controls for group members Jul 13, 2025
@ericmeadows
Copy link
Author

@rajnandan1 - can you take a look?

*/
export function up(knex) {
return knex.schema.alterTable("monitors", function (table) {
table.boolean("enable_details_to_be_examined").notNullable().defaultTo(true);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let us tiny int for this, since there are nuances of how boolean is interpreted for pg/mysql/sqilite

@rajnandan1
Copy link
Owner

can you add some screen shots
admin + page

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.

An idea for further enhancing visibility control

2 participants