November 2023
🔍 Summary
November was packed with technical improvements and UI cleanup. A new client-side JavaScript whitelisting mechanism was introduced, performance was boosted through caching, and the macro editing experience received multiple refinements. Several complex casting and rendering bugs were also patched.
✨ New Features & Enhancements
Client Whitelisting for JavaScript Execution
Introduced secure client-based whitelisting to enable JavaScript execution for trusted clients (e.g., BZT). This helps isolate risk while accommodating advanced use cases.First-Level Atlassian API Caching
Implemented short-term caching (3-minute TTL) for Atlassian API responses to reduce load on NGINX and improve performance when macros make multiple backend calls.String/Text Helpers Added
Added a new set of helpers for string manipulation, following Jira's smart value approach, to simplify common operations in templates.Helper Search Supports Keys
Enhanced helper search functionality to support searching by internal key names, not just display labels.Static Search Bar in Helper Panel
Continued improvements from previous months: users can now search for helpers without losing context while scrolling.UI Enhancements
Clear Filters Button added to improve list navigation.
Library Tab Redesigned to display macros as a list with optimized rendering using
react-virtualized.Jump-Free Admin Page Load: Fixed initial shrink-then-expand layout behavior.
Optimized Redux Usage to reduce unnecessary requests.
Template Update Optimization
When editing a macro template, only the template is updated (not the full macro definition) if no other changes were made, cutting down on redundant API calls.
🛠 Bug Fixes & Improvements
Critical Fix: Library Render Path & Icon Missing
Resolved a major bug where copied library macros failed to render due to missing base paths and icons — leading to404errors and empty UI entries.Fix: Inner Macro Cast Exception
Fixed a type mismatch (LinkedHashMaptoHandlebarGlobalContext) occurring when calling macros within macros — especially impacting permissions and space-level macros.Fix: Label Retrieval Cast Error
Addressed casting error (IntegertoString) when usinggetSpaceLabelsin templates.Fix: Monaco Editor Lock-up with Empty Templates
Prevented a scenario where scripts with only raw JS (e.g.,<script>alert()</script>) would be stripped and cause the editor to fail loading afterward.Fix: Category Input Display & Delete
Fixed missing macro categories in the input field and restored working “x” buttons for category removal.Fix: Macro List Shake on Search
Eliminated scrollbar-triggered shaking on the My Macros page during search due to inconsistent layout shifts.Fix: Helpers Copy Button (Single Result Edge Case)
Corrected copy behavior when only one helper remained after filtering. The UI now re-renders properly for interaction.