v2.0.0 - World Emoji day version - Jul 16th, 2025
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
platformConfigsdefaults to conservative behavior - If
platformConfigsare 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.