Add DeMu-style educational XML comments to generated feeds#79
Open
ChadFarrow wants to merge 22 commits into
Open
Add DeMu-style educational XML comments to generated feeds#79ChadFarrow wants to merge 22 commits into
ChadFarrow wants to merge 22 commits into
Conversation
Every tag in the channel and each item now has an inline XML comment explaining what it does and linking to the relevant Podcasting 2.0 spec. Mirrors the approach from the DeMu feed template (de-mu/demu-feed-template) so artists can open the raw XML and understand what each field means. Tag ordering already matched DeMu; this commit adds the annotations. All 134 tests pass. Co-Authored-By: Claude <claude@anthropic.com> https://claude.ai/code/session_011LfxWfu9deiuRidiyZSa5y
Adds a comment at the top of every generated feed pointing readers to https://github.com/de-mu/demu-feed-template for the original template and documentation. Co-Authored-By: Claude <claude@anthropic.com> https://claude.ai/code/session_011LfxWfu9deiuRidiyZSa5y
msp-feed-template.xml is a fully annotated example RSS feed showing all MSP 2.0 features: channel metadata, value splits, person credits, lyrics (podcast:transcript), and a featured-artist track with a per-track value override. Mirrors the DeMu feed template approach but covers the full MSP 2.0 tag set. Co-Authored-By: Claude <claude@anthropic.com> https://claude.ai/code/session_011LfxWfu9deiuRidiyZSa5y
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Publisher feeds share generateCommonChannelElements, so they were emitting album-centric comments — most notably the podcast:medium comment claiming "this feed contains music" for medium=publisher. Reword title/author/description/medium comments based on medium. Add tests covering album wording, publisher rewording, the no-"--" XML-comment invariant, and comment-stripping on round-trip. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the paraphrased educational comments with the exact text from DeMu's feed-with-comments.xml wherever a tag overlaps, so MSP feeds read identically to the canonical DeMu template. Adapt the handful of DeMu-specific lines (generator "Handcrafted" instruction, "Demu release/album", the template author's "Wolf" recipient) to neutral wording, and fix DeMu's typos (descripe, meduim, name spaces, necessarilly). Add DeMu's image child-tag comments (url/title/link/ description). Publisher-feed comments and MSP-only tags keep their own wording. Regenerate msp-feed-template.xml from the generator so the reference file stays in sync. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PreviewModal gains a checkbox (default on) that hides the educational <!-- ... --> comment lines from the on-screen preview. Display-only: Copy and Download still export the full commented feed. Add an exported stripXmlComments() helper (whole-comment-line removal) with a unit test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Match the onboarding V2 framing. Diverges from DeMu's verbatim text (which says "the language the feed is written in", per the RSS 2.0 spec) in favor of the more artist-friendly content-oriented wording. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…g V2 - LANGUAGES: 10 -> 30 entries (matches new-onboarding-v2); all prior values retained so existing feeds stay valid. Used by both the album and publisher language dropdowns. - fieldInfo.language: now 'The primary language spoken on your release (e.g. song lyrics).' matching onboarding V2. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The DeMu text told artists to generate the GUID themselves (UUIDv5 derived from the feed URL via RSS Blue). MSP generates it automatically as a random UUID (crypto.randomUUID()) at feed creation; the URL-seeded approach was only used to seed early feeds and is no longer how GUIDs are made. Update the comment to say so. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MSP has no form field for managing editor / web master; the only contact field is the owner email (emitted as itunes:owner). These tags only ever came from test data or imported feeds. Remove the sole emission point in generateCommonChannelElements (comment + both tags) so they never appear in any generated feed, and drop the stale lines from msp-feed-template.xml. Type fields, parser, and KNOWN_CHANNEL_KEYS entries are intentionally kept so imported instances stay recognized (not resurrected as unknown elements). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MSP only publishes music albums/videos, never playlists ('list mediums'),
so drop the 'album/single -> leave unchanged, playlist -> add capital L'
sentences. Keep the tag definition and the spec link.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MSP's person tags carry a 5th attribute, npub (the person's Nostr public key), beyond DeMu's href/img/group/role. Update the comment to describe all 5 attributes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
DeMu's text only described node pubkeys and manual wallet setup. MSP supports both Lightning addresses (type=lnaddress) and node pubkeys (type=node), auto-detected, and builds the whole value block (recipients, splits, community support) from the app's Value section. Update the comment to say so. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The item-level guid (one per track) is generated by MSP via crypto.randomUUID() at track creation, so DeMu's 'use guidgenerator.com to make them yourself' instruction doesn't apply. Keep the explanation that the GUID must stay unique/stable and is what routes boosts (remoteItems, valueTimeSplit) to the right track. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fountain Radio no longer exists, so remove the 'required for Fountain Radio' guidance. Note MSP auto-fills duration from the audio file and that the tag is recommended for broad app compatibility. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- enclosure: drop the casual 'true magic' voice and the manual 'edit the mp3 url/length yourself' instruction (which contradicted MSP's automatic handling and the adjacent duration comment). MSP sets the url and MIME type from the audio/video you add; length is described but not claimed auto (it's a placeholder). - lastBuildDate: fix the 'also should be in RFC-822' fragment and note MSP auto-updates it on every generate. Decentralized-music phrasing in episode/channel intentionally kept (MSP is a demu tool). Generator<->template parity verified intact. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Separate logical groups of tags with single blank lines (and blank lines between <item> blocks), matching the spacing of a reference feed the user liked. Per-tag comments and 4-space indentation are unchanged — only blank lines are added. - generateCommonChannelElements / generateTrackXml: a dedup-guarded sep() helper inserts one blank between groups (basic metadata, dates, identifiers, discovery, artwork, classification, owner, persons, value, funding; item: core, transcript, artwork, enclosure+duration, season/episode/explicit, persons, value). No leading/trailing/double blanks. - Wrappers: blank after <channel>, before publisher/tracks sections, and between items (between only, so stripping comments leaves no double blank). - New test asserts the feed has blank-line grouping but never two blank lines in a row, with comments ON or OFF (works with the View Feed toggle). Regenerated msp-feed-template.xml; generator<->template parity intact. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move the reference template from the repo root into public/ so Vite/Vercel serve it at the site root. Viewable in a browser at https://msp.podtards.com/msp-feed-template.xml (and /msp-feed-template.xml on the dev server). No code referenced the old root path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add an XML Handling subsection covering: DeMu-derived but MSP-accurate per-tag comments, publisher-aware comment branching, blank-line grouping with the sep() helper, stripXmlComments + the View Feed 'Show comments' toggle, and the served public/msp-feed-template.xml reference (regenerate from the generator; keep comment parity). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
public/msp-feed-template-no-comments.xml is the same example feed with the educational comments stripped (via stripXmlComments), keeping the blank-line grouping. Lets users grab a clean template; the commented version remains at public/msp-feed-template.xml. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
public/msp-feed-template.xml is now the comments-free default; the full commented snapshot moves to public/msp-feed-template-with-comments.xml. Update the CLAUDE.md note accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every tag in the channel and each item now has an inline XML comment
explaining what it does and linking to the relevant Podcasting 2.0 spec.
Mirrors the approach from the DeMu feed template (de-mu/demu-feed-template)
so artists can open the raw XML and understand what each field means.
Tag ordering already matched DeMu; this commit adds the annotations.
All 134 tests pass.
Co-Authored-By: Claude claude@anthropic.com
https://claude.ai/code/session_011LfxWfu9deiuRidiyZSa5y