🎯 Fixed: follows were landing, and the app said "Followed 0 of 100"
- The follow was going through on Instagram while the run reported nothing had happened. People re-ran lists that had already been worked, against accounts they had already followed.
- Instagram also rotates the internal id these requests use. The app now reads the current one out of the page each run instead of trusting a value frozen at build time, so a rotation no longer quietly breaks following until the next release.
- A deleted or renamed account used to be read as a rate limit, which could deadlock an entire run. It is now recognised for what it is and the run carries on.
📍 Fixed: your place in a list was being lost
- The Iteration box wrote empty entries, so a list that should have resumed where it stopped started again from the first profile.
- The unfollow side had a matching problem that could lose the record of what it had already done.
- Both now keep an accurate record, so resuming a list picks up where it actually left off.
🚦 Fixed: how a refusal from Instagram is handled
- A single refused profile used to stop the whole run. It now steps over that one and keeps going.
- When Instagram refuses repeatedly the app waits instead of pushing, rather than firing five attempts in twenty one seconds and making things worse.
- The wording changed too. The app no longer tells you a refusal is definitely not about your account, because sometimes it is, and saying otherwise sent people looking in the wrong place.
📋 Improved: scraped lists you can actually use
- A scraped list no longer needs a thousand boxes ticked by hand before you can do anything with it.
- Follower lists gained a "Not found" column, and the app remembers a dead handle for thirty days instead of retrying it on every run.
- A scrape can be stopped while it is running.
🪟 Fixed: empty browser windows
- Tools that only talk to Instagram's API used to open a browser window with nothing in it. They no longer do.
🔎 Behind the scenes
- Several of the automated checks meant to catch this class of problem were found unable to fail at all, including on the most destructive action in the app. Each was tested by deliberately breaking the thing it guards, and each now catches it.