{"record":{"id":"02891ae515d0b65c","repo":"wagoodman/dive","slug":"controller-failed-render-w","errorCode":null,"errorMessage":"controller failed render: %w","messagePattern":"controller failed render: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/dive/cli/internal/ui/v1/app/controller.go","lineNumber":123,"sourceCode":"\tif c.views.Layer.CompareMode() == viewmodel.CompareAllLayers {\n\t\tc.views.Tree.SetTitle(\"Aggregated Layer Contents\")\n\t} else {\n\t\tc.views.Tree.SetTitle(\"Current Layer Contents\")\n\t}\n\n\t// update details and filetree panes\n\treturn c.UpdateAndRender()\n}\n\nfunc (c *controller) UpdateAndRender() error {\n\terr := c.Update()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"controller failed update: %w\", err)\n\t}\n\n\terr = c.Render()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"controller failed render: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// Update refreshes the state objects for future rendering.\nfunc (c *controller) Update() error {\n\tfor _, v := range c.views.Renderers() {\n\t\terr := v.Update()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"controller unable to update view: %w\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// Render flushes the state objects to the screen.\nfunc (c *controller) Render() error {","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/wagoodman/dive/blob/d6c691947f8fda635c952a17ee3b7555379d58f0/cmd/dive/cli/internal/ui/v1/app/controller.go#L105-L141","documentation":"Internal TUI error from the v1 UI controller: UpdateAndRender() calls Render() after a successful Update(), and this wraps any failure while flushing view state to the screen. It is raised when a visible view's Render() method (filetree, details, status bar) returns an error.","triggerScenarios":"A visible view failing during screen flush: filetree rendering with a node whose data is inconsistent, or a gocui view writing outside its bounds after an abrupt resize. Only views where IsVisible() is true are rendered, so it depends on the current screen state.","commonSituations":"Tiny terminal windows where panes have zero usable area; terminal emulators sending resize events mid-keypress; images with pathologically deep filetrees overflowing buffers.","solutions":["Read the inner error returned by the failing view's Render() to find the pane at fault.","Enlarge the terminal (at least ~80x20) and re-run.","Use --json output mode instead of the TUI if the environment cannot host an interactive terminal.","If reproducible with a specific image, file an upstream issue with the image reference."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run the TUI in a real terminal of at least 80x24; use --json in headless contexts.","Avoid resizing the terminal during rendering.","Report reproducible render failures upstream with the image reference."],"tags":["dive","tui","gocui","render","internal"],"backgroundTag":null,"analyzedSha":"d6c691947f8fda635c952a17ee3b7555379d58f0","analyzedAt":"2026-08-15T09:42:35.293Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}