about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
...
* Update monouchabptato2024-10-122-8/+8
|
* Add `nc' tool & adjust finger/spartan to use itbptato2024-10-128-86/+114
| | | | | | | | | Simple netcat clone, useful for portable scripts. Especially because some netcats will close the connection as soon as I close stdin... this one only quits when either stdout or the socket refuses new data. Also, it uses our standard TCP connection routine, meaning it respects ALL_PROXY. (i.e. now spartan works with socks5 too)
* dirlist: separate out into dirlist2htmlbptato2024-10-128-279/+232
| | | | | Now the dirlist parser lives inside dirlist2html, and the file protocol just emulates FTP LIST.
* dom: prevent leaking window size through media queriesbptato2024-10-121-3/+4
|
* gmifetch: rewrite in Nimbptato2024-10-1214-730/+548
| | | | | | | | | | This finally makes it possible to use socks5 for Gemini. Also slightly refactored the config, to make it easier to pass on the config dir. By the way, the known_hosts file is now stored in the config dir too. The adapter will try to move it to there from the old location.
* dom: html -> documentElementbptato2024-10-103-9/+6
| | | | it's effectively a dupe, except html wouldn't work in XML
* env: fix getComputedStyle arg2bptato2024-10-101-1/+1
|
* promise: remove newPromisebptato2024-10-103-17/+6
| | | | normal construction is enough (and it wasn't really used anyway)
* layout, pager: preserve tabs on display, selection & outputbptato2024-10-107-31/+126
| | | | | | | | | | | | Substitute tabs with one of eight PUA characters based on their width, and convert them back in the pager: * TUI mode always prints spaces, but now handles tabs appropriately on cursor movement * dump mode tries to preserve hard tabs, but uses soft tabs when that is not possible (e.g. tabs after a margin, tab with background color, etc) * selection mode always outputs hard tabs.
* Fix compilation on Nim 2.2.0bptato2024-10-103-13/+18
|
* Update docsbptato2024-10-1013-67/+106
|
* resize: use srgbbptato2024-10-092-7/+7
| | | | | | | | since that's our input color space (Actually, mainstream browsers seem to use linear scaling nevertheless. But apparently that produces surprising results in some cases, and stbir can do srgb, so might as well use it.)
* bonus: add stbir2, readme, makefilebptato2024-10-088-6/+260
|
* loader: fix fd leakbptato2024-10-081-0/+1
|
* twtstr: fix stripAndCollapsebptato2024-10-082-11/+19
|
* client: fix redirected buffers jumping back to parent on reloadbptato2024-10-071-0/+5
| | | | | replaceBackup was not being cleared, so the next gotoURL with a replace pointing to such buffers wouldn't work.
* pager: do not choke on empty editor commandbptato2024-10-071-2/+4
|
* layout: small cleanupbptato2024-10-071-14/+11
| | | | the length check is not needed, we do that outside the loop already
* color: reduce CellColor size, misc color refactoringbptato2024-10-0613-140/+157
| | | | | | * split out CSSColor from CellColor; now CellColor is just 4 bytes (which helps reduce FormatCell size) * unify color function naming (still not perfect)
* pager: add missing int conversionbptato2024-10-061-1/+1
|
* man: check exit code after reading first linebptato2024-10-061-8/+14
|
* url: fix IDNA bugsbptato2024-10-062-2/+4
|
* Update Chagashibptato2024-10-053-15/+6
|
* layout: fix floats overriding margin/paddingbptato2024-10-055-16/+28
|
* sixel: simplify compressSixelbptato2024-10-051-12/+5
|
* md2html: support + lists, ~~~ blocksbptato2024-10-041-5/+7
|
* dynstream: fix memory leakbptato2024-10-045-8/+10
| | | | now I know why overloading dealloc felt wrong
* sixel, term: reduce half-dump special casingbptato2024-10-044-84/+83
| | | | | | | Makes it slightly easier to debug image output. Also, we stop sending dimension headers, and no longer check for the scheme env var to make CLI invocation a bit less annoying.
* sixel: fix some weird artifactsbptato2024-10-041-0/+13
| | | | | | | | | | | | Since getColor's color assignment eagerly fills in holes with the nearest neighbor of the first such observed node, it is prone to falling into a local minimum where dithering ends up switching between a few very wrong colors. Ensure this doesn't happen by always allocating at least 4 nodes of the octree branch. (Allocating all 7 seems to result in a heavy performance hit; just 4 means at worst 4096 extra nodes, but likely a lot less, and I don't see a difference in either output or performance.)
* filei: misc updatesbptato2024-10-041-2/+14
| | | | | | * encode path URLs * accept directories without trailing slash * sort file names
* sixel: transparency improvementsbptato2024-10-032-9/+9
| | | | | | | * don't set transparency when raster attributes suffice - it seems terminals don't background-fill in that case either. * fix transparency in encoder standalone mode * update comments
* Update monouchabptato2024-10-022-6/+6
|
* poll: reset events on errorbptato2024-10-021-1/+5
| | | | | poll will return an error if interrupted, which may leave the events in their previous state. Make sure revents is set to 0 first.
* term: "fix" GNU screen not respecting query sequence orderbptato2024-10-011-9/+22
| | | | | | | | | | | | | wtf ... OK, it's a "fix" as much as you can fix this. I'm not adding a timer just to work around screen silently reordering my output. (Who thought this would be a good idea??) Unfortunately, this means that your background/foreground colors won't get detected when using screen. Not that they would have been until now.
* twtstr: misc refactoringsbptato2024-10-013-5/+5
|
* http: remove twtstr dependencybptato2024-10-012-12/+18
|
* ftp: remove libcurl dependencybptato2024-10-017-266/+527
| | | | | | | | | | | | | This splits out sftp into a separate binary that *does* depend on libcurl. However, ftp now uses the same socket code as gopher. ftps is dropped, because I've never even tested it. Maybe I'll add it back when we have working OpenSSL bindings. This is still "doing the easy part first", now I have no clue how to handle sftp because my initial plan ("just use the sftp binary") doesn't work - sftp batch mode doesn't accept passwords. libssh2 remains the sole candidate, but that's what libcurl wraps anyway.
* loader: add missing nil check in openCachedItembptato2024-10-011-1/+4
| | | | also, erase cacheRef when it couldn't be opened
* config.toml: switch to Google searchbptato2024-09-302-3/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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:")'
* url: fix searchParams.deletebptato2024-09-302-0/+3
|
* pager: improve rewrite-url semanticsbptato2024-09-302-9/+22
| | | | | | | | | | | | | 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.
* timeout: accept err stream as parambptato2024-09-304-16/+11
| | | | | gets rid of a todo. (not sure why I thought this was important, but it sure looks nicer)
* sandbox: allow clock_gettime64bptato2024-09-301-1/+2
| | | | used on 32-bit platforms
* dom: optimize element size, remove importc hack & dead codebptato2024-09-304-111/+85
| | | | | This switches CAtom to uint32; it seems better to use the same size on all platforms.
* bonus: add prototype gallery scriptbptato2024-09-291-0/+78
| | | | see header for usage
* pager: add missing nil checkbptato2024-09-291-2/+3
|
* buffer: un-extern some procsbptato2024-09-291-2/+2
|
* Update monouchabptato2024-09-295-11/+14
| | | | | Now we use QuickJS-NG, which is better maintained than QJS and has column tracking.
* promise: move PromiseMap to bufferbptato2024-09-292-72/+51
| | | | | It's only used there, and there's no reason for every single promise to carry two pointers to support it.
* lcgi: fix broken error messagebptato2024-09-281-1/+1
|