glanceapp/glance · error

nested groups are not supported

Error message

nested groups are not supported

What it means

Thrown by the group widget's initialize() when one of its direct children has type group. Glance flattens rendering one level deep inside groups, so a group nested inside a group is rejected at config-parse time before any child widgets initialize.

Source

Thrown at internal/glance/widget-group.go:25

	"time"
)

var groupWidgetTemplate = mustParseTemplate("group.html", "widget-base.html")

type groupWidget struct {
	widgetBase          `yaml:",inline"`
	containerWidgetBase `yaml:",inline"`
}

func (widget *groupWidget) initialize() error {
	widget.withError(nil)
	widget.HideHeader = true

	for i := range widget.Widgets {
		widget.Widgets[i].setHideHeader(true)

		if widget.Widgets[i].GetType() == "group" {
			return errors.New("nested groups are not supported")
		} else if widget.Widgets[i].GetType() == "split-column" {
			return errors.New("split columns inside of groups are not supported")
		}
	}

	if err := widget.containerWidgetBase._initializeWidgets(); err != nil {
		return err
	}

	return nil
}

func (widget *groupWidget) update(ctx context.Context) {
	widget.containerWidgetBase._update(ctx)
}

func (widget *groupWidget) setProviders(providers *widgetProviders) {
	widget.containerWidgetBase._setProviders(providers)

View on GitHub (pinned to 91324e8de7)

Solutions

  1. Move the inner group out to the page's top-level widgets list, next to the outer group
  2. Merge the inner group's widgets directly into the outer group's widgets list
  3. Use separate pages (or a bookmarks/widget layout) to express the extra hierarchy level

Example fix

# before
- type: group
  widgets:
    - type: group
      widgets:
        - type: bookmark

# after
- type: group
  widgets:
    - type: bookmark
Defensive patterns

Strategy: validation

Validate before calling

def check_groups(widgets, inside_group=False):
    for w in widgets or []:
        if w['type'] == 'group':
            if inside_group:
                raise ValueError('nested groups are not supported')
            check_groups(w.get('widgets'), inside_group=True)
        elif w['type'] == 'split-column':
            check_groups(w.get('widgets'), inside_group=False)

Prevention

When it happens

Trigger: A page config where a group widget's widgets list contains another item with type: group; commonly happens when copy-pasting a working group widget into an existing group to 'merge' sections.

Common situations: Reorganizing a page and dropping a group block inside another group; trying to build two-level tab/section hierarchies that Glance's layout does not support.

Related errors


AI-assisted analysis of glanceapp/glance@91324e8de7 (2026-08-15). Data as JSON: /api/errors/a8d9a3eb57f2a38e. Report an issue: GitHub.