{"record":{"id":"82f99332533047f5","repo":"kovidgoyal/kitty","slug":"invalid-panel-options-specified-e","errorCode":null,"errorMessage":"Invalid panel options specified: {e}","messagePattern":"Invalid panel options specified: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"info","filePath":"kittens/panel/main.py","lineNumber":137,"sourceCode":"            'focus_policy': ('focus_policy',),\n            'exclusive_zone': ('requested_exclusive_zone',),\n            'override_exclusive_zone': ('override_exclusive_zone',),\n            'hide_on_focus_loss': ('hide_on_focus_loss',),\n        }\n    )\n\n\ndef incrementally_update_layer_shell_config(existing: dict[str, Any], cli_options: Iterable[str]) -> LayerShellConfig:\n    seen_options: dict[str, Any] = {}\n    cli_options = [('' if x.startswith('--') else '--') + x for x in cli_options]\n    try:\n        try:\n            opts, _ = parse_panel_args(cli_options, track_seen_options=seen_options)\n        except SystemExit as e:\n            raise ValueError(str(e))\n        lsc = layer_shell_config(opts)\n    except Exception as e:\n        raise ValueError(f'Invalid panel options specified: {e}')\n    lsc_cli_map = cli_option_to_lsc_configs_map()\n    for option in seen_options:\n        for config in lsc_cli_map.get(option, ()):\n            existing[config] = getattr(lsc, config)\n    if seen_options.get('edge') == 'background':\n        existing['type'] = GLFW_LAYER_SHELL_BACKGROUND\n    if existing['hide_on_focus_loss']:\n        existing['focus_policy'] = GLFW_FOCUS_ON_DEMAND\n    return LayerShellConfig(**existing)\n\n\nmtime_map: dict[str, float] = {}\n\n\ndef have_config_files_been_updated(config_files: Iterable[str]) -> bool:\n    ans = False\n    for cf in config_files:\n        try:","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kittens/panel/main.py#L119-L155","documentation":"The box-drawing renderer encountered a Unicode codepoint in the U+2500 block family that has no case in its drawing table, so it renders the cell as blank and logs the codepoint. Note this table also handles some legacy/DOS glyphs via C()/S() macros; unknown ones degrade to blank.","triggerScenarios":"Displaying an unusual box-drawing, legacy computing, or terminal glyph character that kitty's decorations.c table doesn't cover (or that a patch/added case didn't handle), e.g. rarely-used U+1FB00-series or exotic block glyphs.","commonSituations":"Running TUI apps that emit obscure line/box or legacy symbols; fonts with custom glyph mappings; newer Unicode than kitty's table supports.","solutions":["Update kitty — new Unicode additions (legacy computing symbols) get table entries over time","Check the exact codepoint from the log against Unicode charts to confirm it's a genuine box/legacy glyph","Report the codepoint upstream as a missing box-drawing case"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep kitty updated for new Unicode box-drawing/legacy glyph coverage","Note the codepoint from the log to identify the missing glyph","Report missing glyphs upstream rather than patching the table locally"],"tags":["unicode","box-drawing","glyphs","kitty"],"backgroundTag":"unsupported-unicode-glyph","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}