Good first contributions
If you want to contribute to offpunk, here are a list of tasks which can probably be done with a little work but do not require to touch the whole code base.
If you are interested, please announce yourself on the offpunk-devel mailing list.
Bugs
-- disable-http is not working
images_mode None seems to be ignored
cookies are not working anymore with https
New features that are self-contained
Cache Trimming (Good first-contribution - medium level)
We need work on a model that keep the cache within certain limit by removing older, unaccessed elements which are not linked to anything in lists.
This is a good first-contribution issue as the cache-trimming script should be completely independent and interact little with existing code.
You need to like playing with file systems properties.
UTF-8 in URL:
See info on the bug tracker:
Git support in netcache (Important features - medium level)
Netcache only.
Allows netcache to have git support. That way, the git repository of ftr-site-config could be automatically downloaded and updated.
Using etree instead of bs4
Ansicat only.
Ansicat could ditch BS4 in favour of lxml. That would allows one less dependency.
Remove dependency to python-cryptography
Python-cryptography is only used to handle some properties of Gemini certificates. There should be a way to remove this dependency completely.
Features and bug-fixing that require Heavy refactoring
Those tasks are hard and requires touching the code everywhere.
Refactoring of redirections and errors code
bug #34: redirections are not kept while offline
https://todo.sr.ht/~lioploum/offpunk/34
bug #30: Netcache: gemini status 4 and 5 should not emit a full traceback
https://todo.sr.ht/~lioploum/offpunk/30
bug #3: Error pages are stored in the cache
https://todo.sr.ht/~lioploum/offpunk/3
The way I see it would be to have a folder in the cache for "return codes". : cache/offpunk/codes/https/ploum.net/
If an URL is downloaded successfully, codes for that URL are removed from the cache.
If a special code is returned, it is saved in the codecache.
When browsing offline, netcache would then check if there’s a codecache which is more recent than the content cache. If yes, this code cache is used (but content cache could still be displayed if available).
Get rid of readability and bs4
This is an heavy task but there are too many problems with readability. The idea would be to implement our own readability in unmerdify then to remove bs4 dependency by using lxml instead of bs4. Less dependencies, faster loading time, faster rendering.
This requires first netcache-git and ansicat-etree (see above)
Mastodon support
Ansicat-mastodon
Mastodon requires JS. But unmerdify/ansicat should be smart enough to recognize a Mastodon page and use Mastodon API to load its content.
Mastodon-subscription
Later, support for Mastodon account could be added in order to "subscribe" to your notifications, read them and reply in Offpunk