wagoodman/dive · error
unable to setup filter controller: %w
Error message
unable to setup filter controller: %w
What it means
Raised in the filter view's Layout when Filter.Setup fails on first-time creation of the 'filter' label and input views. Setup configures the editor and view options for the path-filter input line; any error from that setup (or its initial render) is wrapped here. The filter view's geometry depends on len(v.labelStr), so degenerate label widths or tiny terminals can produce bad SetView coordinates upstream.
Source
Thrown at cmd/dive/cli/internal/ui/v1/view/filter.go:180
// OnLayoutChange is called whenever the screen dimensions are changed
func (v *Filter) OnLayoutChange() error {
err := v.Update()
if err != nil {
return err
}
return v.Render()
}
func (v *Filter) Layout(g *gocui.Gui, minX, minY, maxX, maxY int) error {
v.logger.Tracef("layout(minX: %d, minY: %d, maxX: %d, maxY: %d)", minX, minY, maxX, maxY)
label, labelErr := g.SetView(v.Name()+"label", minX, minY, len(v.labelStr), maxY, 0)
view, viewErr := g.SetView(v.Name(), minX+(len(v.labelStr)-1), minY, maxX, maxY, 0)
if utils.IsNewView(viewErr, labelErr) {
err := v.Setup(view, label)
if err != nil {
return fmt.Errorf("unable to setup filter controller: %w", err)
}
}
return nil
}
func (v *Filter) RequestedSize(available int) *int {
return &v.requestedHeight
}
View on GitHub (pinned to d6c691947f)
Solutions
- Check the wrapped error for the concrete Setup failure
- Use a wider terminal (the label plus input need several columns)
- If you changed the filter label string, ensure its length leaves room (maxX > minX + len(label) - 1)
- Report upstream if reproducible in stock dive
Defensive patterns
Strategy: try-catch
Validate before calling
// ensure the label leaves room for the input area
if maxX <= minX+len(v.labelStr) { return nil } Try / catch
if err := v.Setup(view, label); err != nil {
return fmt.Errorf("unable to setup filter controller: %w", err)
} Prevention
- Keep the filter label short if customizing
- Ensure terminals are wide enough for label + input
- Avoid deleting the filter views mid-session
When it happens
Trigger: utils.IsNewView true for the filter/label views and Filter.Setup returning non-nil — e.g. editor/keybinding wiring failing, or the initial header render erroring because the label view was created with a degenerate rectangle (len(v.labelStr) small vs minX).
Common situations: Custom forks modifying the filter label; terminals too narrow for the label plus input area; shutdown races during first layout; running non-stock builds with extra Setup logic.
Related errors
- unable to toggle filter view: %w
- unable to move the cursor, empty line
- failed to set UI: %w
- failed to set UI: %w
- unable to toggle filter visibility: %w
AI-assisted analysis of wagoodman/dive@d6c691947f (2026-08-15).
Data as JSON: /api/errors/345679973db4407b.
Report an issue: GitHub.