This release restructures FediFetcher internally. If I've done this correctly, then very little will change for you: python find_posts.py works exactly as before, as do the container, the GitHub Action and every configuration option. There are however three breaking changes that might catch you out:
Breaking Changes
1. FediFetcher now needs Python 3.11 or newer
Previously 3.10 was fine.
Check whether you are affected
If you run FediFetcher as a GitHub Action: the workflow now requests Python 3.11, and that change should come along when you sync your fork. But if you edited your own copy of .github/workflows/get_context.yml, you may need to change this line in your workflow after you have synced your fork:
python-version: '3.11' # was '3.10'If you run FediFetcher from cron or a shell script (including systemd file, Windows Scheduled Task etc): Check your current version (python --version or python3 --version). If this is lower than 3.11 install a newer Python, or use the container image, which already bundles 3.14.
If you run FediFetcher from the container image: Nothing to do. The image now includes 3.14.
2. Command-line flags now beat the config file
FediFetcher reads settings from three places. The order of precedence has been corrected to what you would expect:
command line > environment variables > config file > defaults
Previously the config file overrode the command line, so this quietly ignored the flag:
python find_posts.py -c config.json --home-timeline-length=200Check whether you are affected
If you pass flags and a config file, and both set the same option, the flag now wins. Check any wrapper scripts that do both.
3. Options that switch things off now work
--from-lists=0, --backfill-with-context=0 and --backfill-mentioned-users=0 used to enable the relevant behaviour. Any value at all was treated as "on". It now means off, as documented.
All three accept 0/1, true/false, yes/no and on/off.
Check whether you are affected
Check your configuration: If you had any of these set to 0, expecting them to be off, they have been running all along and will now stop. If you actually want them on, set it to 1.
Values that are neither true nor false are now rejected with a clear error rather than being silently treated as "on".
Other changes you may notice
A few minor changes that shouldn't impact anything but listed so you won't be alarmed if you notice them:
- A failed run no longer throws away its work. Previously, if a run failed part way through (a network problem, an instance timing out, etc) everything it had fetched that run was discarded, and the next run started over. Progress is now saved whether the run succeeds or fails.
- The instance blocklist is now fully enforced,
--instance-blocklistwas not being applied when FediFetcher followed a redirect to work out where a post lived. This has been fixed. - A malformed value in any source (command line, environment variable or config file) now reports which option was wrong. Previously only the command line was checked, and a bad
FF_*environment variable failed with an unhelpful stack trace. - A new
state_versionfile appears. It records the format of the other files so future upgrades can migrate them. A directory without one is treated as version 1. recent_contextgets much smaller. It used to store an entire copy of every post it had checked; it now keeps only the two timestamps it actually uses.FF_USERnow works as environment variable. Previously this setting produced an error.
Full Changelog
- Update user description to indicate it's optional by @nanos in #219
- allow using FF_USER for the user setting by @calmh in #217
- Restructure into a package by @nanos in #220
- Update dependencies & configure dependabot by @nanos in #222
- Bump the python-packages group with 2 updates by @dependabot[bot] in #223
- Bump the github-actions group with 8 updates by @dependabot[bot] in #224
- test on python 3.14 as well by @nanos in #225
- run the container on python 3.14 by @nanos in #226
New Contributors
Update instructions
Before upgrading you should check whether you are affected by any of the breaking changes above:
- Confirm your Python version is 3.11+.
- Review whether you are defining the same setting as environment variable, CLI flag, and/or in the config file, and review the precedence changes.
- Review your use of
--from-lists=0,--backfill-with-context=0and--backfill-mentioned-users=0as their behaviour has changed.
Otherwise, please see the Updating FediFetcher documentation