| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
It still sucks, but at least now it flashes a bit less.
(I should really redo it properly some time)
Also, special case yaft so that we always output sixels for it.
|
|
|
|
|
|
|
|
|
| |
Turns out this isn't actually needed. Which makes sense, as transparency
doesn't have a color register at all - it's just the default state of
pixels.
Also, skip octree-based quantization with palette <= 2; unsurprisingly,
monochrome gives much better results.
|
| |
|
|
|
|
|
|
| |
Welp. The fence was needed after all.
The keybinding was broken anyway; fix that too.
|
|
|
|
|
|
|
|
|
| |
saveSource's URL overriding mechanism conflicted with rewrite-url,
since the latter wouldn't change the overriding URL (which was not
optional either).
Remove the former since a) it's just cosmetic and b) not really visible
to the user at all.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
std/unicode has the following issues:
* Rune is an int32, which implies overflow checking. Also, it is
distinct, so you have to convert it manually to do arithmetic.
* QJS libunicode and Chagashi work with uint32, interfacing with these
required pointless type conversions.
* fastRuneAt is a template, meaning it's pasted into every call
site. Also, it decodes to UCS-4, so it generates two branches that
aren't even used. Overall this lead to quite some code bloat.
* fastRuneAt and lastRune have frustratingly different
interfaces. Writing code to handle both cases is error prone.
* On older Nim versions which we still support, std/unicode takes
strings, not openArray[char]'s.
Replace it with "twtuni", which includes some improved versions of
the few procedures from std/unicode that we actually use.
|
|
|
|
| |
Now it mostly works, provided you set a compatible encoding.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* round down to number divisible by 6 for height
* make pager's dispw match term's dispw even after width clamping
* make *BE procs actually emit/consume big-endian (lol)
* fix borked sixel set raster attributes & control string
I mixed up SRA with the device control string's parameters, so instead
of toggling transparency in the DCS, I was setting the second SRA
parameter to 0. Which, by the way, defines the aspect ratio's
denominator, and has nothing to do with transparency. Whoops.
|
|
|
|
| |
Makes it so we don't crash the entire browser upon encoding failure.
|
|
|
|
| |
select allocates. (makes sense, but I never realized...)
|
|
|
|
| |
+ be a bit more paranoid about double closes
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* stream: and passFd is now client-based, and accessible for buffers
* Bitmap's width & height is now int, not uint64
* no more non-network Bitmap special case in the pager for canvas
I just shoehorned it into the static image model, so it still doesn't
render changes after page load. But at least now it doesn't crash the
browser.
|
|
|
|
|
|
|
|
| |
* expand allowed color range somewhat
* update maximum sixel size on window resize
* fix kitty image cropping
* use faster algorithm for sixel compression (also produces less
wasteful output)
|
|
|
|
|
|
| |
* don't emit transparency request when we don't need it
* add lookup table for missing hash entries
* write(2)'ize
|
|
|
|
| |
& clean up outputSixelImage in general
|
|
|
|
|
|
|
| |
in fact, we consider these to be the same image, and arguably that's
a bug in and of itself. but at least we don't crash anymore.
(also, update todo)
|
| |
|
|
|
|
|
|
|
|
| |
This caches sixel output. Works best when the line height is a multiple
of 6px, but should still be faster than the previous solution everywhere
else too (simply by virtue of encoding separate images in parallel).
Next step: actual color quantization
|
| |
|
|
|
|
|
|
|
|
| |
If TERM is unrecognized by termcap, retry as dosansi.
When that fails, just fall back to the non-termcap code path.
(There is no reason to panic without termcap; it's just one of the
several capability detection mechanisms we use.)
|
|
|
|
|
|
| |
* actually download & compile modules (but don't run them yet)
* fix a bug in XHR (on some older Nim versions, move() doesn't
actually move)
|
|
|
|
|
|
|
|
|
|
| |
* add responseText, response
* add net tests
-> currently sync XHR only; should find a way to do async
tests...
* update monoucha
-> simplified & updated some related code that no longer worked
properly
|
|
|
|
|
|
| |
* parse last line even if it doesn't end with LF
* parse flags & named fields case-insensitively
* update naming
|
|
|
|
| |
Dispatch manually with fromJS instead.
|
|
|
|
| |
It did not actually break rewrite-url, but was still annoying.
|
| |
|
| |
|
| |
|
|
|
|
| |
use JSValue varargs instead
|
|
|
|
|
| |
+ also send register & image dimension queries in forced sixel mode,
and image dimension query on window resize
|
|
|
|
|
|
|
|
|
| |
* xmlhttprequest: fix missing import
* painter: generic tuple workaround
* dynstream: merge module with implementations (so it will work with
vtables)
Not enabling vtables yet since it doesn't work with refc.
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
| |
Still not perfect, because it crashes on missing /tmp dir so you have to
manually set it...
|
|
|
|
|
|
|
|
|
|
|
| |
fixes the following bug:
* click a link that redirects somewhere
* go back
* discard buffer (that had the link)
* discard the new buffer
then you would find yourself in a zombie buffer you previously discarded
|
|
|
|
|
|
| |
Hope I got it right this time. (The previous iteration did not take into
account the image position on the screen, so it was just as bad as the
first one.)
|
|
|
|
|
| |
clamping maxwpx/maxhpx crops the image starting from the canvas
corner, not the image corner
|
|
|
|
| |
only use sixelMaxWidth/sixelMaxHeight for sixel
|
|
|
|
|
| |
This fixes a bug where cloning buffers with images would crash the
browser.
|
|
|
|
|
|
|
|
| |
The status code & headers are no longer guaranteed to be sent right
after res/outputId, so read them asynchronously instead.
(This is pretty much the same code as the buffer connection handler in
pager. Hopefully we can merge the two at some point.)
|
|
|
|
| |
these are already defined on Window
|
|
|
|
|
|
| |
Merge timeout & interval code paths.
This fixes clearTimeout not clearing intervals.
|
|
|
|
|
|
| |
* add sixel max width/height query
* add cell size query (it's more accurate than dividing window size when
you change xterm font size)
|
|
|
|
| |
and enable it by default.
|
|
|
|
|
|
|
|
| |
It seems registerHandle/unregister doesn't accept cint as handles. Not
sure why it even works on 64-bit targets... (maybe some converter
weirdness?)
Seems best to explicitly cast it away.
|
| |
|
| |
|
|
|
|
|
|
| |
Fixes the bug where getting redirected to a buffer that the pager then
deleted (e.g. image display, site no longer available, etc.) would land
you in a buffer detached from the main tree.
|
|
|
|
|
| |
Merge "load config" with "fork loader", so that the loader process gets
forked one packet earlier.
|