about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* layout: reimplement list items with out-of-flow markersbptato2025-03-275-36/+32
| | | | | | | | Instead of generating a separate container box for list items, just set the marker's display to an internal value that is treated specially. This fixes a bug where position: relative would not register the correct block as the positioned ancestor.
* newhttp: send connected directly after establishing connectionbptato2025-03-261-5/+5
|
* render: fix formatting generated for paddingbptato2025-03-251-29/+15
| | | | | | | | | | | | | | The old logic was badly copy pasted from the pass that did text formatting; accordingly, it was overly complex and did not work correctly. Now we just add a single formatting cell to override the last one if it exists. (Formatting cells go from x position -> next cell or line end, and padding implies that the line had ended before the starting position of our text.) I've left in a workaround to what I think is a bug. It may be related to cursorNextLink getting stuck at the line's end...
* bonus: update makefile, filei docsbptato2025-03-252-6/+5
|
* event: fix some refcounting bugsbptato2025-03-241-4/+10
| | | | | | | | * only free callback after setting it to undefined (just in case JS observes the free with WeakMap etc.) * do not directly call callback; QJS really doesn't seem to like it when it deletes itself with removeEventListener * fix a leak with handleEvent
* loader: do not crash on shareCachedItem with invalid source/target pidsbptato2025-03-241-3/+6
| | | | | This may happen if the buffer crashes while pager is trying to share its resources.
* newhttp: clean up state machine, fix a brotli bugbptato2025-03-241-152/+179
| | | | | | | | | The issue with brotli was that we were calling toOpenArray with a uint, and that doesn't really work in Nim (even though it looks like it does). So I've removed the circular buffer from brotli and made oqoff an int for tinfl (which unlike brotli actually needs a circular buffer).
* xmlhttprequest: fix open with credentialsbptato2025-03-234-17/+15
| | | | | * ignore username/password if undefined * do not throw on subsequent fetch with username/password
* env, client: fix fetch on Clientbptato2025-03-232-1/+7
|
* env: make MediaQueryList an EventTargetbptato2025-03-231-2/+3
|
* newhttp: add brotli supportbptato2025-03-222-4/+96
|
* newhttp: explicitly ignore trailersbptato2025-03-221-15/+35
| | | | | Others don't support them either. (Firefox claims to, but only really decodes Server-Timing for debugging.)
* lcgi_ssl: disable DHEbptato2025-03-221-1/+1
|
* cascade: map width/height for SVGbptato2025-03-211-4/+1
|
* Revert "csstree: improve intrinsic image sizing"bptato2025-03-214-35/+5
| | | | | | Never mind, it also broke some other things :( This reverts commit bc294d3284e0448b2f149ac6d905c8474508791d.
* csstree: improve intrinsic image sizingbptato2025-03-214-5/+35
| | | | | The algorithm itself is still fundamentally broken, but this at least prevents some cases of images becoming absurdly large.
* newhttp: drop libcurl dependencybptato2025-03-216-171/+243
| | | | Now it only does HTTP/1.1, with Connection: close.
* loader: fix some CGI header parsing bugsbptato2025-03-211-1/+6
|
* jsutils: add toJSValueConstArray, toJSValueConstOpenArraybptato2025-03-212-2/+9
|
* pager: remove unnecessary castbptato2025-03-211-1/+1
|
* Update libregexp/libunicode bindingsbptato2025-03-204-16/+20
| | | | Lack of cbool is a pain. I'm sticking with JS_BOOL for now.
* quickjs: remove JSValue comparison overloadbptato2025-03-201-2/+6
| | | | | | it doesn't really do what you would expect, better use JS_Is* functions (also, it broke 32-bit builds)
* bonus: add new http handler with tinflbptato2025-03-207-2/+1292
| | | | not much else is done yet, but it's a start
* Cast Pid to IntAlex2025-03-151-1/+1
|
* layout: eliminate pointless flex relayoutsbptato2025-03-151-5/+12
|
* layout: implement cross auto margins in flexbptato2025-03-144-21/+71
| | | | | Also removes the computation of underflow on the end margin for blocks; as far as I can tell, this was never used.
* loader, forkserver: launch CGI processes from fork serverbptato2025-03-145-113/+193
| | | | | | | | | | Well, it's not much prettier... but it will be useful for keep-alive. (Hopefully.) Also, loader could now be locked down capsicum/pledge/seccomp, but I'm not sure if there's a point. The biggest potential threat it faces is cross-contamination of handles, and no amount of syscall filtering is going to protect against that.
* forkserver: clean up, do not panic on forkBuffer failurebptato2025-03-142-59/+36
| | | | | | | | | I've removed the SIGINT trap because the fork server is now in a separate process group than the main process anyway. We'll see if this actually works... Also realized we weren't closing the fork server's control stream on fork; now we do.
* forkserver: simplify & improve process cleanupbptato2025-03-134-37/+10
| | | | | | | | | | Instead of trying to track child pids (which is wrong - a child may die at any time for whatever reason, so we could have ended up murdering some random process that took its place...), just setsid on forkserver start and send SIGTERM to the entire process group on termination. Also removed the loader pid from the FileLoader object, as it is no longer useful.
* cascade: also blockify inline-flex/(inline-)?grid itemsbptato2025-03-131-1/+1
|
* twtstr: normalize char constantsbptato2025-03-131-7/+7
|
* dom: fix cache-control whitespace handlingbptato2025-03-121-10/+9
|
* headers: hide table, always specify guardbptato2025-03-1210-87/+101
|
* Re-add JSValueConstbptato2025-03-1231-397/+461
| | | | | | | | | This time, I've also ported over the consistency check to prevent some ownership bugs. Unfortunately, the check is very limited, and it is still possible to double-free or leak JSValues. I think it would be possible to make coverage 100%, but only with ARC...
* Update QuickJS-NG to 0.9.0bptato2025-03-1114-3900/+3911
|
* javascript: simplify a bitbptato2025-03-111-6/+3
|
* layout: small cleanupbptato2025-03-111-11/+9
|
* layout: shim grid as flow-rootbptato2025-03-113-6/+20
| | | | | | | | | | Pros: basic display on pages that depend on grid being implemented to display anything at all. Cons: breaks pages that have a fallback layout for UAs that can't do grid. (In practice, such pages must be rare - CSS for layout is painful enough that nobody in their right mind will spend time on implementing a fallback layout for the same DOM.)
* curl: fix build on OS Xbptato2025-03-101-4/+2
| | | | | | (also removed unused windows check) ref. https://todo.sr.ht/~bptato/chawan/50
* ua.css: center thbptato2025-03-091-1/+6
| | | | | | The standard specifies counter-intuitive behavior dependent on non-standard CSS. Lacking evidence that this is needed, we ignore it.
* layout: revert marginBottom removalbptato2025-03-082-26/+15
| | | | | | It made cached layout inconsistent with uncached layout. (I'm not sure if this is actually observable; either way, it's a bad idea to rely on this.)
* loader: remove unset from client closebptato2025-03-081-1/+1
| | | | it worked somehow, but it's wrong...
* loader: refactor handle registration, fix a cache bugbptato2025-03-071-74/+63
| | | | | | | | | Previously, the code just called put and unset on handles in situations where it seemed necessary, but this has become unmanageable. Now, put is called as soon as a handle receives its stream, and unset is called whenever said handle (and thereby its stream) is closed. This fixes a bug in loadCGI with an rbtCache body.
* tojs: misc cleanupbptato2025-03-077-62/+115
| | | | | | | * optimize toJS set * change defineProperty wrappers to return an enum If we're going to wrap defineProperty, then let's do it properly.
* layout: fix bottom margin handling for root blocksbptato2025-03-075-30/+46
| | | | | | I've also refactored the code a bit, so it's both easier to understand and more efficient. (In particular, BlockLayoutState no longer has to store marginBottom.)
* Update docsbptato2025-03-072-6/+0
|
* promise: fix a refcounting bugbptato2025-03-061-5/+2
| | | | + simplify argv -> seq conversion
* history, cookie: fsync before renamebptato2025-03-063-7/+13
| | | | | In theory, it is possible for rename to succeed before the buffers are flushed, and then we lose data.
* javascript: remove ishtmldda from registerTypebptato2025-03-065-14/+12
| | | | | | | It's simpler and more efficient to handle this in the DOM. (The interface was also confusing/broken in that it only really accepted one htmldda class.)
* javascript: generate gc_mark functionsbptato2025-03-061-11/+41
| | | | | Not having them is a bad omen; I think the only reason this hasn't caused an issue yet is that only a few types embed JSValues.