compilation: - reduce binary size * fbf for unifont charsets: - set up some fuzzer - use appropriate charsets in forms, urls, etc. display: - important: buffer list * either a buffer list buffer, or a buffer list popup menu. ideally both. - dark mode (basically max Y) - override bgcolor ourselves when terminal fails to report it config: - important: fix crash on missing /tmp dir with default config - important: config editor - switch from table arrays to tables - better siteconf URL matching - $TERM-based display config * better path handling (e.g. inline files, so we could get rid of css "include/inline" etc.) - add per-scheme env var configuration (e.g. proto.gemini.known-hosts = '/some/path'; maybe also with inline JS?) - add RPC for CGI scripts e.g. toggle settings/issue downloads/etc * also some way to set permissions for RPC calls buffer: - important: validate returned values * do not block container when receiving buffer data; if invalid, kill buffer * this also includes not crashing when the buffer dies while container is reading... - important: improve sandboxing * sandbox more built-in CGI protocol handlers - configurable/better url filtering in loader - when the log buffer crashes, print its contents to stderr * easiest way seems to be to just dump its cache file - add buffer groups - xhtml pager: - better horizontal line handling: allow viewing content positioned before page start, handle long lines, etc - history, bookmarks (w3m format?) - save/edit buffer output - alert on external command failure network: - uBO integration? (or at least implement filter lists) - websockets (curl supports ws) javascript: - add support for JS mixins - distinguish double from unrestricted double - better dom support: more events, CSSOM, ... - ReadableStream - separate console for each buffer - buffer selection layout engine: - box borders * will probably need special treatment, as borders must round to 1ch in x direction and 1em in y direction. - do not break inline boxes with out-of-flow block boxes (float, absolute, etc.) * this seems hard to fix properly :( * reminder: this does *not* apply to flexbox; in fact it has the inverse problem AFAICT. - table layout: include caption in width calculation - flexbox: align-self, align-items, justify-content, proper margin handling, proper flex base size resolution - details element - overflow - partial layout, layout caching - iframe - z order - writing-mode, grid, ruby, ... (i.e. cool new stuff) images: - animation man: - add a DOM -> man page converter so that we do not depend on pandoc for man page conversion - move default keybinding definitions to man page gmifetch: - rewrite in Nim tests: - network/XHR (make net test async?) - pager? (how?)