Repository navigation
Tags: jongpie/NebulaLogger
Tags
Bugfix: Fixed NullPointerException on Flow Logging Actions (#1021) * Fixed #997 NullPointerException on Flow inputs when Salesforce no longer shows the per-parameter include toggles * There is recent-ish change in Salesforce Flow Builder that removed the per-input "include this parameter?" toggles, which now causes Flow to always send every optional input. Boolean inputs now come across as null, instead of using the default values assigned in the Flow classes. The Flow logging actions have been updated to expect & handle null for Boolean values. * Updated build.yml to set a few more environment variables for the sf CLI
Capture new Apex Cursor and Apex Pagination Cursor transaction limits (… …#1019) * Started capturing new Apex cursor and pagination cursor transaction limits added in Salesforce's Spring '26 release, using System.Limits.getApexCursors(), getApexPaginationCursors(), and getApexPaginationCursorRows() (plus their getLimit* counterparts) on LogEntryEvent__e and LogEntry__c (the same way other transaction limits are already captured) * Replaced button images used in README.md with more modern versions using SLDS v2 styling
Add AI Agent Skills support using the skills.sh convention (#1004) * Add AI Agent Skills documentation and new skills to cover details like installation, instrumentation, log management, testing, and best practices * Added a new 'installation count' badge (provided by skills.sh) to README.md * Updated some of the build scripts to auto-update the unlocked package ID and version number in skills/nebula-logger-install any time a new package version is created (just like how README.md is auto-updated). Managed package IDs will be updated manually for now (most of the managed package changes are done manually) * Also fixed the managed package version ID for v4.19.0 in nebula-logger/managed-package/sfdx-project.json, it had the wrong ID * A little bit of scope creep to fix a small issue from PR #965 where some of the pipeline's tests specifically for Experience Site users were failing --------- Co-authored-by: Jonathan Gillespie <jonathan.c.gillespie@gmail.com>
Added overloads to Logger.logDatabaseErrors() methods with List<SObje… …cts> (#985) * Added overloads to Logger.logDatabaseErrors() methods with List<SObject> records * Changed the behavior of LogEntryEventBuilder.setApprovalResult() overloads and LogEntryEventBuilder.setDatabaseResult() overloads to treat a list with 1 record as a list, instead of as a single instance. This makes it consistent with the behavior of setRecord() overloads --------- Co-authored-by: Jonathan Gillespie <jonathan.c.gillespie@gmail.com>
Added overloads to Logger.logDatabaseErrors() methods with List<SObje… …cts> (#985) * Added overloads to Logger.logDatabaseErrors() methods with List<SObject> records * Changed the behavior of LogEntryEventBuilder.setApprovalResult() overloads and LogEntryEventBuilder.setDatabaseResult() overloads to treat a list with 1 record as a list, instead of as a single instance. This makes it consistent with the behavior of setRecord() overloads --------- Co-authored-by: Jonathan Gillespie <jonathan.c.gillespie@gmail.com>
v4.19.0 - Spring '26 Release (API v66.0) (#1000) * Bumped all metadata to API v66.0 (Spring '26 release) * Added a custom index on LogEntry__c.Timestamp__c to help speed up queries, list views, etc. * Resolved #982 by adding RestResponseStatusCode__c as another filter in list view & flexipage to determine if a LogEntry__c record has REST response details * Fixed #1007 by updating LogEntryEventBuilder to, hopefully, properly truncate all of the string fields for HTTP & REST request & response data * Finished marking a few fields as deprecated in core object LoggerPlugin__mdt that previously were only SORT OF deprecated * Fixed a small-but-important in the trigger handler framework - disabled LoggerSObjectHandler__mdt records are now (intentionally) queried so disabling the corresponding trigger handler works correctly * Fixed HTML-injection bug in loggerCodeViewer that stripped angle-bracketed code * The previous approach used for rendering code with PrismJS was causing any code snippet containing < and > (like List<SomeClass> and Map<String, Object>) to be parsed by the browser as HTML, which was stripped out/ignored, resulting in the code snippet displayed being incorrect. Everything should render correctly now * Fixed capitalization on a few SObjectType references for consistency * Added some additional auto-generated classes used by Experience Cloud sites & added name-shadowing class 'Site' * Made a few small enhancements in some config files, including lint-staged.config.js, .prettierrc, and .npmrc
Bugfix: Removed most of the usage of UserInfo.getSessionId() (#995) * Changed Logger.cls to remove most of the usage of UserInfo.getSessionId() - it can't cause problems if we don't use it ^_^ * Now the only place that the session ID is referenced is when using the REST save method. The user session ID is synchronously passed to the internal class RestApiSaver - and passing it like this will (intentionally) force a synchronous runtime exception when there isn't a session ID (instead of it silently failing async) * Added extra metadata (used only in the pipeline & testing) to recreate previously reported issues related to quiddity & user session ID * Added an example email service, ExampleInboundEmailService (used only in the pipeline & testing), to have a full solution to re-test issue #155 * Added Experience Cloud metadata SSO logins, auth provider, and custom registration handlers (used only in the pipeline & testing), to have a full solution to re-test issue #224 * Changed build.yml to run all scratch orgs in parallel (instead of 3 at a time), thanks to @jamessimone and @mitchspano for getting the devhub limit increased! * Refactored build.yml pipeline to share setup steps to make maintenance much easier * Split common CI setup into two composite actions, .github/actions/setup-npm/action.yml and .github/actions/authorize-dev-hub/action.yml * Extracted the scratch-org test sections into a new reusable workflow at .github/workflows/test-scratch-org.yml, with parameters for definition file, OmniStudio install, optional extra metadata directory, and Codecov upload toggle * Converted the 7 near-identical scratch-org jobs in build.yml into a single matrix-driven caller of the reusable workflow. Adding a new scratch org is now one matrix row; downstream `needs:` lists shrink from 8/9 names to 3. * Pipeline scratch orgs are now create with `--alias pipeline-scratch-org` and a `--description` containing the GitHub run ID, so the in-job deletion can make sure it's targeting the correct scratch org * Scratch org delete step has been updated to use `continue-on-error: true` so a transient delete failure does not mask a real test failure. * Added new workflow (.github/workflows/delete-stale-scratch-orgs.yml) to run an hourly cleanup of orphaned pipeline scratch orgs older than 2 hours * For each scratch org, it parses the run ID out of the description and asks the GitHub REST API whether the owning run is still active. Orgs whose run is queued or in-progress are skipped, so a slow but healthy build never has its scratch org deleted while the job is still running. * Updated GitHub Actions to Node 24 major versions (GitHub is deprecating the previously used versions, built for Node 20) * Added the fancy new plugin @jongpie/sf-dotenv-cli-plugin & a small node script to export the current user's username to .env so that deploying the example email service works in the pipeline * Made the pipeline a little bit faster by making 'code-quality-tests' job run at the same time as (instead of as a prerequisite for) 'lwc-jest-tests' and 'scratch-org-tests'
Bugfix: PrismJS loading improvements & error handling (#988) * Created a new node script to auto-retrieve & auto-minify PrismJS files (including plugins & languages) to streamline the update process & to switch to minified versions * Updated folder structure for static resources to include a dedicated Prism directory, as well as a themes subdirectory * This is all a bit of a prefactor for eventually having other static resource files, and possibly supporting other Prism themes in the future * Updated LWC loggerCodeViewer to use the new PrismJS minified files & to add error handling for loading static resources * Now when there's an issue loading static resources or executing Prism, the LWC should (hopefully) show a fallback version of the code snippet - it won't look as nice as the Prism version, but it will let users see the relevant data, instead of endlessly displaying a spinner ~_~ * Finally fixed a long-standing issue in LWC loggerCodeViewer where calling Prism.highlightAll() twice was previously needed * Expanded tests for LWC logEntryMetadataViewer, and cleaned up a few bits of code
Add Declarative Configuration for Ignoring Apex Classes in Stack Trac… …es (#908) * feat: Add declarative configuration for ignoring Apex classes in stack traces with new LoggerParameter__mdt record IgnoredApexOrigins. This allows admins to globally configure Apex classes to be filtered from stack traces without requiring developer code changes, addressing issue #890. --------- Co-authored-by: Jonathan Gillespie <jonathan.c.gillespie@gmail.com>
PreviousNext