Age | Commit message (Collapse) | Author |
|
|
|
`Gempub` opens and parses a Gempub archive and provides access to the contents in a common way.
|
|
It is conceivable that a newly created GmRequest gets the same memory location than the one just destroyed.
IssueID #148
|
|
Use MIME hooks to generate a Gempub cover page with a preloaded cover image.
This required applying MIME filtering to "file://" requests as well.
Todo: More cleanup, add a gempub.c.
|
|
One is now able to view directory and ZIP archive contents using file URLs.
Directory contents are shown as a list of links, enabling previewing supported formats. A link to the parent directory is included at the top of the page.
ZIP archives behave like directories, except they also recognize "index.gmi" and "index.gemini" files and display them instead of the regular directory index (when viewing a directory inside a ZIP archive). This enables archiving a Gemini capsule and browsing it as a ZIP archive.
Added a preference to disable loading of index pages.
|
|
Allow a certificate for a higher-level domain to be verified against any subdomains, i.e., implicitly assume every certificate uses wildcards.
CA verification is still done separately, and OpenSSL does that strictly as before.
|
|
IssueID #192
|
|
IssueID #200
|
|
If the CA file/path are configured in preferences, trust CA verification
over manual TOFU checks.
|
|
IssueID #181
|
|
|
|
If no user-configured MIME hooks handle an Atom XML document, it will
be translated using a built-in filter hook.
Only Atom is supported.
IssueID #78
|
|
Lagrange will retain URL fragments when parsing gemtext, but will strip them when making requests or when a DocumentWidget's URL is set. This allows opening URLs with fragments in an external browser.
IssueID #128
|
|
A patch courtesy of John Cowan.
IssueID #106
|
|
Good old mutable vs. non-mutable argument confusion. The encoded return value was ignored (and leaked).
|
|
|
|
A simple way to export all or some of your bookmarks.
|
|
IssueID #73
|
|
But not "file" or "about".
|
|
To support Internationalized Domain Names, we need to encode domain names using Punycode.
IssueID #73
|
|
This time without a race.
IssueID #90
|
|
IssueID #90
|
|
|
|
|
|
This is a very powerful mechanism: translate the contents of any request to something else when the original MIME type matches a configured regexp.
The external hook command may still elect not to process the request.
|
|
Use a regexp to parse the received header. This is better for recognizing invalid headers, e.g., gemini://gemini.conman.org/test/torture/0039.
|
|
IssueID #61
|
|
Show all entries in a CAPCOM-like chronological list.
|
|
|
|
|
|
The most serious problem was that GmRequest's response body was being accessed while the TlsRequest thread was modifying it.
Now the response must always be locked before accessing elsewhere.
There were also inefficient data updates in the media players.
|
|
|
|
|
|
Asking for query text with item type 7. Enhanced ASCII art detection.
|
|
Needs more testing. Queries are not supported yet.
|
|
Todo: Move this code to a separate file.
|
|
|
|
|
|
No automatic timeouts to facilitate long connections.
The server can indicate closing of the connection via TLS or by closing the socket.
|
|
|
|
In some cases an empty <META> in the server response would cause GmResponse to treat the entire header as invalid.
Also, TlsRequest was not handling closing of the TLS/SSL connection if the socket still remained open. This caused GmRequest to wait until the timeout before it realized the full response had been received.
IssueID #22
|
|
There is now an error page shown when the TLS request fails for some reason.
Error page theming is also updated at the time when the error page is composed.
|
|
A new version of the binary serialization format that includes timestamps for GmResponse.
|
|
mpg123 is configured as an optional dependency. Works for full files currently.
|
|
Playback starts as soon as possible, so one can listen while streaming.
stb_vorbis.c needed a tiny tweak to not die on a file without (Ogg? Vorbis?) comments.
|
|
Audio players are displayed the same way as images. When playing, a decoder runs in a background thread producing samples suitable for output.
|
|
The banner appears on the left, if there is room in the margin. Also added a document timestamp in the bottom to see when the data was received.
|
|
|
|
|
|
Improved drop and drop event handling: multiple dropped files/URLs open in new tabs. The application registers gemini: as a handled URL scheme.
|