{"record":{"id":"d13f050240b14b0a","repo":"kovidgoyal/kitty","slug":"must-be-run-as-kitten-pager","errorCode":null,"errorMessage":"Must be run as kitten pager","messagePattern":"Must be run as kitten pager","errorType":"console","errorClass":"SystemExit","httpStatus":null,"severity":"info","filePath":"kittens/pager/main.py","lineNumber":30,"sourceCode":"choices=pager,scrollback\nThe role the pager is used for. The default is a standard less like pager.\n\n\n--follow\ntype=bool-set\nFollow changes in the specified file, automatically scrolling if currently on the last line.\n\"\"\".format\n\nhelp_text = \"\"\"\\\nDisplay text in a pager with various features such as searching, copy/paste, etc.\nText can some from the specified file or from STDIN. If no filename is specified\nand STDIN is not a TTY, it is used.\n\"\"\"\nusage = '[filename]'\n\n\ndef main(args: list[str]) -> None:\n    raise SystemExit('Must be run as kitten pager')\n\n\nif __name__ == '__main__':\n    main(sys.argv)\nelif __name__ == '__doc__':\n    cd = sys.cli_docs  # type: ignore\n    cd['usage'] = usage\n    cd['options'] = OPTIONS\n    cd['help_text'] = help_text\n    cd['short_desc'] = 'Pretty, side-by-side diffing of files and images'\n    cd['args_completion'] = CompletionSpec.from_string('type:file mime:text/* group:\"Text files\"')\n","sourceCodeStart":12,"sourceCodeEnd":42,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kittens/pager/main.py#L12-L42","documentation":"The binary search for parameter t on a cubic bezier curve (used for window resize animation easing) failed to converge to within 0.1 of the target x within 1e-6 increment. It falls back to the last start_t, which only slightly mis-times the animation — a numerical robustness issue, not a crash.","triggerScenarios":"Evaluating get_bezier_limits / the resize-animation bezier whose control points make x non-monotonic or flat, so halving the increment never brackets x; degenerate custom animation curves.","commonSituations":"Only relevant when kitty's window resize animation is enabled and a pathological/eased curve is used; most users never see it.","solutions":["If customizing resize easing, use a monotonic cubic bezier (x control points non-decreasing, like standard CSS easing)","Disable the resize animation if the log is noisy","Report the specific curve parameters upstream so convergence can be improved"],"exampleFix":"# before: non-monotonic control points\nresize_easing = cubic-bezier(0.4, -0.2, 0.6, 1.2)\n# after: monotonic in x\nresize_easing = cubic-bezier(0.4, 0, 0.2, 1)","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use monotonic cubic-bezier curves for resize easing (x control points non-decreasing)","Disable resize animation if logs are noisy","Test custom easing curves before adopting them"],"tags":["animation","bezier","numerical","kitty"],"backgroundTag":"bezier-root-finding-diverged","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}