Stand with Ukraine 🇺🇦
Products
Services
Blog
About Us

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 to 404 errors and empty UI entries.

  • Fix: Inner Macro Cast Exception
    Fixed a type mismatch (LinkedHashMap to HandlebarGlobalContext) occurring when calling macros within macros — especially impacting permissions and space-level macros.

  • Fix: Label Retrieval Cast Error
    Addressed casting error (Integer to String) when using getSpaceLabels in 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.