about summary refs log tree commit diff stats
path: root/doc
Commit message (Collapse)AuthorAgeFilesLines
* Update docsbptato2025-04-061-1/+1
|
* Update docsbptato2025-04-032-16/+43
|
* csstree: add ::marker pseudo elementbptato2025-04-021-0/+3
|
* config: fix semicolon handling in user-style importbptato2025-04-012-4/+4
| | | | | ok so apparently you can leave out the semicolon, but *only* if the at rule is at EOF
* config: add user-style, deprecate [css] and stylesheetbptato2025-04-012-26/+63
| | | | | I'm not 100% content with this syntax either, but it's a significant improvement over the previous solution.
* loader, forkserver: launch CGI processes from fork serverbptato2025-03-141-20/+20
| | | | | | | | | | 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.
* Update docsbptato2025-03-071-4/+0
|
* Update docsbptato2025-02-204-70/+118
|
* Add mark-links featurebptato2025-02-182-0/+18
| | | | ref. https://todo.sr.ht/~bptato/chawan/43
* layout: implement negative z-indexbptato2025-02-181-1/+1
| | | | Ugly, but works. I think.
* buffer: wait for scripts in headless modebptato2025-02-151-3/+11
| | | | | Dump mode remains the same, except now it can be controlled in config.toml as well.
* csstree, cssvalues: implement counter()bptato2025-02-131-1/+3
|
* Update docsbptato2025-02-112-78/+61
|
* layout: round out small list-item margins and paddingbptato2025-02-041-3/+4
| | | | | They can be especially distracting when the rounding error fluctuates between items.
* Update docsbptato2025-01-301-4/+4
|
* about: move to loaderbptato2025-01-301-25/+28
| | | | | This means we can now use about:downloads for downloads. Plus it shaves off some ks from the distribution.
* Update docsbptato2025-01-274-23/+187
|
* Update docsbptato2025-01-261-2/+2
|
* Update docs, makefilebptato2025-01-231-7/+86
|
* container, config.toml: add | commandbptato2025-01-192-0/+16
| | | | | | Particularly useful when debugging minified JS. vi always wraps; the centering behavior is from vim.
* Remove submodulesbptato2025-01-181-2/+2
| | | | | I got tired of submodules. This commit doesn't build; subtrees incoming...
* Update docsbptato2025-01-164-25/+33
|
* cascade: basic CSS variable supportbptato2025-01-161-1/+1
| | | | | | | | | | | and once again, there was light... Well, it barely works, but it's enough to get colors back on most sites. Nested variables aren't supported for now, and shorthand expansion only "works" for `background' (it's a hack). Props to the W3C for introducing the C preprocessor to CSS - I was starting to confuse it with JSSS after calc().
* Update docsbptato2025-01-1511-11/+242
|
* Update manpagesbptato2025-01-159-9/+10
|
* config: switch to camel casebptato2025-01-132-6/+3
| | | | | | We already need a camel -> kebab converter anyway. Unfortunately this also changes JS binding names, so it's a breaking change. Oh well.
* buffer: remove server socketbptato2025-01-091-1/+2
| | | | | | | | | | | Now we just pass through a socket created in pager. This removes the need for a socket directory, and strengthens the buffer sandbox slightly. I've kept the ServerSocket code, because I want to add some form of RPC and communication between separate instances in the future. However, I don't expect this to be handled outside the main process, so I've removed the Capsicum-specific connectat/bindat code.
* loader: use per-process control socketsbptato2025-01-081-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | Previously, each message (load, resume, passFd, etc.) would open a new connection to loader's UNIX socket, and assumed the loader was dead when the loader did not respond (ECONNREFUSED). As it turns out, this model was hopelessly broken: POSIX does not specify when a UNIX socket can refuse connections, so while it happened to work on Linux (which just blocks if it can't accept right now), FreeBSD would randomly refuse connections whenever its listen queue was full. Instead, we now take a socketpair() from the loader in addClient, and pass on one half to the client (the other half stays in loader); this is the control stream, and all messages from the specific client are sent through it. If a message includes a new stream (e.g. lcLoad), then it sends a new socketpair through the control stream. Aside from not being completely broken (and being marginally more efficient), this arrangement has several other benefits: it removes the need for authentication, almost removes the need for sockdir (now only buffers use it), and will make it easier to add async message processing in the future.
* Update manpagesbptato2025-01-074-115/+345
|
* layout: cache sub-layoutsbptato2025-01-021-0/+4
| | | | | | | | Only root blocks for now; for non-roots, you'd have to cache exclusions too, and that is a fair bit harder. It isn't very noticable as an optimization, but it's a good first step towards a cached layout.
* Add built-in image viewerbptato2024-12-301-0/+7
| | | | | | It works by emitting a base64 URI inside an img tag. Very inefficient, but useful if no external viewer is set up (e.g. over SSH).
* Update docsbptato2024-12-291-0/+22
|
* cookie: add persistent cookies, misc refactoring/fixesbptato2024-12-291-5/+21
| | | | | | | | | | | | | Mostly compatible with other browsers/tools that follow the Netscape/curl format. Cookie jars are represented by prepending "jar@" to the host part, but *only* if the target jar is different than the domain. Hopefully, other software at least does not choke on this convention. (At least curl seems to simply ignore the entries.) Also, I've moved cookies.nim to config so that code for local files parsed at startup remains in one place.
* config: clean up redundant CHA_DIR, update CGI docsbptato2024-12-292-25/+6
| | | | | "No CGI dir configured" is no longer a common case, so it's OK to just return "CGI file not found".
* cookie: remove broken third-party-cookie optionbptato2024-12-271-14/+2
| | | | | | | | | Looking at it closer, this never actually did what it advertised to do. It only affected first-party cookies from subdomains, but that has been fixed; third-party cookies were never supported in the first place. (In fact, even first-party cookies are still skipped unless directly received on navigation. This should probably be fixed.)
* CHA_CONFIG_DIR -> CHA_DIRbptato2024-12-273-7/+9
| | | | | | | It isn't really limited to config. It just happens to be in XDG_CONFIG_HOME because XDG basedirs suck. (W3M_DIR works similarly.)
* Update docsbptato2024-12-272-93/+145
| | | | | Licenses now ordered by "explicitly PD", "PD-equivalent" and "not PD-equivalent".
* dom: add focus()bptato2024-12-271-2/+6
| | | | Respects autofocus.
* buffer: add "app" scripting modebptato2024-12-261-3/+9
| | | | | | | | | | For APIs that cannot be implemented in a privacy-friendly manner. As a start, I've added accurate screen size queries; getComputedStyle, getBoundingClientRect, etc. should follow. (We have a harmless getComputedStyle already, but it's broken.) Probably, things like JS-based scroll belong in here too, but I'm not sure yet. (Perhaps autofocus should be reused instead?)
* Add historybptato2024-12-171-0/+28
| | | | | It's still missing a "color visited links" feature, but it's better than nothing.
* img: add nanosvgbptato2024-12-191-0/+1
| | | | | | | | | | | | | | | | | | Only for SVG in image tags for now. Plus it comes with NanoSVG's limitations, i.e. no text. Still, better than nothing. I've gone through open tickets and PRs at upstream to check for known security issues. As a recurring theme I found that parseTransform fails to check the result of parseTransformArgs, so I fixed and refactored that part. (Probably not a security issue, but still UB.) Also, I've added a fix for an OOB read in parseColorRGB. Future directions: * replace nanosvgrast with our own rasterizer in canvas (will have to be extended somewhat...) * add text rendering (with unifont, which canvas already includes)
* default(T) -> T.default, add some strict defsbptato2024-12-171-1/+1
|
* chabookmark fixes & improvementsbptato2024-12-151-0/+19
| | | | | | | | * correct action on M-b * add external.bookmark option * move openFileExpand functionality into unquote * add menu items * update docs
* client: document readFile, writeFile; add getenv, setenvbptato2024-12-141-0/+30
| | | | | | | | Both are quite useful. readFile and writeFile got a small makeover in error handling; in particular, readFile now returns null instead of the empty string when the file is missing and writeFile throws a TypeError on I/O errors.
* cookie: allow first-party cookies for subdomains with cookie sharingbptato2024-12-141-5/+6
| | | | | | | | Cookie jar separation is already enough to mitigate tracking issues in this case. (Also, the fact that third-party-cookie controlled this made things even more confusing.) Also, add the previously missing host-only flag.
* pager, mailcap: misc fixes, add prompt for global mailcapbptato2024-12-114-132/+127
| | | | | | | | | | | | | | | | | | | | | | | | In the past, Chawan would read global mailcap (/etc/mailcap, ...) too, but every now and then that would run entries that I didn't even know existed and definitely didn't intend to run. So I changed it to only use ~/.mailcap, but this meant users now had to add mailcap entries for every single mime type. At some point I also changed application/octet-stream to always save to disk, which is usually nice except when a text file is misrecognized as binary. Often times I just want to decide myself what to do. So now there are two layers. First, the global mailcap files (path as per RFC) prompt before executing. Then there is ~/.chawan/auto.mailcap (or ~/.config/chawan/auto.mailcap) which runs entries automatically. If you press shift before selecting an option in the prompt, the corresponding entry gets copied to auto.mailcap. It's also possible to type a new entry on the fly. Overall I think it's quite convenient. One unfortunate side effect is that existing users will have to migrate their entries to auto.mailcap, or redefine external.auto-mailcap to e.g. ~/.mailcap, but this seems acceptable.
* Update docsbptato2024-12-103-4/+22
|
* Update docs, w3m.tomlbptato2024-12-091-1/+1
|
* Update docsbptato2024-12-081-0/+17
|
* Fix casingbptato2024-12-051-2/+2
|