Hey viq, thanks for the detailed report. I tracked down the root causes and have fixes for everything:
1. Case-sensitive folder creation bug - You’re right that creating topic1 when Topic1 already existed caused problems. There was an inconsistency where folder creation used a case-sensitive check (allowing both to exist), but adding feeds to folders used a case-insensitive check (so feeds targeted at topic1 silently went into Topic1). Fixed so folder creation is also case-insensitive, preventing duplicate folders that differ only in case.
2. Deleting feeds affected wrong folders - The folder matching in delete_feed (and rename/delete folder operations) used Python’s substring matching instead of exact matching. This meant a folder named “News” could incorrectly match “Tech News”. Fixed to use exact folder name matching. Since your feeds were merged into Topic1 by the case bug, when you deleted them there, the subscription was removed entirely (the feed only existed in one folder despite appearing to be in two).
3. Training rules not saving - Folder-scoped and global-scoped training require the Premium Archive tier. On a self-hosted instance, you may need to set is_archive=True on your user profile. Feed-scoped training (the default) should work regardless. You can set it via the Django shell:
from apps.profile.models import Profile
p = Profile.objects.get(user__username=‘your_username’)
p.is_archive = True
p.save()
To answer your other questions: training applies to new stories as they come in, and per-folder training only affects the river view for that specific folder.
These fixes are in ac1cfb2b9b7c98c81878be3c60405814d8634801, which I just pushed to main.