about summary refs log tree commit diff stats
path: root/doc
Commit message (Collapse)AuthorAgeFilesLines
...
* config.toml: switch to Google searchbptato2024-09-301-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm not happy about this, but the alternatives are worse. * DDG has degraded a lot lately: - (I think?) it appends my location to the Bing queries, which might be useful for searching restaurants, but only increases noise when looking for something technical. - Lately it also shoves LLM-generated summaries of websites in my face - which I wouldn't even mind if the "summaries" weren't in the typical overly verbose LLM style... Also, not a degradation per se, but DDG can't load images without JS (neither lite nor html), while Google can. Only relevant now that we have images. * Other large search providers either don't load without JS, or give us a layout that we can't render. * Smaller search providers (Mojeek, Marginalia) sadly don't have CJK support. (DDG performs quite poorly here, too.) * Metasearch engines (Searx, etc.) require self-hosting to work consistently, which I lack resources for. I'm sending ucbcb=1 and gbv=1, both of which are appended by Google and apparently stand for "no cookies" and "no JS", respectively. Also, I have added a siteconf entry to strip the click tracking. The default ddg: omni-rule remains, so users who wish to switch back can set in config.toml: [page] C-k = '() => pager.load("ddg:")'
* pager: improve rewrite-url semanticsbptato2024-09-301-2/+3
| | | | | | | | | | | | | Previously, it just changed the URL before loading the site; now it's an actual redirect. Technically, the previous behavior was more flexible, because it let you apply siteconf rules exclusively for sites where you redirected from. Practically, this was not very useful, and probably unexpected for anybody trying to use the feature. This also fixes a bug where the loader filter would be set for the original page, so you couldn't switch from https to http, etc.
* gopher: do not depend on libcurlbptato2024-09-281-2/+2
| | | | | | | | I'm thinking of making libcurl entirely optional; let's start with the easiest part. I've added a SOCKS5 client for ALL_PROXY support; I know curl supported others too, but whatever.
* loader: clean up connecterrorbptato2024-09-281-9/+10
| | | | | | * allow string values for public errors * remove unused errors * update naming
* 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