- Use linked data to store relations between pages in an RDF graph
- Better support for proxies
- Configurable proxy & proxy chains for rules
- Add an OC resolver to generate a random user agent
- Add an OC resolver to generate a custom random user agent with specific params (OS, software, software engine ...)
- Configurable HTTP request headers
- Use a randomly generated HTTP user agent for every request
- AppImage: use niess/python-appimage 3.12.3
- Custom URL mapping routes
- Use a URL routes mapper for the server's endpoints
- Output the server's access URL when starting
- Make it possible to use glob-style patterns in includes
- Show the cache volume and limits in the cache status page
- Fix the crawler's URL rewriting code when the listening port != 1965
- Purge feedparser's 'bozo_exception' before caching a feed
- Proxy access restriction by IP address/subnet
- Persist the access log in the diskcache (optional)
- Show gemtext links at the top of the page to cache the converted webpage (for a certain period of time or forever)
- Server route to list cache entries
- CI: Use pytest-cov and freezegun for unit tests
- Command-line argument to generate a fresh config file: --config-gen
- Logging of requests as an access log in the gemtext format
- Access log server endpoint
- Feeds aggregator: make it possible to only show entries from a specific feed by passing its index in the URL query
- Proxy access restriction by using IP address ACLs
- Caching of web feeds (using etag and last-modified headers)
- New settings for the diskcache: eviction policy, size limit
- Make it possible to enable or disable certain feeds when sourcing a config file containing "feeds aggregator" rules
- Feeds aggregator: simplify the tinylog output
- AppImage: use python version 3.12.2 (niess/python-appimage)
- Use importlib.resources instead of pkg_resources
- Support for Atom/RSS feeds aggregation rules. The feeds defined in the rule are aggregated and converted to a single tinylog accessible via a gemini URL.
- Config files sourced via "include" can now receive parameters
- "only_linetypes" gemtext filter
- "uppercased" gemtext filter
- "puretext" rule
- Rules for "off-guardian.org"
- The "url_remove" filter can now also remove links based on the URL's title
- Support for including external config files
- Gemtext filters system
- Support custom gemini responses by defining the response attributes in the YAML config inside the URL rule
- Support for rendering webpages that use Javascript, by using pyppeteer (via the "requests-html" package)
- Add unit tests for proxy+server
- The "mode" setting can now be a comma-separated list of service modes
- Return PROXY_REQUEST_REFUSED when necessary
- Convert Atom/RSS feeds to gemtext (tinylogs)
- Proxy mode: route IPFS URLs through dweb.link
- Don't let aiohttp handle redirects so that we can notify the gemini browser of eventual redirections
- Add an option to run as a daemo
- Catch markdownify errors
- Add unit tests for both service modes
- Use setup.cfg
- Use omegaconf to merge cmd-line and config file settings