Keep two changes to the catalogue made at once from undoing each other (#153)
Each change to the catalogue or the server settings stored the whole thing from a copy it took earlier, and nothing kept two from overlapping. Adding a feed copied it first and then spent up to a minute finding and reading the feed, so another person's new feed, an unsubscribe, an admin's settings, or the scan's own changes (a moved feed's address, a category) made in that minute were stored over when it finished, with no error. A feed dropped that way left its subscriber's list. Every change now takes its copy through Ctx::edit_cfg, which holds a lock until store_cfg keeps it, and store_cfg takes nothing else, so no writer can skip it. Adding a feed takes its copy once it has found the feed, and before the duplicate check, so two people adding one feed add it once. reload takes the lock too. `ipx add`, `rm` and `import`, in a process of their own, are outside it, as the comment on the lock says. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
### Fixed
|
||||
|
||||
- Changes to the feed list made at the same moment, such as two people adding feeds, or a feed added while the server settings change, no longer undo one another.
|
||||
- A download that stops partway is given up after two minutes without data, instead of holding up every scan and download until a restart.
|
||||
- On a phone, the closed feed list no longer shades the left edge of the page with its shadow.
|
||||
- On an iPhone, the top bar's colour runs all the way up behind the status bar and the Dynamic Island, with no band of another colour above it.
|
||||
|
||||
Reference in New Issue
Block a user