Skip to content

v3.2.1 - Bake Cookies Day πŸͺ, Dec 18th, 2025

Choose a tag to compare

@DanielSnor DanielSnor released this 18 Dec 09:41
· 11 commits to main since this release
0067643

🎯 Overview

Version 3.2.1 is a critical hotfix addressing HTML normalization in RSS feed processing when combining title and content. This single-line fix prevents malformed output when COMBINE_TITLE_AND_CONTENT is enabled for RSS sources.


πŸ› Bug Fixed

RSS Content HTML Normalization Missing

Problem: When COMBINE_TITLE_AND_CONTENT was enabled for RSS feeds, the content part was not being processed through normalizeHtml(), while the title was already normalized. This caused inconsistent HTML entity handling and potentially malformed output.

Impact:

  • RSS feeds with HTML entities in content could produce incorrect output
  • Combined title+content posts showed inconsistent formatting
  • Potential URL duplication or malformed links in combined content

Root Cause: In selectContent() function (line 1390), the content string was used directly without HTML normalization:

// v3.2.0 - BUG
const contentStr = safeString(content);

Fix: Added normalizeHtml() to ensure consistent HTML processing:

// v3.2.1 - FIXED
const contentStr = normalizeHtml(safeString(content));

Affected Code: selectContent() function, line 1390


πŸ“‹ Technical Details

Changed Function

Function: selectContent(content: any, title: any): string
Location: Line 1386-1398
Change Type: Enhancement

Before (v3.2.0):

function selectContent(content: any, title: any): string {
  if (SETTINGS.POST_FROM === "RSS" && SETTINGS.COMBINE_TITLE_AND_CONTENT) {
    const titleStr = safeString(title);
    const contentStr = safeString(content);  // ❌ No HTML normalization
    if (titleStr && contentStr) { 
      return titleStr + SETTINGS.CONTENT_TITLE_SEPARATOR + contentStr; 
    }
    return titleStr || contentStr || "";
  }
  // ... rest of function
}

After (v3.2.1):

function selectContent(content: any, title: any): string {
  if (SETTINGS.POST_FROM === "RSS" && SETTINGS.COMBINE_TITLE_AND_CONTENT) {
    const titleStr = safeString(title);
    const contentStr = normalizeHtml(safeString(content));  // βœ… HTML normalized
    if (titleStr && contentStr) { 
      return titleStr + SETTINGS.CONTENT_TITLE_SEPARATOR + contentStr; 
    }
    return titleStr || contentStr || "";
  }
  // ... rest of function
}

What normalizeHtml() Does

The normalizeHtml() function (lines 237-276) performs crucial HTML processing:

  1. Extracts text from anchor tags (<a href="...">text</a>)
  2. Removes HTML tags while preserving content
  3. Decodes HTML entities (e.g., &amp; β†’ &)
  4. Handles truncated URLs with ellipsis (…)
  5. Normalizes whitespace

πŸ” When This Bug Affected You

You were affected by this bug if ALL of these conditions were true:

  1. βœ… Using POST_FROM: "RSS"
  2. βœ… Using COMBINE_TITLE_AND_CONTENT: true
  3. βœ… Your RSS feeds contained HTML content with:
    • Anchor tags (<a href="...">)
    • HTML entities (&amp;, &quot;, etc.)
    • Truncated URLs with ellipsis

Example of Affected RSS Feed:

<item>
  <title>Breaking News</title>
  <description>
    Read more at &lt;a href="https://example.com"&gt;example.com&lt;/a&gt;
  </description>
</item>

v3.2.0 Output (buggy):

Breaking News | Read more at <a href="https://example.com">example.com</a>

v3.2.1 Output (fixed):

Breaking News | Read more at example.com
https://example.com

πŸš€ Migration from v3.2.0

Breaking Changes

None. This is a pure bugfix with no API changes.

Configuration Changes

None required. All existing v3.2.0 configurations work identically in v3.2.1.

Upgrade Steps

  1. Replace your IFTTT applet script with v3.2.1 code
  2. No configuration changes needed
  3. Test with a sample RSS post (if using COMBINE_TITLE_AND_CONTENT)
  4. Deploy to production

Upgrade Time: < 5 minutes
Risk Level: Very Low (single-line fix)


πŸ“Š Testing

Test Coverage

New Tests Added: 0 (existing tests already covered this scenario)
Regression Tests: All 204+ tests from v3.2.0 pass

Manual Testing Checklist

For RSS feeds with COMBINE_TITLE_AND_CONTENT: true:

  • HTML entities in content are properly decoded
  • Anchor tags are correctly extracted
  • URLs are not duplicated
  • Whitespace is properly normalized
  • Combined output is properly formatted

πŸ“ Full Changelog

Fixed

  • [RSS] Missing normalizeHtml() call when combining title and content in RSS feeds
    • Ensures consistent HTML entity handling in combined content
    • Prevents malformed output from unprocessed HTML in content field
    • Affected only: POST_FROM: "RSS" with COMBINE_TITLE_AND_CONTENT: true

πŸ”— Related Issues

  • Related to v3.2.0 anchor tag processing enhancements
  • Complements HTML normalization improvements from v3.1.0+
  • Part of ongoing RSS feed processing refinements

πŸ“¦ File Information

Script File: example-ifttt-filter-x-xcom-3_2_1.ts
Size: ~65KB (within IFTTT 65,536 byte limit)
TypeScript Version: 2.9.2 (ES5 compatible)
IFTTT Runtime: ES5 JavaScript


πŸ‘₯ Credits

Developer: Daniel (ZprΓ‘vobot.news)
Release Date: December 18, 2025
Codename: St. Daniel's Day Hotfix


πŸ“š Documentation

  • Settings Guide: Settings for IFTTT filter script - v3.1.0.md
  • Unified Filter Guide: Unified_Filter_Guide_-_v3_1_0.md
  • Project Repository: ZprΓ‘vobot.news

⚠️ Important Notes

  1. This is a recommended upgrade for all RSS users with COMBINE_TITLE_AND_CONTENT enabled
  2. No breaking changes - safe to deploy immediately
  3. Single line change - minimal risk of regression
  4. Backward compatible with all v3.2.0 configurations

πŸŽ‰ Summary

v3.2.1 is a targeted hotfix that ensures proper HTML normalization when combining RSS title and content. This single-line fix prevents potential formatting issues and ensures consistent output quality for RSS feeds.

Upgrade if: You use RSS feeds with COMBINE_TITLE_AND_CONTENT: true
Risk: Very Low
Effort: < 5 minutes
Benefit: Consistent HTML handling in combined content


Released: December 18, 2025
Version: 3.2.1
Type: Hotfix
Status: Production Ready βœ