Releases: jongpie/NebulaLogger
v4.17.4 - Fix for New Platform Requirement of Verified Email Domains
Core Unlocked Package Changes
- Fixed #972 (reported by @arafesthain) where Salesforce has made the odd choice to break existing code by now requiring email domains to be verified, resulting in Apex code now throwing an exception when the email domain isn't verified 😡 (regardless of the API version used by Apex code)
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.17.3...v4.17.4
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tg70000004jmXAAQ - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tg70000004jmXAAQ
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tg70000004jmXAAQ
v4.17.3 - relatedLogEntries LWC Improvements
Core Unlocked Package Changes
- Fixed #896 reported by @anthonygiuliano (and confirmed by @dominykasvitkus) by leveraging SOSL to search for a matching record ID (instead of strictly filtering on
LogEntry__c.RecordId__c) - Fixed #805 reported by @zimny349 by updating Apex class
RelatedLogEntriesControllerto usetoLabel()in SOQL when querying picklist fields - Improved the layout of the lightning card & datatable so the component visually better aligns with the appearance of standard related lists
- Scope creep: fixed #952 reported by @Mike-Cleaver-LB by adding Apex class access for
CallableLoggerto theLoggerLogCreatorpermission set to ensure the running user can use it in contexts like OmniStudio
In the screenshots below, the same data is used (same Account record, and same LogEntry__c records exist) - only the relatedLogEntries LWC has changed between the 2 screenshots
Before:
After:
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.17.2...v4.17.3
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tg70000001IMHAA2 - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tg70000001IMHAA2
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tg70000001IMHAA2
v4.17.2 - Bugfix: Modal Close Buttons Not Rendered Correctly
Core Unlocked Package Changes
Thanks to @gredrian08 for reporting issue #936 & fixing it in PR #937 🥳
- Updated several LWCs to correct a problem with the
Xclose button on modals not rendering correctly due to recent changes in SLDS v1 & v2
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.17.1...v4.17.2
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tg700000015gnAAA - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tg700000015gnAAA
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tg700000015gnAAA
v4.17.1 - Bugfix: Allowing to log SObject without ID field
Core Unlocked Package Changes
Thanks to @TrangOul for fixing issue #911 in PR #912 🥳
- Updated
LogEntryEventBuilderto catch/ignore exceptions caused by anSObjectrecord not having anIdfield (platform event objects are the most notable examples of this issue)
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.17.0...v4.17.1
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tg7000000157JAAQ - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tg7000000157JAAQ
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tg7000000157JAAQ
v4.17.0 - Summer '25 Release
After taking a much-needed break from open source work, the v4.17.0 release is finally ready!
Managed Package Release - v4.17.0
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.16.0 and v4.17.0 for the managed package by reviewing:
- The v4.17.0 milestone to see all of the issues & pull requests that are included in the this release.
- The diff between v4.16.0 and v4.17.0 to see all of the code & metadata changes that have been committed since the last managed package release.
Managed Package Enhancements & Bugfixes
- ✅Release
v4.16.5- Capture Apex Cursor Transaction Limits by @vikashkrml in PR #892 → closed issue #760 - 🐞Release
v4.16.4- Bugfix: logger LWC Initialization Message by @jongpie in PR #884 → fixed issue #870 reported by @dominykasvitkus - ✅Release
v4.16.3- Made LogBatchPurger's Batch Size Configurable` by @jongpie in PR #880 → closed issue #807 reported by @halderanindya - ✅Release
v4.16.2- Origin Location Stacktrace Parsing Improvement by @jamessimone in PR #872 - ✅Release
v4.16.1- Data Masking & String Truncation Improvements by @jongpie in PR #866 → fixed issue #695 reported by @itague
Core Unlocked Package Release - v4.17.0
These changes are new for both the unlocked package and the managed package.
Summer '25 Release Upgrade
- Bumped all metadata to API
v64.0(Spring '26 release)- Also updated the list of picklist values in several 'API version' picklist fields on
Log__candLogEntry__c
- Also updated the list of picklist values in several 'API version' picklist fields on
Apex Logging Bugfixes
- Updated
Loggerto more accurately reflect the current quiddity value when logging the system messageLogger - Saving X log entries via <quiddity> - Fixed #910 - Updated
CallableLoggerto useList<String>instead ofList<Object>for tags passed in via OmniStudio- Previously using
List<Object>caused some exceptions, and the values should always be strings anyway
- Previously using
JavaScript Logging Bugfixes
- Updated
loggerLWC to reflect the latest changes in Salesforce's JavaScript stack traces- These changes broke the previous stack trace parsing logic - hopefully the modified logic is more resilient to future changes
- The Jest tests in
logger.test.jshave also been expanded to include parsing examples of stack traces from Chrome, Firefox, Edge - with & without debug mode (which can make a difference in the stack traces & parsing logic)
- Updated
loggerLWC to immediately instantiate an internal instance ofLoggerService- This was previously done in
connectedCallback, which added an extra unnecessary event cycle that could cause some occasional goofiness
- This was previously done in
PrismJS Enhancements & Bugfixes
- Upgraded the version of PrismJS in
LoggerResourcesstatic resource from1.29.0to1.30.0 - Updated some CSS in
loggerCodeViewer.cssto correct some rendering issues due to changes in SLDS + SLDS v2 - Fixed #777 - Corrected an issue in
loggerCodeViewerthat caused PrismJS's line highlighting to not work correctly when only 1 instance ofloggerCodeViewer(used by other LWCs likelogEntryMetadataViewer) was on a page
LWC Testing Improvements
- Fixed #881 - Added more Jest tests in to the LWCs tests below to validate existing functionality that wasn't previously covered by tests:
logEntryEventStream.test.jslogEntryMetadataViewer.test.jsloggerHomeHeader.test.jslogger.test.jsloggerPageSection.test.jsloggerSettings.test.jslogViewer.test.js
- Added a
recipesLWCloggerWrapperto mimic orgs that use Nebula Logger'sloggerLWC through their own logging LWC
Apex Testing Improvements
- Updated
LogEntryEventHandler_Teststo only use mock CMDT records (instead of relying on the metadata records deployed to the org)- All other test classes were previously updated to only use mock records, but this particular test class was overlooked
- Partially addressed #922 - Updated pipeline-only tests in
LogEntryEventHandler_Tests_FieldMappings.clsto validate that custom picklist fields with restricted values are handled properly
Pipeline Changes
- Updated scratch org definition files to tweak how OmniStudio is enabled in scratch orgs
- Updated pipeline & local dev scripts to use OmniStudio managed package v258.6 (Winter '26 release)
- Upgraded some dev dependencies in
package.json
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.16.5...v4.17.0
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tg70000000rNhAAI - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tg70000000rNhAAI
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tg70000000rNhAAI
Core Managed Package - Nebula namespace
Full Changelog: v4.16.0...v4.17.0
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tg70000000r5xAAA - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tg70000000r5xAAA
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tg70000000r5xAAA
v4.16.5 - Capture Apex Cursor Transaction Limits
Thanks to @vikashkrml for working on this release in PR #892 🥳👏
Core Unlocked Package Changes
Fixed #760 by adding auto-capturing of Apex cursor transaction limits for rows & fetch calls, stored in new fields on LogEntryEvent__e & LogEntry__c
-
Added 4 new number fields on both
LogEntryEvent__eandLogEntry__cto capture Apex cursor limit values returned by theLimitsclassLimitsApexCursorFetchCallsUsed__c🟰System.Limits.getFetchCallsOnApexCursor()LimitsApexCursorFetchCallsMax__c🟰System.Limits.getLimitFetchCallsOnApexCursor()LimitsApexCursorRowsUsed__c🟰System.Limits.getApexCursorRows()LimitsApexCursorRowsMax__c🟰System.Limits.getLimitApexCursorRows()
-
Added 2 new formula fields on
LogEntry__cto show the percentage used of both Apex cursor fetch calls and Apex cursor rows. This formula fields provide the same functionality as the other existing formula fields onLogEntry__cshown on theTransaction Limitstab of the flexipage
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.16.4...v4.16.5
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tKe0000011N4KIAU - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tKe0000011N4KIAU
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tKe0000011N4KIAU
v4.16.4 - Bugfix: logger LWC Initialization Message
Core Unlocked Package Changes
Fixed #870 (reported by @dominykasvitkus) by updating the logger LWC initialization message to only print when JavaScript console logging is enabled via LoggerSettings__c. Also resolved some test isolation issues in logger.test.js + test improvements + code cleanup:
- Updated
loggerService.jsto only callconsole.info()with an init message ('logger component initialized') when console logging is enabled viaLoggerSettings__c.IsJavaScriptConsoleLoggingEnabled__c - Replaced
enableSystemMessages()anddisableSystemMessages()inloggerService.jswith a new static variableLoggerService.areSystemMessagesEnabled(intended for internal-use only) - Updated
logger.test.jsto resetLoggerService.hasInitializedandLoggerService.areSystemMessagesEnabledstatic variables inbeforeEach()(instead ofafterAll()) - Switched to using
jest.resetAllMocks()instead ofjest.clearAllMocks()inlogger.test.jsfor better test isolation - Updated all test functions to consistently use all 3 logger creation methods (
createLogger,getLogger, andgetMarkupLogger)
Also include a 🤏 liiiiiiitle bit of scope creep:
- Updated all Jest tests to import createElement from '@lwc/engine-dom' (instead of 'lwc')
- Updated the project's threshold for code coverage in
codecov.ymlto compensate for the lower code coverage in LWC tests for now (currently around ~86%). Eventually, tests & code coverage for LWC will be improved - but for now, the constant pipeline alerts from codecov.io aren't particularly helpful 😅 - Cleaned up a small code block in
LogBatchPurgerusing the null coalescing operator (??) to reduce the lines of code needed - Corrected the label on field
LoggerScenarioRule__mdt.IsLogAssignmentEnabled__cto use the termLogger Scenario, instead of the deprecated termLog Scenario
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.16.3...v4.16.4
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tKe0000011MyWIAU - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tKe0000011MyWIAU
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tKe0000011MyWIAU
v4.16.3 - Made LogBatchPurger's Batch Size Configurable
Core Unlocked Package Changes
Fixed #807 by adding the ability to declaratively configure the default batch size in LogBatchPurger. This can be used to reduce the batch size to help with mitigating Apex heap size exceptions that can sometimes happen in the LogBatchPurger job when deleting larger volumes of logging data. And making it now configurable makes it easy to quickly change it in orgs as needed.
- Add new
LoggerParameter__mdtrecordLogBatchPurgerDefaultBatchSize - ℹ️ The new default batch size for
LogBatchPurgeris now500(and now controlled viaLogBatchPurgerDefaultBatchSize). - Previously,
2000was used, but500is the new default to try to help avoid Apex heap size exceptions. If desired, you can update the record'sValue__cfield to2000to restore the previous value/behavior used prior to this release
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.16.2...v4.16.3
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tKe0000011Mr1IAE - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tKe0000011Mr1IAE
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tKe0000011Mr1IAE
v4.16.2 - Origin Location Stacktrace Parsing Improvement
Slight tweak to origin location stack trace parsing in Apex to improve how origin location is displayed:
- before, it was possible for
External entry pointto be reported as the origin location even when a valid stacktrace was present beneath that text - if there is a valid stacktrace line beneath the words
External entry point, those will be used as the origin location from now on
Noticed while we were cross-checking the following issue: jamessimone/apex-rollup#683 (comment)
v4.16.1 - Data Masking & String Truncation Improvements
Core Unlocked Package Changes
Bundled Data Masking Rules Bugfixes + New American Express (AMEX) Masking Rule
- Bugfix: Fixed issues in the regular expressions (regexes) used in the 3 existing
LogEntryDataMaskRule__mdtrecords (stored in the fieldSensitiveDataRegEx__c). The previous regexes were too aggressive, and would sometimes incorrectly mask substrings of non-credit card & non-social security number values.SocialSecurityNumberMastercardCreditCardNumberVisaCreditCardNumber
- Enhancement: Added a new bundled record in
LogEntryDataMaskRule__mdtfor American Express (AMEX) credit card numbers -AmericanExpressCreditCardNumber(similar to the existing rules for Visa & Mastercard)
Data Masking Bugfixes + Truncation Bugfixes + New *Truncated__c Boolean Fields
-
Bugfix: Fixed #695 by adding another round of string truncation after applying data masking to fix issues where string values could still be too long for the corresponding fields
- Context: Some data masking rules can (intentionally) cause a text value's length to increase. For example, social security numbers are formatted with
-dashes when masked, so values like123456789(9 characters) are 2 characters longer when masked as***-**-6789(11 characters). - In previous versions of Nebula Logger, text was truncated, then masked. With a combination of long text values + matching data to mask, the resulting text value could be too long. This was especially a problem for the
Message__cfield in several orgs, but the same issue could/did happen with several other text fields. - In this release, the text is truncated again after masking to ensure the data will fit into the corresponding field.
- Context: Some data masking rules can (intentionally) cause a text value's length to increase. For example, social security numbers are formatted with
-
Optimization: Refactored some duplicated logic in
LogEntryEventBuilderfor truncating + masking various text values- There are several fields being masked + truncated (and more fields will probably be added in the future), and the existing code had a lot of code duplication happening.
-
Enhancement: Added several new
*Truncated__cboolean fields on bothLogEntryEvent__e&LogEntry__cfor some data points where it would be helpful to have the context that data has been truncated. There are 5 sets of new fields included:LogEntryEvent__e.HttpRequestBodyTruncated__c➡️LogEntry__c.HttpRequestBodyTruncated__cLogEntryEvent__e.HttpResponseBodyTruncated__c➡️LogEntry__c.HttpResponseBodyTruncated__cLogEntryEvent__e.RecordJsonTruncated__c➡️LogEntry__c.RecordJsonTruncated__cLogEntryEvent__e.RestRequestBodyTruncated__c➡️LogEntry__c.RestRequestBodyTruncated__cLogEntryEvent__e.RestResponseBodyTruncated__c➡️LogEntry__c.RestResponseBodyTruncated__c
-
Enhancement: Updated the
LogEntryRecordPageflexipage to add the new*Truncated__cboolean fields onLogEntry__c(mentioned above, and shown below)- These fields are configured to only show on the page when
true, similar to the behavior used for the existing*Masked__cfields, likeLogEntry__c.MessageMasked__c&LogEntry__c.RecordJsonMasked__c
- These fields are configured to only show on the page when
Pipeline Improvements for extra-tests Directory
- DevOps/Pipeline Improvement: Added new pipeline-only test classes with integration tests to validate that the custom metadata type (CMDT) records bundled with Nebula Logger work as expected
- This includes validating records in
LogEntryDataMaskRule__mdt,LoggerParameter__mdt,LoggerSObjectHandler__mdt, andLogStatus__mdt - Since orgs can choose to modify or delete the bundled CMDT records, this level of testing needs to happen just in the pipeline
- This includes validating records in
- Re-organized the Apex test classes + metadata in
nebula-logger/extra-teststo make it a little more clear what everything is being used for. The number of files has grown a lot over the last few years, so a little cleanup was needed.- This directory's metadata is only used by the pipeline to more thoroughly test some features & metadata that's bundled with Nebula Logger - none of it is included when installing Nebula Logger, so these changes should not have any direct impact to people using Nebula Logger.
Installation Info
Core Unlocked Package - no namespace
Full Changelog: v4.16.0...v4.16.1
- SF CLI:
sf package install --wait 20 --security-type AdminsOnly --package 04tKe0000011MXEIA2 - Sandbox: https://test.salesforce.com/packaging/installPackage.apexp?p0=04tKe0000011MXEIA2
- Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04tKe0000011MXEIA2




