Skip to content

v4.14.0 - Summer '24 Release

Compare
Choose a tag to compare
@jongpie jongpie released this 21 Aug 05:55
· 21 commits to main since this release
f01faf0

Managed Package Release - v4.14.0

Happy late Summer '24 release! 🥳😎☀️ It's still technically summer, even if the Winter '25 release is quickly approaching 😅

This release is for both the unlocked package (as always), as well as the managed package! You can see everything that's changed between v4.13.0 and v4.14.0 by reviewing:

  • The v4.14.0 milestone to see all of the issues & pull requests that are included in the this release.
  • The diff between v4.13.0 and v4.14.0 to see all of the code & metadata changes that have been committed since the last managed package release.

For orgs that are upgrading to this version of the managed package: There are several notable changes for this release, including...

  • ✅ This release now provides a ton of new features (these features have been available in the unlocked package for a few months, but are new for the managed package):

    • Release v4.13.1 - ❤️ Apex observability enhancments 😍. Nebula Logger now automatically logs a snippet of your Apex code, providing a snapshot of the relevant codeblock. These snippets are displayed in a very fancy code-viewer on the LogEntry__c page, using PrismJS

      • This release also introduced several new fields on LogEntryEvent__e and LogEntry__c to streamline & simplify reporting on the metadata that generated each log entry

      image

    • Release v4.13.2 - org limits are now automatically stored on every Log__c record, using the info returned by the class System.OrgLimits

        • It also introduced a new LoggerParameter__mdt record, StoreOrganizationLimits, that can be used to disable capturing org limits data. By default, it's enabled (true)

      image

    • Release v4.13.3 - Optionally enforce scenario-based logging usage, for teams that want to always require scenario-based logging to be used.

    • Release v4.13.5 - Several internal performance improvements were made to Nebula Logger's codebase (in the logger-engine layer/directory) to help reduce CPU time usage.

      • It also introduced a new LoggerParameter__mdt record, StoreHeapSizeLimit, that can be used to disable populating the fields LogEntryEvent__e.LimitsHeapSizeUsed__c and LogEntryEvent__c.LimitsHeapSizeUsed__c. This can help further improve performance for orgs that generate a lot of log entries in a single transaction, as calling the method System.Limits.getHeapSize() is a very CPU-intensive method call.
    • Release v4.13.14 - Custom field mappings support. This provides a way to easily extend Nebula Logger's data model by creating & populating your own custom fields on Nebula Logger's custom objects

      image

  • 🐞This release was delayed a few months so that some additional bugs could be fixed that impacted multiple orgs/companies using the managed package:

    • Release v4.13.15: Bugfix for the field LogEntryEvent__e.BrowserUrl__c not being long enough to store some URLs, which caused some logging data to fail to save
    • Release v4.13.16: Bugfixes for some issues related to scenario-based logging & the LoggerScenarioRule__mdt custom metadata type, which caused some logging data to fail to save
    • Release v4.13.7: Bugfixes for a lot of issues with JavaScript stack trace parsing, which caused inaccurate & incomplete data to be saved in fields like LogEntry__c.OriginLocation__c, LogEntry__c.OriginSourceApiName__c, LogEntry__c.OriginSourceActionName__c, etc. JavaScript stack trace parsing has been completely rewritten, and now uses stacktrace.js to handling parsing

Core Unlocked Package Changes - v4.14.0

This release is fairly small for the unlocked package, compared to the previous release of v4.13.17. However, this release is a milestone - it's the 100th package version of the unlocked package 💯 🥳 🪵 (The 100th release of Nebula Logger as a project was release v4.13.2, but the unlocked package wasn't created until release v4.4.1)

Summer '24 Release Upgrade

  • Bumped all metadata to API v61.0 (Summer '24 release)
    • Also updated the list of picklist values in several 'API version' picklist fields
  • Resolved #697 by updating LogEntryRecordPage and LogRecordPage flexipages to conditionally display tabs (tab-visibility functionality was added in Salesforce's Summer '24 release)
    • Also eliminated the tab "Database Result Details" on LogEntryRecordPage & consolidated its contents to instead be part of the tab "Related Records". This keeps all of the fields related to SObject data grouped together.

New LogEntry__c List Views

  • Added 5 new list views on LogEntry__c
    1. All Exception Log Entries

    2. All HTTP Request Log Entries

    3. All HTTP Response Log Entries

    4. All REST Request Log Entries

    5. All REST Response Log Entries

      image

Metadata & Code Cleanup

  • Deprecated the formula field LogEntry__c.LoggingLevelWithImage__c, and reverted to only using LogEntry__c.LoggingLevel__c. The emojis shown in LoggingLevelWithImage__c have now been added to the labels of the picklist values in the global value set LoggingLevel.
    • By adding the emojis to the picklist values of LoggingLevel__c, it provides the same visual indicator as LoggingLevelWithImage__c, but LoggingLevel__c provides a meaningful sort order in list views, queries, etc. - sorting on LoggingLevelWithImage__c doesn't provide a very meaningful sort order.
    • ⚠️ Existing list views have been updated to use LoggingLevel__c, which will automatically be changed for orgs upgrading versions of the unlocked package. But for orgs using the managed package, the list views will not be automatically updated, you will need to manually update the list views' selected fields (if desired).
  • Fixed #688 by updating LoggerSettingsController_Tests to call LogManagementDataSelector.getInstance().getUsersByNameSearch(), instead of duplicating the query
  • Updated the descriptions of the 4 included permission sets to clarify what each one provides
  • Code cleanup (internal use only): Updated public instance method LogEntryEventBuilder.setTimestamp() to use a fluent API, and streamlined the existing usages of setTimestamp() in several other classes by updating to use the fluent API

Pipeline & Dev Changes

  • Fixed a flaky pipeline integration test in nebula-logger/extra-tests/tests/LogEntryEventHandler_Tests_FieldMappings.cls
  • Added some sf CLI environment variables to build.yml to disable checking for updates during pipeline runs
    • The sf CLI is periodically upgraded in the repo, there's no need for the pipeline to check during every run
  • Added new scratch org def file config/scratch-orgs/dev-scratch-def.json that will only be used for development (not in the pipeline or when creating package versions)
    • Also renamed the existing scratch def files to have a 'build-' prefix to clarify their purpose vs the (new) dev def file
  • Added new path to sfdx-project.json for nebula-logger/dev/ to store some extra metadata that's used during dev. This metadata doesn't impact Nebula Logger directly & is not included in Nebula Logger's packages
    • This new path is now the default in sfdx-project.json for creating/retrieving new metadata

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.13.17...v4.14.0

Core Managed Package - Nebula namespace

Full Changelog: v4.13.0...v4.14.0