Skip to content

refactor: separate feed retrieval from parsing#278

Merged
chhoumann merged 1 commit into
masterfrom
refactor/separate-feed-retrieval
Jul 10, 2026
Merged

refactor: separate feed retrieval from parsing#278
chhoumann merged 1 commit into
masterfrom
refactor/separate-feed-retrieval

Conversation

@chhoumann

Copy link
Copy Markdown
Owner

Summary

  • separate feed-document retrieval from pure XML parsing
  • keep the current Obsidian requestUrl source explicitly labeled as a legacy compatibility path
  • preserve feed, episode, and GUID provenance in transient parser models so future capability issuance cannot confuse subscription, site, artwork, stream, item-link, or chapter targets
  • isolate existing feed-artwork and missing-item-link fallbacks inside the legacy FeedParser projection
  • preserve the matching cached-feed path and its single-request behavior
  • reject parser-generated malformed XML without rejecting valid feed extension elements named parsererror

This does not claim that requestUrl is pinned or capability-secured. It remains the current behavior-compatible source until a platform adapter can satisfy the shipped DNS, peer, TLS, redirect, cancellation, and close contract.

Verification

  • npm run lint
  • npm run format:check
  • npm run typecheck
  • npm run build
  • npm run test - 88 files, 1,458 tests
  • npm run check:a11y - 0 errors and 0 warnings
  • uv run --with-requirements docs/requirements.txt mkdocs build -f docs/mkdocs.yml -d site
  • focused parser suite - 2 files, 34 tests
  • three independent read-only hostile reviews - no remaining P1 or P2 findings

Real Obsidian proof

Verified in Obsidian 1.12.7 using the isolated worktree vault:

  • loaded a localhost RSS fixture through the real Podcast view
  • accepted a valid feed containing a parsererror extension and cached the expected episode with its legacy URL fallback and parsed 90-second duration
  • reproduced Chromium's malformed-XML recovery shape, updated the detector to recognize its direct-root XHTML parser error, and verified the malformed feed was fetched but never cached
  • captured no Obsidian runtime errors
  • cleared the isolated settings/cache and stopped the private Obsidian process plus fixture server

Release and migration impact

  • no persisted-schema change
  • no user-visible behavior change except explicit malformed-XML rejection
  • no release version expected from this refactor: commit

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying podnotes with  Cloudflare Pages  Cloudflare Pages

Latest commit: 7ecbc1e
Status: ✅  Deploy successful!
Preview URL: https://65c9ec53.podnotes.pages.dev
Branch Preview URL: https://refactor-separate-feed-retri.podnotes.pages.dev

View logs

@chhoumann chhoumann marked this pull request as ready for review July 10, 2026 16:34
@chhoumann chhoumann merged commit c50d01e into master Jul 10, 2026
5 checks passed
@chhoumann chhoumann deleted the refactor/separate-feed-retrieval branch July 10, 2026 16:35
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