reduce binary size:
- fbf for unifont
- init some JS APIs from byte-code compiled JS?
	* ones that return static values could just use a
	  defineProperty. e.g. most of navigator, parts of screen
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)
config:
- important: config editor
- better siteconf URL matching
- $TERM-based display config
- add RPC for CGI scripts e.g. toggle settings/issue downloads/etc
	* also some way to set permissions for RPC calls
mailcap:
- save custom command?
- w3mmee extensions?
	* browsecap looks cleaner than urimethodmap, and would be
	  useful for mailto
		- it overlaps with siteconf quite a bit...
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...
- color visited links
	* needs some sort of conditional formatting in pager, e.g. give
	  all Formats an id in buffer and send a list of "if URL
	  visited, change Format" commands
- 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 tabs
- xhtml
pager:
- handle long lines
- save/edit buffer output
	* just reuse dump mode code
- alert on external command failure
- pipe copiousoutput, x-htmloutput stderr to console
network:
- uBO integration? (or at least implement filter lists)
- dict
- nntp
- websockets
javascript:
- support defining one function with multiple names (maybe with magic?)
- "this" value as JSValue
- distinguish double from unrestricted double
- more events
- ReadableStream
- separate console for each buffer
- buffer selection
layout:
- box borders
	* will probably need special treatment, as borders must round to
	  1ch in x direction and 1em in y direction.
	* table is high priority; for other boxes, I don't know if it
	  would work
- flexbox: align-self, align-items, justify-content, proper margin handling
- details element
- layout caching
	* sub-layout is done, now for reusing old trees
	* use memcmp/memcpy for sizes check?
	* non-root block too, if no floats exist?
- partial rendering
	* buffer.lines must go, so rewrite getCursorStyledNode and
	  findPrev/NextLink to use the box tree
		- also findPrevMatch/findNextMatch, but it's hard
		  without a line array... we can render it as we
		  go, but it will be slow
	* we must calculate the overflow box, but the current approach
	  is broken, easier to just set it as a property on render
	* inline layout's output must be flattened again, so that we can
	  deal with tall inline boxes (like the <plaintext> tag in
	  text/plain buffers)
- partial layout?
	* may be more trouble than it's worth... for pager-like
	  behavior, it's easier to just backpressure input
- frame, iframe
- z order
	* for images it's straight up broken
- grid
images:
- animation
man:
- add a DOM -> man page converter so that we do not depend on pandoc
  for man page conversion
tests:
- pager? (how?)
