compilation: - reduce binary size * remove the null columns in EUC-KR decoding * fbf for unifont * maybe use system wcwidth? 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 - allow overriding ansi colors config: - important: config editor - completely replace siteconf; the new solution should: * not be based on table arrays * allow overriding pretty much every global value per URL * allow better URL matching (regexes aren't great for this task) * be called url-config * allow matching $TERM string, buffer groups (but maybe this should be a separate setting?) - add per-scheme configuration (e.g. proto.gemini.known-hosts = '/some/path') - 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: add sandboxing * also, other security stuff: - configurable/better url filtering in loader - make peekCursor show the entire url - 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 - better horizontal line handling: allow viewing content positioned before page start, handle long lines, etc network: - uBO integration? (or at least implement filter lists) - websockets (curl supports ws) external: - history, bookmarks (w3m format) - save buffer (source, output) - edit buffer (local file, or whatever we downloaded) javascript: - important: callbacks should not leak memory - add support for JS mixins - distinguish double from unrestricted double - better dom support, more events * more concretely: get jQuery to work. this needs innerHTML, CSS properties in DOM, ... - implement ReadableStream, XHR - 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. - make table width calculation consistent with FF etc. * unfortunately, most websites are designed for auto table layouts where w3m's space distribution algorithm does not work really well :/ - do not break inline boxes with out-of-flow block boxes (float, absolute, etc.) * this seems hard to fix properly :( - table layout: include caption in width calculation - details element - overflow - incremental layout & layout caching * first for tree generation, then for layout. - iframe - writing-mode, flexbox, grid, ruby, ... (i.e. cool new stuff) images: - sixel encoding (eventually also kitty) -> actually display them :P - more formats (apng, gif: write own decoders, jpeg: use libjpeg, webp: ?) - incremental decoding (maybe implement streams first?) - separate image decoder process? or just run on a different thread? man: * add a DOM -> man page converter so that we do not depend on pandoc for man page conversion gmifetch: - rewrite in Nim etc: - tests (including aforementioned fuzzer) - orc support - maybe windows support? (blocker: needs a windows machine)