I’ve just released v0.7 of Grabit, my little command line app for saving full-text copies of webpages.
It brings support for saving Reddit posts (I really wanted to do this), and custom user agents (I didn’t really want to do this, but here we are). It also prettifies the markdown, to make sure it looks just the way it should, nobody likes 10 blank rows before every bulletpoint.
Using o1 to automate the boring parts
One more interesting thing is that I’m experimenting with using an LLM to help me keep the README in sync with the new changes, and in general help me automate the boring parts of releasing a new version.
For this I’m using a combination of Continue.dev hooked up to o1 (courtesy of Azure OpenAI).
I’m still working out the best flow here, but the gist of it is as follows
- Get the git log of changes from the previous version up until now:
git log v<previous_version>..HEAD --pretty=format:"%h %ad | %s%d [%an]" --date=short | pbcopy
Which results in the commits below, assuming previous_version is 0.6.1
:
912196d 2025-01-29 | docs: readme update (HEAD -> main, tag: v0.7.0, origin/main, origin/dev, dev) [Vlad Iliescu]
7f064a2 2025-01-29 | feat: allow setting custom user agents [Vlad Iliescu]
1b40c4a 2025-01-29 | style: fixed a few pyright errors [Vlad Iliescu]
050fe1d 2025-01-13 | build: add ruff settings [Vlad Iliescu]
cb17822 2025-01-13 | docs: better formatting for the version & license info [Vlad Iliescu]
202966c 2025-01-13 | fix: don't save the outputs as hidden (dot) files [Vlad Iliescu]
66265f5 2025-01-13 | docs: improve license display [Vlad Iliescu]
a711d10 2025-01-13 | refactor: remove extra heading formatting since we'll be running mdformat on the results anyway [Vlad Iliescu]
db7b007 2025-01-13 | feat: support reddit link posts [Vlad Iliescu]
701572a 2025-01-13 | feat: support saving Reddit posts (+ the necessary refactoring) [Vlad Iliescu]
69e81bc 2025-01-07 | style: make it easy to bump the version [Vlad Iliescu]
fcc11b2 2025-01-07 | fix: process page with readabilipy if readability.js fails [Vlad Iliescu]
07c6bc5 2025-01-07 | docs: add a version option [Vlad Iliescu]
- Then, feed this to o1 with the following prompt (note how I’m adding grabit.py and README.md to the LLM’s context as well, to me that’s Continue’s biggest strength)
@grabit.py @readme.md
Help me update the readme file with the latest updates in
grabit.py
. Remember to split the release notes into new features and fixes. If it helps, here’s the git log:912196d 2025-01-29 | docs: readme update (HEAD -> main, tag: v0.7.0, origin/main, origin/dev, dev) [Vlad Iliescu] 7f064a2 2025-01-29 | feat: allow setting custom user agents [Vlad Iliescu] ...
The idea here is that the LLM will be helped by seeing the docs, the implementation (which luckily is small enough, for now), with some extra help given by the git log to make sense of what’s going on.
That being said, I generally still want (& need) to manually check all proposed changes and release notes, to make sure it’s not including trivial fixes, or messing up anything in the README.
Alternatives
In the future, I’m planning to experiment with something Release It!, as it sounds quite promising. I do like the ability to tweak things, including the LLM & its system prompts, so we’ll have to see if it fits the bill.