about summary refs log tree commit diff stats
path: root/doc
Commit message (Collapse)AuthorAgeFilesLines
* Update docsbptato2024-09-264-223/+496
|
* sixel: support transparencybptato2024-09-241-16/+17
| | | | | | | | | | | | | | | | | | Sixel can only represent transparency for fully transparent (alpha = 0) and fully opaque (alpha = 255) pixels, i.e. we would have to do blending ourselves to do this "properly". But what do you even blend? Background color? Images? Clearly you can't do text... So instead of going down the blending route, we now just approximate the 8-bit channel with Sixel's 1-bit channel and then patch it up with dither. It does look a bit weird, but it's not *that* bad, especially compared to the previous strategy of "blend with some color which hopefully happens to be the background color" (it rarely was). Note that this requires us to handle transparent images specially in term. That is, for opaque ones, we can leave out the "clear cells affected by image" part, but for transparent ones, we must clear the entire image every time.
* loader: mmap intermediate image files, misc refactoringbptato2024-09-221-36/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | * refactor parseHeader * optimize response blob() * add direct "to cache" mode for loader requests which sets stdout to a file, and use it for image processing * move image resizing into a separate process * mmap cache files in between processing steps when possible At last, resize is no longer a part of image decoding. Also, it feels much nicer to keep encoded image data in the same cache as everything else. The mmap operations *should* be more efficient than copying the whole RGBA data through a pipe. In practice, it only makes a difference for loading (well, now just mmapping) the encoded image into the pager, where it singlehandedly speeds up image display by 10x on my test image. For the other steps, the unfortunate fact that "tocache" must delay the next fork/exec in the pipeline until the entire image is processed seems to equal out any wins we might have gotten from skipping a single raw RGBA copy. I have tried moving the delay before the exec (it's possible with yet another pipe), but it didn't help much and made the code much uglier. (Not that tocache didn't, but I can live with this...)
* pager: improve hover text handlingbptato2024-09-222-1/+37
| | | | | | | | | | | * align status truncating behavior with w3m (not exactly, clipping is still different, but this should be fine for now) * add "su" for "show last alert" - w3m's solution here is to scroll one char at a time with "u", but that's extremely annoying to use. We already have a line editor that can navigate lines, so reuse that instead. * fix peekCursor showing empty text * update todo
* Refactor img/*bptato2024-09-151-2/+0
| | | | | I've moved most image logic to adapter, so it doesn't really make sense to have this subdir anymore.
* Update docsbptato2024-09-131-4/+36
|
* config: add display.sixel-colorsbptato2024-09-101-0/+10
|
* config: fix broken references to commandsbptato2024-09-101-155/+165
|
* doc: update manpagesbptato2024-09-0213-29/+385
|
* Update showcase.pngbptato2024-08-271-0/+0
|
* sixel: proper color quantizationbptato2024-08-271-1/+1
| | | | | | | | just use an octree. works fine afaict, though obviously somewhat slower than the static method (encoding is 2-pass now) & still has banding issues with many colors (will need dithering) also, fixed a bug that caused initial masks of bands to get misplaced
* Add image docsbptato2024-08-251-0/+143
| | | | Somewhat rough, but better than nothing.
* Update docsbptato2024-08-102-0/+24
|
* Update monouchabptato2024-08-091-2/+3
|
* loader: move back data URL handlingbptato2024-08-033-12/+22
| | | | | | | data URIs can get megabytes long; however, you can only stuff so many bytes into the envp. (This was thwarting my efforts to view pandoc- generated standalone HTML in Chawan.) So put `data:' back into the loader process.
* cssvalues, twtstr, mediaquery: refactor & fixesbptato2024-08-021-2/+2
| | | | | | | * cssvalues, twtstr: unify enum parsing code paths, parse enums by bisearch instead of hash tables * mediaquery: refactor (long overdue), fix range comparison syntax parsing, make ident comparisons case-insensitive (as they should be)
* doc: fix typobptato2024-07-301-4/+4
|
* Update docsbptato2024-07-292-8/+291
|
* buffer, pager, config: add meta-refresh + misc fixesbptato2024-07-282-12/+36
| | | | | | | | | * buffer, pager, config: add meta-refresh value, which makes it possible to follow http-equiv=refresh META tags. * config: clean up redundant format mode parser * timeout: accept varargs for params to pass on to functions * pager: add "options" dict to JS gotoURL * twtstr: remove redundant startsWithNoCase
* Update docsbptato2024-07-192-17/+148
|
* Makefile: add distcleanbptato2024-07-191-1/+2
|
* config: support smart casebptato2024-07-161-2/+4
| | | | and enable it by default.
* config: add buffer.autofocusbptato2024-07-041-3/+12
| | | | Same as [[siteconf]] autofocus.
* Update docsbptato2024-07-042-11/+19
|
* Update docsbptato2024-07-033-12/+137
|
* config: add various missing optionsbptato2024-06-291-3/+90
| | | | | | | Mainly things you could already set with [[siteconf]] but not normally. Also, a `styling' option to disable author styles. Also, `images' is now documented as an "experimental" option, since it's halfway usable now.
* doc: update manpagesbptato2024-06-247-350/+287
|
* buffer: add autofocusbptato2024-06-081-0/+7
| | | | naturally, it's opt-in
* pager, buffer: improve forms, protocol configbptato2024-06-081-0/+25
| | | | | | * refactor form submission * add options to specify form handling per protocol * block cross-protocol POST requests
* Update docsbptato2024-06-021-10/+3
|
* pager: rework D/discard bufferbptato2024-05-312-7/+12
| | | | | | | | | | | | | | | | | | | | | The previous solution had the issue that it switched between "delete buffer, then move back" and "delete buffer, then move forward" depending on whether the buffer was the root of the buffer tree, which made its behavior quite unpredictable. Now the pager (sort of) remembers the direction you are coming from, and D moves in that direction. So e.g.: * Enter, D just moves back to where you were coming from (as before) * Comma, D deletes the previous buffer, then returns to the current buffer If no buffer exists in the target direction, then we alert. Also, new commands are: `d,' `d.'. They do the same thing the non-d-prefixed variations do, but also delete the current buffer. Useful if you're no longer sure where you are coming from, but know where you want to go. (`d,' in particular is equivalent to w3m's `B'.)
* Update docsbptato2024-05-163-207/+157
|
* term: optimize canvas redraw, remove emulate-overlinebptato2024-05-102-16/+0
| | | | | | | * Replaced the `pcanvas' comparison with a much simpler tracking of the first damaged cell in writeGrid, which is significantly faster. * Removed emulate-overline: it's of too little utility compared to the maintenance burden it caused.
* Update docsbptato2024-05-044-492/+278
|
* config: add insecure-ssl-no-verify option to siteconfbptato2024-05-012-350/+328
| | | | | | | Equivalent to curl --insecure. Note: unfortunately this does not help if the server is using unsafe legacy renegotiation, you have to allow that in the OpenSSL config.
* config: fix copy image URL, document copy commandsbptato2024-04-272-0/+33
|
* doc: include auto-generated manpages in repositorybptato2024-04-268-1/+3361
| | | | | The 100kb or so doesn't hurt as much as not having manual pages at all without pandoc (+ not auto-updating them through make all) does.
* Update docsbptato2024-04-244-381/+838
|
* sandbox: seccomp support on Linuxbptato2024-04-181-1/+8
| | | | | | | | | | | | | | | | | We use libseccomp, which is now a semi-mandatory dependency on Linux. (You can still build without it, but only if you pass a scary long flag to make.) For this to work I had to disable getTimezoneOffset, which would otherwise call localtime_r which in turn reads in some files from /usr/share/zoneinfo. To allow this we would have to give unrestricted openat(2) access to buffer processes, which is unacceptable. (Giving websites access to the local timezone is a fingerprinting vector so if this ever gets fixed then it should be an opt-in config setting.) This patch also includes misc fixes to buffer cloning, and fixes the LIBEXECDIR override in the makefile so that it is actually useful.
* Initial flexbox supportbptato2024-04-051-2/+2
| | | | | | | | | Still far from being fully standards-compliant, or even complete, but it seems to work slightly less horribly than having no flexbox support at all on sites that do use it. (Also includes various refactorings in layout to make it possible at all to add flexbox.)
* loader: constant time key comparisonbptato2024-04-021-4/+4
| | | | | GCC seems to generate something that strongly resembles a constant time comparison, so I guess this should be good enough.
* update docsbptato2024-04-011-9/+61
|
* update readme, add doc/architecture.mdbptato2024-03-251-0/+328
|
* config: add default-headers to siteconfbptato2024-03-211-1/+9
| | | | | | | So long as we have to live with siteconf, let's at least make it useful. Also, rewrite the header overriding logic because while it did work, it only did so accidentally.
* ftp: basic sftp supportbptato2024-03-211-4/+7
| | | | | | | it still sucks, but it is at least slightly more usable. this also fixes a bug in dirlist where sort would mess up item name association
* pager: add "save link", "save source"; change & document some keybindingsbptato2024-03-201-0/+10
| | | | | | | | | * `s{Enter}' now saves link, and `sS' saves source. * Changed ;, +, @ to g0, g$, gc so that it's somewhat consistent with vim (and won't conflict with ; for "repeat jump to char") * Changed (, ) to -, + so that it doesn't conflict with vi's "previous/next sentence" (once we have it...) * Add previously missing keybindings to about:chawan
* config: remove system mailcaps from default mailcap pathbptato2024-03-191-4/+14
| | | | | | | | I haven't seen a single OS-shipped mailcap file yet that would be suitable for use with Chawan. The one on Debian wants to open every text file with vim; the one in FreeBSD ports is straight up broken. mime.types works much better and thus stays.
* buffer: add markURLbptato2024-03-191-0/+5
| | | | Useful when browsing plaintext files; w3m has it too.
* Update docsbptato2024-03-161-3/+0
|
* pager, loader: add "Save file to" functionalitybptato2024-03-161-1/+8
| | | | | | | As simple as it could be; no download panel yet. Also, remove the xdg-open default mailcap entry; it's better to just save by default.