# Changelog ## 2025-11-01 - 1.4.0 - feat(feed) Support custom feedUrl for feeds and use it as the self-link in RSS/Atom/JSON; update docs - Add optional feedUrl option to IFeedOptions (ts/classes.feed.ts). - Use feedUrl as the atom:link rel="self" href in RSS and as the in Atom when provided. - Expose feedUrl as the JSON Feed "feed_url" value (ts/classes.feed.ts). - PodcastFeed now uses podcastOptions.feedUrl for its atom self-link (ts/classes.podcast.ts). - Update README: add a Custom Feed URL section and mention feedUrl in the API docs (readme.md). ## 2025-10-31 - 1.3.0 - feat(parsing) Replace rss-parser with fast-xml-parser and add native feed parser; update Smartfeed to use parseFeedXML and adjust plugins/tests - Replaced dependency on rss-parser with fast-xml-parser (package.json + deno.lock). - Added ts/lib/feedparser.ts: a new native XML-based feed parser that detects and parses RSS 2.0, Atom 1.0 and RSS 1.0 (RDF) into a unified IParsedFeed structure. - Updated Smartfeed parsing API to use parseFeedXML for parseFeedFromString and to fetch + parse XML in parseFeedFromUrl. - Updated ts/plugins.ts to export fast-xml-parser's XMLParser instead of rss-parser. - Implemented feed parsing utilities: content extraction, snippet creation, date normalization, enclosure/category handling and atom:link/feed metadata extraction. - Added and/or updated comprehensive tests for creation, export, parsing, validation, podcast (Podcast 2.0) features to exercise the new parser and related behaviors. ## 2025-10-31 - 1.2.0 - feat(podcast) Add Podcast 2.0 support and remove external 'feed' dependency; implement internal RSS/Atom/JSON generators and update tests/README - Add Podcast 2.0 fields and validation: podcastGuid (required), podcastMedium, podcastLocked and podcastLockOwner - Include Podcast 2.0 tags in RSS export (podcast:guid, podcast:medium, podcast:locked, podcast:person, podcast:transcript, podcast:funding) - Remove dependency on the external 'feed' package and replace with internal feed generation for RSS, Atom and JSON Feed - Update ts/plugins.ts to stop exporting the removed 'feed' plugin - Update numerous tests to provide podcastGuid and exercise Podcast 2.0 features - Documentation updated (readme.md) to document Podcast 2.0 support and examples ## 2025-10-31 - 1.1.1 - fix(podcast) Improve podcast episode validation, make Feed.itemIds protected, expand README and add tests - PodcastFeed.addEpisode: validate iTunes duration separately (require itunesDuration) and ensure it is a positive number; audioLength must be a positive number; moved itunesDuration out of the generic required-fields list to allow proper numeric validation and clearer errors. - Feed: changed itemIds from private to protected so subclasses (e.g. PodcastFeed) can access and enforce duplicate ID checks across episodes/items. - Documentation: major README overhaul with Quick Start, Podcast examples, API reference, validation & security notes, best practices, and TypeScript usage examples. - Tests: added comprehensive podcast tests (advanced features and validation) and updated/expanded test coverage for feed creation, export, parsing and validation to cover transcripts, funding, persons, explicit flags, and more. - This is a backwards-compatible bugfix and documentation/test update; no breaking public API changes intended. ## 2025-10-31 - 1.1.0 - feat(smartfeed) Implement Smartfeed core: add feed validation, parsing, exporting and comprehensive tests - Implement Feed class with full option validation, addItem validation (URLs, email, timestamp), duplicate ID protection, content sanitization and generation of RSS/Atom/JSON feeds. - Add validation utilities (validateUrl, validateDomain, validateEmail, validateTimestamp, validateRequiredFields, sanitizeContent) in ts/validation.ts used across the module. - Implement Smartfeed class functions: createFeed, createFeedFromArticleArray, parseFeedFromString and parseFeedFromUrl with rss-parser integration. - Adjust module exports (ts/index.ts) and plugin imports (ts/plugins.ts) to match implemented classes. - Add comprehensive test suite under test/ (creation, export, parsing, validation, integration) to exercise new functionality. - Add deno.lock to lock dependency graph for reproducible builds. ## 2025-10-31 - 1.0.11 - smartfeed / feed Add feed and validation utilities for the smartfeed plugin and perform related dependency, refactor, test, and CI updates. - feat: implement feed and validation utilities for smartfeed to support improved feed generation and input validation. - chore: bump feed dependency to v5.1.0 and adjust import paths for consistency with the updated package. - refactor: improve Feed and SmartFeed class structure and formatting for readability and maintainability. - fix: update test imports to use the new package path after refactor/import changes. - chore: streamline plugin exports to a consistent structure. - chore: update README for clarity and formatting improvements. - chore: update TypeScript configuration for better compatibility. - ci: add workflows to handle tag and non-tag pushes. ## 2020-10-25 to 2024-05-29 - 1.0.1..1.0.11 - housekeeping Collection of minor releases, metadata updates and routine fixes made across multiple intermediate versions. - Multiple small "fix(core): update" changes and routine release markers (1.0.2 → 1.0.11). - Updates to package metadata and npmextra.json (githost) across several commits. - Switch to new organization naming/scheme. - Miscellaneous tsconfig and description updates. - These changes were primarily maintenance, CI/package metadata, and release housekeeping.