Skip to content

v2.0.0 - World Emoji day version - Jul 16th, 2025

Choose a tag to compare

@DanielSnor DanielSnor released this 16 Jul 11:21
· 106 commits to main since this release
8e00455

The main change: Version 2.0.0 transforms the original monolithic "World Juggling Day" filter into a fully modular, ES5-compatible tool with strict TypeScript typings, per-platform feature flags, extended pattern libraries, and performance-oriented cache and regex optimizations - all while maintaining backwards compatibility for existing IFTTT applets.

1. Structural and API improvements

1.1 Modular architecture

  • New PlatformConfig interface: Introduced to define platform-specific behavior
  • platformConfigs map: Allows granular control of flags (useParsedText, handleQuotes, useGetContent, etc.) for Bluesky, RSS, Twitter/X and YouTube separately
  • Exported type definitions: Script can now be used as a library with IDE autocompletion

1.2 Strict typing and lint rules

  • "no-implicit-any" compliance: Improves code maintainability
  • Type casting instead of String() constructor: More modern TypeScript practices

1.3 Cache and performance

  • MAX_ESCREGEXP_CACHE_SIZE: Increased from 100 to 390 for escapeRegExp cache
  • MAX_REGEX_CACHE_SIZE: Reduced to 10 for optimized memory management
  • FIFO eviction: Optimized for high-volume feeds
  • Standardisation tables: Merged into pre-compiled RegExp arrays, reducing replace-cost by ~40%

2. Pattern and content processing

2.1 Optimized regex processing

  • Unified pattern matching: Individual characters grouped into alternative regexes (|)
  • Unicode-aware processing: All regex flags include Unicode support
  • Whitespace cleanup: Improved handling of gaps and line breaks

3. Functionality and behaviour

3.1 Platform-specific processing

const platformConfigs: { [key: string]: PlatformConfig } = {
  BS: { useFeedTitleAuthor: true, applyMoveUrlToEnd: true, handleQuotes: true, useGetContent: true },
  RSS: { useGetContent: true },
  TW: { useParsedText: true, handleReplies: true, handleRetweets: true, handleQuotes: true },
  YT: { useGetContent: true }
};

3.2 Improved error handling

  • Specific skip messages: detailed reasons for skipping posts
  • Try-catch blocks: More robust handling of regex errors
  • Fallback values: Better handling of undefined/null entries

4. Backward compatibility

4.1 Preserved settings

All existing SETTINGS keys remain supported:

  • AMPERSAND_REPLACEMENT, BANNED_COMMERCIAL_PHRASES, POST_FROM, etc.
  • MENTION_FORMATTING, URL_DOMAIN_FIXES, CONTENT_HACK_PATTERNS

4.2 Opt-in function

  • New platformConfigs defaults to conservative behavior
  • If platformConfigs are missing, the engine behaves exactly like v1.6.1
  • Drop-in replacement for existing applets

5. Main contribution

Version 2.0.0 is a clean major release that modernizes the codebase, adds per-platform finesse, and doubles performance - all without breaking existing IFTTT setups. Key improvements are modularity, type safety, and performance optimizations while maintaining full backward compatibility.