about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
...
* 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.
* pager: flush console after logging resultbptato2025-03-051-0/+1
|
* loader: asyncify inputhandle status responsesbptato2025-03-052-143/+175
| | | | | | I've also removed the rsBeforeStatus error check from iclose. I'm not sure if it's still needed at all, but if it is, then it was implemented in the wrong place.
* dynstream: close extraneous fds receivedbptato2025-03-051-2/+9
|
* xhr: add withCredentials, getAllResponseHeadersbptato2025-03-051-4/+22
| | | | | withCredentials doesn't really do anything yet, but will be needed if we do cors fetch/XHR
* blob: default value for lastModified, misc cleanupbptato2025-03-052-24/+32
| | | | Now only WebFile can have an fd.
* blob: work around crash on nightly compilerbptato2025-03-041-1/+1
| | | | | Apparently it's a bug in the optimizer. TODO: reduce & report it
* dom: implement some interfacesbptato2025-03-041-1/+43
|
* layout: adjust table cell height to fill rowsbptato2025-03-033-12/+16
| | | | | | Achieved by generating an anonymous flow root child for the contents and positioning that. (Not the cell contents directly - that wouldn't work because of inline child boxes.)
* loader: fix crash on iclose if client is deadbptato2025-03-021-3/+6
|
* buffer, dom: fix stylesheet leaksbptato2025-03-022-4/+1
|
* loader: merge status and header packetsbptato2025-03-014-47/+23
| | | | | | | We sent the two packets at the same time anyway. (Status could have been sent earlier in some cases, but there is no point - it's unused until after all headers have been received.)
* Refactor bufreader, bufwriterbptato2025-03-0118-492/+468
| | | | | This adds a runtime check to packet readers to ensure that all fds have been read, and switches to seqs for packet writers.
* nc: remove redundant quitbptato2025-03-011-1/+0
|
* dynstream, console: remove DynFileStreambptato2025-02-267-70/+45
| | | | | Conflating buffered streams with non-buffered streams is generally a bad idea.
* dynstream: remove exceptionsbptato2025-02-2633-503/+501
| | | | | | | | | | | | | Now we just pass down the value of n and check errno, plus readDataLoop/writeDataLoop returns a bool indicating whether it failed. For now this seems to work OK, but maybe I'll add a better abstraction in the future. EOFError is still used for handling failed packets; this is brittle, and should be replaced once we have a proper buffering mechanism for them. (That will also let us kill BufStream.) Unrelated: this also fixes a bug in buffer with cacheId.
* loader: do not refcount ctxbptato2025-02-251-96/+94
|
* tempfile: merge into pager/loaderbptato2025-02-253-24/+23
| | | | | | | | and throw out the conflict resolution logic; it doesn't matter much if we override an old cache file, as it should have been cleaned up anyway. I've also replaced dirExists + createDir with a single mkdir at call sites. If it fails, so be it.
* dom: add HTMLTimeElement, fix HTMLDetailsElement#openbptato2025-02-212-0/+10
|
* Fix a testbptato2025-02-211-0/+2
|
* pager: inherit history flag on reloadbptato2025-02-211-1/+2
|
* pager: add API to set search regexbptato2025-02-201-4/+18
|
* Update docsbptato2025-02-205-256/+315
|
* javascript: fix finalizers with non-RootRef derived objectsbptato2025-02-203-7/+11
| | | | | | We were calling the wrong getTypePtr. Also, fix some manual tests.
* env: shim pushStatebptato2025-02-201-0/+8
| | | | not standard-compliant, but better than nothing
* performance: stub getEntries*bptato2025-02-201-0/+12
|
* color: small cleanupbptato2025-02-201-11/+9
|
* select: do not reverse video on cursorbptato2025-02-201-0/+3
| | | | it looks ugly
* term: use so, se for reverse videobptato2025-02-201-3/+3
|
* dom: add HTMLOptionsCollection setterbptato2025-02-201-0/+20
|
* render: propagate offset to positioned block child before clip box inheritancebptato2025-02-194-8/+16
| | | | also, fix a typo
* uri2html: uri-decode entriesbptato2025-02-191-1/+2
|
* dom: do not reflect name on all elementsbptato2025-02-192-3/+19
|
* fromjs, javascript: optimize out class name registrybptato2025-02-199-66/+55
| | | | | | | | Instead of hashing the class name for isInstanceOf, we now just reuse the Nim type pointer -> JSClassID map, which should be more efficient. This removes getClass and hasClass; these can be replaced by just reusing the class ID returned from registerType.