TBC App/Web - Multi Reactions

SKU: TBC-APP-MULI-MOD

Facebook-style multi-reactions for every Fluent Community surface โ€” feed posts, space posts, comments, and Fluent Chat messages. Unlimited custom reactions with animated icons, full light/dark theming, and a native experience on both web and the TBC Community App (iOS + Android). One-time purchase โ€” yours for life, no subscriptions.

$50.00
Buy Now

v1.0.7
Changelog ยท v1.0.7

1.0.7 โ€” 2026-07-09

๐Ÿ›  Fixed

  • Custom reaction icons now show on the new Card feed layout. When a feed is displayed in the Card layout, its reaction button sits inside a different container (.fcom_feed_card_footer) that the icon-swapper didn't target โ€” so card feeds fell back to Fluent Community's default heart. The swapper now covers all four layout containers (Timeline, List, Card, and standalone), so your custom reactions render everywhere the feed does (includes/class-posts.php).

๐Ÿ”ง Changed

  • "Delete data on uninstall" moved to the License tab. The switch that wipes all reaction data, custom icons, and settings on uninstall now lives in one place โ€” the shared License panel's new Data Management card โ€” instead of the plugin's own Settings screen. The setting still stores against this plugin's own option, so nothing changes about what's kept or removed; it's just consistent across the TBC suite now. Ships the enhanced shared licenser (lib/class-tbc-licenser.php); the old toggle is removed from views/admin-settings.php.
  • Admin screen rebuilt on the shared design system. The settings UI now draws from suite-wide drop-in libraries (lib/tbc-admin-base.css/php, lib/tbc-admin-tokens.css/php, and a shared save-bar in lib/tbc-save-bar.css/js/php) instead of its own copy of the same scaffold. About 190 lines of duplicated CSS were removed from assets/css/admin.css. Look and behavior are unchanged โ€” every TBC plugin's admin now shares one consistent style and save bar.

1.0.6 โ€” 2026-07-03

๐Ÿ›  Fixed

  • No more cold-load socket flood. On a thread with many comments, the app used to request each comment's reaction breakdown separately, hammering the socket on first load. Breakdowns are now fetched in a single batched request (new class-api.php endpoint, backed by class-comments.php/class-core.php), so a busy thread opens cleanly.

๐Ÿ”ง Changed

  • Shared license UI + licenser sync. Adopts the suite-wide license-activation UI and brings the updater licenser to parity with the rest of the plugin suite.

1.0.5 โ€” 2026-06-10

Comment reactions now stick โ€” on the app and on the web portal โ€” plus security hardening on the breakdown endpoint.

๐Ÿ›  Fixed

  • Fix: comment reaction type persists reliably. The type is captured on rest_request_after_callbacks (reading the X-TBC-Reaction-Type header live from the request), which fires on every successful react POST โ€” the native FC hook it replaces only fired when the reaction row was freshly created, so re-reacting to a previously-reacted comment lost its type on refresh. The racy cross-request global-option mechanism is gone entirely.
  • Fix (web): comment reactions actually POST again under Fluent Community's current DOM โ€” comment ids are resolved by document-order position matching that survives FC's .comment_wrap nesting, and replies resolve too (previously replies fell through to null and the save was silently skipped). Reply reaction state now loads for the breakdown/user-reaction display as well.
  • Fix: self-healing schema โ€” the reaction-type DB column is re-checked and re-created if missing instead of failing silently.
  • Fix (licensing): the shared licenser now fails open on a license-server outage โ€” only a definitive invalid/expired answer disables features. Ships the updated lib/class-tbc-licenser.php.

๐Ÿ”ง Changed

  • Security: the who-reacted /breakdown user list now requires authentication and respects content visibility; SVG icon uploads are no longer accepted.
  • Change (web): one shared who-reacted modal (window.tbcMrShowModal) + shared escHtml for both posts and comments, defined once in the frontend injector (removes ~135 duplicated lines; behavior unchanged).
  • Change: REST errors normalized to the shared {code, message} envelope with real HTTP statuses.

๐Ÿ“ก OTA & Internal

  • Sync: Mobile module version bumped 1.0.4 โ†’ 1.0.5 (modules/multi-reactions/module.ts). The module side carries the matching app fixes: comment reactions persist their type and support swap, failed reactions revert instead of sticking, and the optimistic-update/rollback flow is shared between feed and comment slots.

1.0.4 โ€” 2026-06-02

๐Ÿ›  Fixed

  • Fix (licensing): Plugin now sends its FluentCart product id (item_id) on every license check so the License Server can reject a key bought for a different TBC product (previously any valid TBC key activated any TBC plugin). Ships the updated shared lib/class-tbc-licenser.php. Requires TBC License Server 1.1.3+.

๐Ÿ“ก OTA & Internal

  • Sync: Mobile module version bumped 1.0.3 โ†’ 1.0.4 (modules/multi-reactions/module.ts) to mirror the plugin version.

1.0.3 โ€” 2026-05-29

๐Ÿ“ก OTA & Internal

  • Sync: Version bumped 1.0.2 โ†’ 1.0.3 to stay matched with the multi-reactions module (modules/multi-reactions/module.ts), which was rebuilt on the app's responsive layout primitives in core 1.1.7. No plugin code change.

1.0.2 โ€” 2026-05-27

๐Ÿ”ง Changed

  • Polish: Save button label aligned across the TBC plugin suite โ€” "Save Changes" โ†’ "Save Settings" (views/admin-settings.php).

๐Ÿ“ก OTA & Internal

  • Internal: TBC_MR_VERSION constant now auto-derives from the PHP header via get_file_data(). Removes the historical drift risk where the inline 'version' => '1.0.1' literal in TBC_Licenser::register() could lag the plugin header. Version bumps now only need to touch the Version: header line.

1.0.1 โ€” 2026-05-27

โœจ New

  • Add: Plugin now shows Settings | License row links on the WP Plugins screen alongside the default Deactivate. The row links are wired by the shared TBC_Licenser::add_plugin_row_links() filter โ€” no per-plugin code added here, the bump only ships the updated lib/class-tbc-licenser.php copy.

๐Ÿ“ก OTA & Internal

  • Sync: Mobile module version bumped 1.0.0 โ†’ 1.0.1 (modules/multi-reactions/module.ts) to mirror the plugin version.

v1.0.0 โ€” Initial release

โœจ New

  • Multi-reaction picker on Fluent Community posts and comments (6 fixed reaction types by default: heart, thumbsup, laugh, wow, cry, party)
  • Custom reaction icon uploads: PNG, JPG, SVG, GIF, WebP โ€” 2MB max, auto-resized to 128x128, animated GIF/WebP supported
  • Automatic WebP conversion for static PNG/JPG uploads
  • Full REST API under tbc-multi-reactions/v1 (/config, /swap, /breakdown/{type}/{id}, /breakdown/{type}/{id}/users)
  • API response enrichment for Fluent Community feeds, single feed, comments, reactions, notifications, unread notifications, and activities
  • Reaction breakdown modal with tabbed per-reaction user lists, avatars, verified badges, and profile links
  • Fluent Community theme integration with light/dark mode and per-reaction accent colors
  • Drag-and-drop admin grid with per-reaction editor (emoji, custom icon, name, color, enable toggle)
  • Fluent Messaging chat emoji sync via fluent_messaging/allowed_reaction_emojis filter
  • Notification text patched to use the actual reaction verb instead of hardcoded "loved"
  • Transient caching for breakdown queries and batched DB lookups for feed/comment lists
  • Indexed tbc_mr_reaction_type column added to fcom_post_reactions on activation
  • Optional "Delete data on uninstall" setting โ€” off by default
  • Mobile app compatibility via JWT Bearer authentication

The only multi-reaction plugin that works everywhere in Fluent Community โ€” and on mobile.

TBC Multi Reactions replaces Fluent Community’s single heart with a Facebook-style hover-to-reveal reaction picker. Users can react with Like, Love, Laugh, Wow, Sad, Angry, or any custom reaction you create โ€” and swap reactions with a single click.

Unlike generic reaction plugins that only touch the main feed, TBC Multi Reactions is purpose-built for Fluent Community and integrates deeply with its theming, media system, API layer, and notification system. It’s also the only multi-reaction plugin that works seamlessly inside the TBC Community App on iOS and Android.

Works Everywhere in Fluent Community

Other reaction plugins only touch the main feed. TBC Multi Reactions works on every surface Fluent Community offers:

  • Feed posts โ€” the main community feed
  • Space posts โ€” inside every space and group
  • Comments โ€” full reactions on post comments, with independent tracking and display
  • Fluent Chat messages โ€” react to direct messages and group chat messages
  • Course discussions โ€” anywhere Fluent Community renders posts or comments
  • Web + Mobile App โ€” identical experience in the browser and inside the TBC Community App

Every reaction type, custom icon, and color you configure applies everywhere automatically โ€” no per-surface setup.

Core Features

  • Multi-Reaction Picker โ€” Hover-to-reveal picker with Like, Love, Laugh, Wow, Sad, Angry + unlimited custom types
  • Reaction Swapping โ€” Change your reaction with one click, no remove-and-re-add
  • Reaction Breakdown Modal โ€” Tap the summary to see per-reaction counts with tabbed user lists, avatars, and profile links
  • Overlapping Icon Summary โ€” Facebook-style overlapping reaction icons with total count
  • Independent Tracking โ€” Posts, comments, and chat messages each track reactions separately

Custom Icons & Animated Emoji

  • Upload PNG, JPG, SVG, GIF, or WebP icons for any reaction type (2MB max, auto-resized to 128ร—128)
  • Animated GIF and animated WebP support โ€” icons animate on hover and when active
  • Automatic WebP conversion for static uploads โ€” optimal performance with zero manual work
  • Icons stored through Fluent Community’s native media system for full consistency

Mobile App Ready

  • Full REST API โ€” 5 dedicated endpoints for configuration, swapping, breakdowns, batch queries, and user details
  • API Response Enrichment โ€” Reaction data automatically injected into Fluent Community’s existing feed, comment, activity, and chat API responses
  • Notification Enrichment โ€” Push notifications show the actual reaction icon (custom image or emoji) and correct verb (“laughed at”, “loved”, etc.) instead of a generic heart
  • JWT Bearer Auth โ€” Works alongside cookie-based web auth for native mobile clients

Theming & Display

  • Inherits Fluent Community’s CSS variables for seamless visual matching
  • Automatic light and dark mode following Fluent Community’s theme toggle
  • Configurable accent color per reaction type for active states, summaries, and modal tabs

Admin & Configuration

  • Visual admin panel with drag-and-drop sortable reaction grid and live preview
  • Per-reaction editor modal โ€” emoji input, custom icon upload, display name, color picker, and enable/disable toggle
  • Unlimited custom reactions beyond the 6 defaults
  • Master enable/disable toggle for the entire system

Performance

  • Batch database operations โ€” fetches reaction data for multiple items in a single query
  • Transient caching on breakdowns to minimize database load
  • Conditional asset loading โ€” CSS/JS only loaded on pages that need it
  • Indexed database column for fast reaction lookups at scale

Clean & Safe

  • Existing Fluent Community “like” reactions are fully preserved on install
  • Adds a new column to track reaction types without modifying FC’s original data
  • Complete uninstall cleanup โ€” settings, custom DB column, uploaded icon files, media records, and cached data are all removed. Fluent Community’s original reaction data is left intact.

Requirements

  • WordPress 5.8+
  • PHP 7.4+
  • Fluent Community (free or Pro)
  • Optional: TBC Community App (iOS/Android) for native mobile support

License

One-time purchase. You own it forever โ€” no subscriptions, no renewals. Includes all future updates and support for as long as the plugin is maintained.