compilation: - reduce binary size (maybe gzip data/*?) - improve compilation times (it's sloooow... we could probably speed up the js macros somehow, also the html parser/tokenizer?) charsets: - set up some fuzzer - use appropriate charsets in forms, urls, etc. - JS TextEncoder interface docs: - manpage display: - important: add a virtual cursor (in some terminals, the real cursor is often obscured by white background color) - important: buffer list * either a buffer list buffer, or a buffer list popup menu. ideally both. - dark mode (basically max Y) - do not assume default background color * instead, add an "override-default-color" option that is set to true by default and replaces default bgcolor/fgcolor with default-background/foreground-color - allow overriding ansi colors config: - important: config editor buffer: - important: incremental html parsing * also, do not needlessly copy in onload - 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 - buffer cloning: fork buffer process instead of piping source - disable "reinterpret as html" for the log buffer - when the log buffer crashes, print its contents to stderr * make console.err a TeeStream, and tee it to a StringStream that buffers up to 4KB - add highlighting, copy - add buffer groups - add option to write source to a file, instead of keeping it in memory - hex viewer - xhtml - better horizontal line handling: allow viewing content positioned before page start, handle long lines, etc - do not prompt when submitting forms (it's annoying) * this is mostly fixed, but not completely network: - ftp/sftp - gopher - urimethodmap * then we could add gemini as a bonus, without an SSL dependency outside of curl. - uBO integration? (or at least implement filter lists) - websockets (curl supports ws) - integrate curl-impersonate (LD_PRELOAD works, but still...) external: - something like EXTERN - local cgi - 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 - new Intl.NumberFormat().format(null) - separate console for each buffer - buffer selection layout engine: - important: floats (way too many websites look very ugly without them) - make background-color a property of inline boxes, not words. (this would require implementing actual inline boxes) - 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) - 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? etc: - important: replace fastRuneAt with qjs libunicode (fastRuneAt has no error handling...) - tests (including aforementioned fuzzer) - orc support: * go through copyMem & c library calls and add prepareMutation where necessary (for orc) - maybe windows support? (blocker: needs a windows machine)