May 2024
🔍 Summary
May marked a significant milestone for the User Macro for Confluence Cloud app. The core template engine transitioned from Handlebars to Apache Velocity, aligning the cloud experience with the legacy Confluence Server macros. This foundational change brings improved compatibility and opens the door to greater extensibility. In parallel, we focused on security upgrades, REST API helper automation, and UI safeguards.
✨ New Features & Enhancements
Switched from Handlebars to Apache Velocity
A major shift in the macro engine: we deprecated Handlebars and adopted Velocity for templating to align with the original User Macro behavior from Confluence Server.#set($username = $currentUser.name) <p>Hello, $username!</p>
Introduced the Render Mode detection
Added$renderModeto the Velocity context to differentiate between page states like view/edit for conditional rendering logic.#if($renderMode == "edit") <p>You are editing this macro.</p> #else <p>This macro is in view mode.</p> #end
New Array / List / Set Helpers
Added utility helpers to handle arrays and collections — enabling macros to calculate list sizes or iterate more easily.Improved
setHelper Syntax
Simplified thesethelper — now defaulting to a name/value format without requiring explicit parameters. Updated documentation accordingly.#set($myVar = "value") <p>$myVar</p>
Additional Context Helpers Added
Introduced new helpers for expanded insight into macro execution context (e.g., user, page, environment variables).Foreach Documentation Overhaul
Improved theforeachhelper docs with practical examples:Simple iteration over user groups
Advanced usage with deep object traversal and conditions
External Request Helper
A new$requesthelper enables calling external services (e.g., random quotes, integrations).OpenAPI Helper Registration for Jira REST API v3
Automated the registration of allGETendpoints from Jira's v3 REST API to support richer dynamic content in macros."Last Rendered" Column in Macro Table
Added a new timestamp field showing the last time a macro was rendered, improving audit and usage tracking.OAuth “Golden Button”
Introduced a styled banner/button UI to simplify the OAuth authentication flow for connected services.Snyk Security Integration
Added Snyk-based scanning to CI/CD to ensure the app meets Atlassian’s best practice guidelines for secure development.Improved UX for Deleting User Parameters
The "Delete" action is now hidden inside a modal for safety. Users must confirm before a parameter is permanently removed.
🛠 Bug Fixes & Improvements
JiraManager Fails to Render in Edit Mode
Fixed an issue where macros usingJiraManagerdisplayed the OAuth prompt in edit mode but failed to render properly afterward.Error on Long Macro Names (
DataIntegrityViolationException)
Added length validation to prevent database errors when creating macros with excessively long names.