Skip to content

fix: retain feeds from nested OPML folders - #1345

Open
pengusto wants to merge 2 commits into
ReadYouApp:mainfrom
pengusto:fix/nested-opml-import
Open

pengusto wants to merge 2 commits into
ReadYouApp:mainfrom
pengusto:fix/nested-opml-import

Conversation

@pengusto

@pengusto pengusto commented Oct 29, 2026 •

Copy link
Copy Markdown

Summary

Nested OPML folders currently lose their descendant feeds. Import every descendant in document order into the existing outer group, preserving feed attributes and the flat group model.

 outer folder
   direct feed
-  nested folder → skipped
+  nested folder → visit its feeds and descendants

Addresses #1143 by retaining descendant feeds while preserving the existing flat group model.

Evidence

  • Before: two new nested/default-group regressions fail; the official 0.16.2 APK imports 1/3 fixture feeds.
    After: all 13 app unit tests pass, including traversal order, empty folders and all three per-feed flags; an installed-APK backport imports 3/3.
  • Validation: ./gradlew :app:testGithubDebugUnitTest on JBR 21 / Android SDK 36. No production settings or schema changes.
  • APK captures are the official release payload versus its Penguin backport exported by Morphe Manager 2.2.0, not rebuilt current-main APKs. Raw fixture, XML, hashes and provenance.
Before After
Before: only Reader releases imported After: all three nested feeds imported

An optional selectable Penguin backport provides the same import behavior for the pinned official APK while this PR is reviewed; it is published in Penguin v1.4.0. AI-assisted implementation and test preparation; results above were executed locally.

Merge Danger

Door: two-way. Blast Radius: OPML imports.

Newly imported descendant feeds remain saved if code is reverted. Nested folders are flattened into their outer group; this does not introduce a nested-folder UI or database migration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant