v20.0 Release Notes

  • CMS: Improved the Short Link Detail page to display a QR code preview and added options to download the QR code in PNG or SVG format.

  • CMS: Added caching for Content Channel Items to improve performance when retrieving content. This reduces repeated data requests by temporarily storing frequently accessed items, improving response times across Content Channel features.

  • Communication: Improved SMS opt-out tracking by identifying which Communication triggered a Recipient to unsubscribe, allowing for more accurate reporting and troubleshooting of SMS engagement.

  • Check-in: Improved next-gen check-in to exclude schedules without a name from the schedule selection list, preventing empty checkbox options and reducing confusion during check-in.

  • Finance: The unused legacy TextToGiveSettings block has been removed. To learn more, please read the Tech Bulletin item on this topic.

  • CMS: Added an Obsidian version of the Content Channel Item View block. View and intent interactions are now recorded after the page renders in the browser so bots and JavaScript-disabled clients are no longer logged.

  • Lava: Fixed an issue where Lava statements nested inside entity command blocks within {% lava %} tags executed as raw strings instead of processing. Nested Lava logic inside a {% lava %} tag now evaluates correctly.

  • Connection: Added Connection Request Attribute filters to the Connections Hub Block.

  • Core: Updated detail block panel labels to display the icon and title together when both are provided instead of dropping the icon.

  • Event: Added a Registration Template setting to require registrants to pay in full or set up a payment plan covering the remaining balance before completing registration.

  • Group: Improved performance of the Group Sync job when syncing to security roles. Previously the authorization cache was flushed on every group member update, now it happens a single time at the end of processing.

  • Workflow: Updated the Form Builder Detail UI, converted the Form Submission List and Form Analytics blocks to Obsidian and added Confirmation Email Both, Notification Email multi-address and Connection Requests automations.

  • CRM: Added a Smarty Streets International location service for non-US address verification and optional geocoding. Requires a Smarty subscription for 'International Address Verification' or, if using geocoding, 'International Geocoding'.

  • Group: Added a Photo field to groups so a group can have its own photo.

  • CMS: Added a Status field to Persisted Datasets that records the result of the most recent build attempt. This Status is now displayed as a column in the Persisted Dataset List block, allowing administrators to quickly identify datasets that failed to build and may need attention.

  • Mobile: Updated the default layouts for new mobile applications with a simplified "Homepage" layout and a new "Full" layout that does not scroll.

  • Communication: Added a Create Connection Request SMS pipeline action and converted the SMS Pipeline Detail block to Obsidian.

  • Finance: Added per-account allocations to payment information so financial gateways can route a transaction to the correct funds.

  • Connection: Added a "My Connections" view to the Connections Hub Block.

  • CRM: Fixed an error that prevented person profile views from being logged when the viewer connected over IPv6.

  • Core: Added a Days field to the Schedule Builder duration so multi-day events like camps, retreats, and mission trips can be entered as days rather than total hours.

  • Core: Added a daily summary of Interaction counts per Interaction Component to improve reporting performance on high-volume Interaction data. Each day, the Rock Cleanup job populates the InteractionComponentDailyCount database table with the previous day's counts, which can then be used when building SQL-based reports. This feature is opt-in and is controlled per Interaction Channel using the new Enable Component Daily Counts setting. When a new Interaction Channel is created, that setting is initialized from the Default Component Daily Counts attribute on its Interaction Medium.

  • CRM: Updated Bulk Update to the newer Obsidian UI and completely rewrote the Bulk Update processor to improve reliability, error handling, and result reporting. This update also adds the ability to bulk update Record Source.

  • Prayer: Added a Comments column to the Prayer Request List block to display the number of comments associated with a prayer request.

  • Check-in: Updated next-gen supervisor screens to display soft and firm threshold limits alongside location counts.

  • Check-in: Fixed an issue in next-gen check-in that caused groups filtered by ability level to not be available during an override check-in.

  • Check-in: Updated the next-gen Check-in override feature to allow directly checking into overflow locations.

  • Communication: Added Communication List selection to the simple Communication Entry block.

  • LMS: Added the ability to require students to retake a learning activity when they don't earn a high enough score. The retake can be assigned automatically for activities the system auto-grades, or manually for those graded by the facilitator.

  • Connection: Added the Connection Request Entry block. This public form allows visitors to match or create their person record and request multiple connection opportunities.

  • Core: Updated Reminder List block to the newer Obsidian UI.

  • CMS: Fixed an issue where browser tab titles set by Obsidian blocks (Person Bio, Registration Entry, Communication Detail and others) were never displayed, leaving the page's default name in the tab instead.

  • Check-in: Improved SMS sending from the Check-in Manager person profile so messages to a parent are delivered reliably. Rock now enables SMS on the recipient's mobile number, clears any prior SMS opt-out and reactivates an inactive person record. Each change is recorded in the person's history.

  • Event: Added a Long Answer question type to Interactive Experiences. It gives people a larger text area for multi-line answers than the Short Answer type allows.

  • Lava: Added a new ToMarkdown filter that converts a string of HTML to Markdown. This complements the existing FromMarkdown filter.

  • Core: Updated the Background Check administration by retiring the legacy Protect My Ministry (v1) component. Historical background check documents remain viewable on the person profile. To learn more, please read the Tech Bulletin item on this topic.

  • CMS: Fixed page routes saved from the Page Properties block not taking effect until an app restart.

  • Finance: Added a block setting to set the Record Source of a Person created within the Benevolence Request Detail block.

  • Connection: Added a Celebrations Report, a single place to review and manage connection request celebrations. From there, review submitted stories, update celebration details, and keep celebration content consistent.

  • Check-in: Added Obsidian versions of the Check-in Configuration List, Check-in Configuration Settings, Check-in Schedule Builder and Check-in Areas and Group Detail blocks.

  • Check-in: Fixed Next-gen check-in to not allow printing labels for mobile check-in QR codes after check-in period has ended.

  • Mobile: Fixed the mobile Workflow Entry block ignoring its Completion Action setting, causing the workflow's own message to display instead of the configured completion XAML or page redirect.

  • Group: Added the Group Finder Obsidian block.

  • CMS: Added the Content Channel Item Metrics page and block.

  • Check-in: Fixed an issue that prevented Override mode from saving attendance beyond the location soft threshold when doing family auto-mode check-in.

  • Mobile: Fixed a PlaceholderColor set in page XAML being ignored on Entry, BorderlessEntry and TextEditor controls.

  • Core: Fixed an issue that could allow a single job to be executed multiple times concurrently. Rock now coordinates through a shared locking system across all node instances.

  • Mobile: Fixed push notifications from a communication not navigating to the target page when the Android app was in the background.

  • Check-in: Fixed Next-gen check-in so labels can no longer be printed from a mobile check-in QR code after the check-in period has ended.

  • Core: Updated the core icon set and icon picker to use Tabler v3.46.0.

  • AI: Improved AI agent tool results to include each entity's unique identifier and, for attributes, the description, field type and allowed values so agents can reference entities Rock stores by GUID rather than by ID.

  • AI: Added a Core Administration AI agent skill that gives agents read access to Rock's core configuration, including Defined Types and values, entity types, categories, field types, attributes and system communications.

  • AI: Added a GetSystemPhoneNumber AI agent tool that returns a system phone number's full details, including the unique identifier that workflow action settings store it by.

  • AI: Added a Workflow Builder AI agent skill. It discovers the installed workflow action components and their settings and can create, edit and remove workflow types, attributes, activities, actions and forms.

  • AI: Added a Community Knowledge Base AI agent skill that searches Rock documentation and community content, searches the Rock source code and surfaces curated topic guides.

  • Connection: Fixed opportunity-level "Activity Added" connection workflows never launching when a specific activity type was selected, and repaired existing broken triggers.

  • Event: Fixed the Calendar Event Item Occurrence List block so registration and group links use the page's friendly route when one is configured (for example /RegistrationInstance/XYZ instead of /page/404?RegistrationInstanceId=XYZ).

  • Engagement: Fixed an issue where system-level Step Type attributes (such as "Baptized Here") could be deleted from the Step Type editor.

  • Finance: Fixed the Fundraising Matching block so saving no longer clears a transaction's group or group member link when the linked group has been made inactive.

  • Event: Fixed an error that occurred when copying an Event Occurrence whose linked group was set to "No Registration Required." Previously, saving the copy would fail and require manually deleting and re-linking the group as a workaround. Copying an Event Occurrence now also clears the URL Slug on the new Linkage, so saving the copy without editing the Linkage no longer silently saves a duplicate slug.

  • Core: Fixed bot traffic being recorded as page view interactions. Crawlers are now identified before an Anonymous Visitor record is created, crawler detection uses a maintained pattern list instead of a short keyword list and prefetched or prerendered pages are no longer counted. A one-time job removes the Anonymous Visitor records bots already created.

  • Core: Improved the performance of the Exception List, Exception Occurrence List and Exception Detail blocks.

  • Connection: Added the Connection Board and Grid View to the Connections Hub block, giving users more flexible and engaging ways to view and manage connection requests.

  • AI: Improved AI agent Lookup and List tool results to include each record's unique identifier, so an agent can reference an entity that Rock stores by GUID without a second call.

  • CMS: Added a CMS AI agent skill that lets agents explore and manage sites, pages and blocks.

  • Core: Added a flexible document store that lets Rock save structured JSON records with their own document types, security and searchable fields.

  • Core: Fixed plugin loading so that a single incompatible plugin component is skipped and logged instead of preventing Rock from starting.

  • Mobile: Fixed the Giving block's default success screen claiming a confirmation email was sent when no Receipt Email is configured or the gift was scheduled.

  • CRM: Fixed an issue where the legacy Person History block was not properly chopped.