{"record":{"id":"ac78f6d86e2fd9ac","repo":"wagoodman/dive","slug":"unable-to-setup-layer-details-controller-onlayoutc","errorCode":null,"errorMessage":"unable to setup layer details controller onLayoutChange: %w","messagePattern":"unable to setup layer details controller onLayoutChange: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/dive/cli/internal/ui/v1/layout/compound/layer_details_column.go","lineNumber":39,"sourceCode":"\t\tlayerDetails: layerDetails,\n\t\timageDetails: imageDetails,\n\t}\n}\n\nfunc (cl *LayerDetailsCompoundLayout) Name() string {\n\treturn \"layer-details-compound-column\"\n}\n\n// OnLayoutChange is called whenever the screen dimensions are changed\nfunc (cl *LayerDetailsCompoundLayout) OnLayoutChange() error {\n\terr := cl.layer.OnLayoutChange()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to setup layer controller onLayoutChange: %w\", err)\n\t}\n\n\terr = cl.layerDetails.OnLayoutChange()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to setup layer details controller onLayoutChange: %w\", err)\n\t}\n\n\terr = cl.imageDetails.OnLayoutChange()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to setup image details controller onLayoutChange: %w\", err)\n\t}\n\treturn nil\n}\n\nfunc (cl *LayerDetailsCompoundLayout) layoutRow(g *gocui.Gui, minX, minY, maxX, maxY int, viewName string, setup func(*gocui.View, *gocui.View) error) error {\n\tlog.WithFields(\"ui\", cl.Name()).Tracef(\"layoutRow(g, minX: %d, minY: %d, maxX: %d, maxY: %d, viewName: %s, <setup func>)\", minX, minY, maxX, maxY, viewName)\n\t// header + border\n\theaderHeight := 2\n\n\t// TODO: investigate overlap\n\t// note: maxY needs to account for the (invisible) border, thus a +1\n\theaderView, headerErr := g.SetView(viewName+\"Header\", minX, minY, maxX, minY+headerHeight+1, 0)\n","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/wagoodman/dive/blob/d6c691947f8fda635c952a17ee3b7555379d58f0/cmd/dive/cli/internal/ui/v1/layout/compound/layer_details_column.go#L21-L57","documentation":"Same propagation point as errors 36/38 but for the second child: the layer-details view's OnLayoutChange() failed while the compound layout reacted to a screen-dimension change. Identical failure surface, different pane (the per-layer details text pane).","triggerScenarios":"Terminal resize causing the layer-details pane relayout to fail, e.g. the pane computes a negative or zero size, or gocui view adjustment errors.","commonSituations":"Aggressive terminal shrinking; splits/tmux panes smaller than the pane's minimum; resizing during initial draw.","solutions":["Restore a normal terminal size and retry.","Ensure the hosting terminal/pane has enough rows for the three stacked detail views.","Prefer non-interactive output modes in automation contexts.","Report persistent reproductions upstream with terminal details."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Avoid shrinking terminals below the detail panes' minimum size.","Prefer full-window or fixed-size tmux panes for long dive sessions.","Capture wrapped errors when reporting layout failures."],"tags":["dive","tui","gocui","layout","resize","internal"],"backgroundTag":null,"analyzedSha":"d6c691947f8fda635c952a17ee3b7555379d58f0","analyzedAt":"2026-08-15T09:42:35.293Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}