| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
now I know why overloading dealloc felt wrong
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.)
|
|
|
|
|
|
| |
* encode path URLs
* accept directories without trailing slash
* sort file names
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
| |
poll will return an error if interrupted, which may leave the events in
their previous state. Make sure revents is set to 0 first.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
also, erase cacheRef when it couldn't be opened
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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:")'
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
gets rid of a todo.
(not sure why I thought this was important, but it sure looks nicer)
|
|
|
|
| |
used on 32-bit platforms
|
|
|
|
|
| |
This switches CAtom to uint32; it seems better to use the same size on
all platforms.
|
|
|
|
| |
see header for usage
|
| |
|
| |
|
|
|
|
|
| |
Now we use QuickJS-NG, which is better maintained than QJS and has
column tracking.
|
|
|
|
|
| |
It's only used there, and there's no reason for every single promise to
carry two pointers to support it.
|
| |
|
| |
|
|
|
|
|
| |
This lets us send the transparency bit as a header, and also halves the
number of header parsers in loader.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
* allow string values for public errors
* remove unused errors
* update naming
|
|
|
|
|
|
| |
Also, kill twidth and its friends; we haven't been using it for a
while now. (In the future, a solution with PUA chars might be worth
exploring.)
|
|
|
|
| |
it's a waste of space, and doesn't work well with showFullAlert
|
|
|
|
| |
required for poll
|
|
|
|
| |
+ some misc refactorings
|
|
|
|
| |
this was causing weird artifacts
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
ugh
|
|
|
|
|
| |
d7085253b7 was too strict; in particular, it broke cases where copyable
text is placed in text areas.
|
| |
|
|
|
|
| |
fixes the race where reused images wouldn't show up after page load
|
|
|
|
| |
ensure that images are shown in the order buffer sent them
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
Now we dispatch to select objects from the pager object too, just
to make things even more confusing.
Well, it works better than the previous arrangement, in that trying to
use unimplemented movements now just throws instead of moving around
the container. Yay for OOP (?)
|
|
|
|
|
| |
* fix overprint of double width chars in status & select
* fix blank screen on reload + startpos screen move
|