Changeset 3802637
- Timestamp:
- 11/15/2026 01:34:19 AM (less than one hour ago)
- Location:
- debugbundle
- Files:
-
- 272 added
- 16 edited
-
tags/2.1.3 (added)
-
tags/2.1.3/CHANGELOG.md (added)
-
tags/2.1.3/LICENSE (added)
-
tags/2.1.3/MIGRATION-2.0.md (added)
-
tags/2.1.3/MIGRATION-2.1.md (added)
-
tags/2.1.3/README.md (added)
-
tags/2.1.3/SECURITY.md (added)
-
tags/2.1.3/assets (added)
-
tags/2.1.3/assets/dist (added)
-
tags/2.1.3/assets/dist/debugbundle-browser.js (added)
-
tags/2.1.3/assets/dist/sdk-build.json (added)
-
tags/2.1.3/composer.json (added)
-
tags/2.1.3/composer.lock (added)
-
tags/2.1.3/debugbundle.php (added)
-
tags/2.1.3/languages (added)
-
tags/2.1.3/languages/index.php (added)
-
tags/2.1.3/readme.txt (added)
-
tags/2.1.3/src (added)
-
tags/2.1.3/src/AdminPage.php (added)
-
tags/2.1.3/src/AdminTestEvents.php (added)
-
tags/2.1.3/src/AdminTestResult.php (added)
-
tags/2.1.3/src/BrowserAssets.php (added)
-
tags/2.1.3/src/BrowserRelayRoute.php (added)
-
tags/2.1.3/src/CachedConfigFetcher.php (added)
-
tags/2.1.3/src/Compatibility.php (added)
-
tags/2.1.3/src/ConfigFetchResponse.php (added)
-
tags/2.1.3/src/ConfigFetcher.php (added)
-
tags/2.1.3/src/Diagnostics.php (added)
-
tags/2.1.3/src/Plugin.php (added)
-
tags/2.1.3/src/RateLimiter.php (added)
-
tags/2.1.3/src/RelayEvidencePolicy.php (added)
-
tags/2.1.3/src/RelayForwardResult.php (added)
-
tags/2.1.3/src/RelayForwarder.php (added)
-
tags/2.1.3/src/RelaySpool.php (added)
-
tags/2.1.3/src/Sanitization.php (added)
-
tags/2.1.3/src/SdkBootstrap.php (added)
-
tags/2.1.3/src/Settings.php (added)
-
tags/2.1.3/uninstall.php (added)
-
tags/2.1.3/vendor (added)
-
tags/2.1.3/vendor/autoload.php (added)
-
tags/2.1.3/vendor/composer (added)
-
tags/2.1.3/vendor/composer/ClassLoader.php (added)
-
tags/2.1.3/vendor/composer/InstalledVersions.php (added)
-
tags/2.1.3/vendor/composer/LICENSE (added)
-
tags/2.1.3/vendor/composer/autoload_classmap.php (added)
-
tags/2.1.3/vendor/composer/autoload_namespaces.php (added)
-
tags/2.1.3/vendor/composer/autoload_psr4.php (added)
-
tags/2.1.3/vendor/composer/autoload_real.php (added)
-
tags/2.1.3/vendor/composer/autoload_static.php (added)
-
tags/2.1.3/vendor/composer/installed.json (added)
-
tags/2.1.3/vendor/composer/installed.php (added)
-
tags/2.1.3/vendor/composer/platform_check.php (added)
-
tags/2.1.3/vendor/debugbundle (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/.gitignore (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/CHANGELOG.md (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/CODE_OF_CONDUCT.md (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/CONTRIBUTING.md (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/LICENSE (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/README.md (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/SECURITY.md (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/composer.json (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/perf (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/perf/evidence_capture.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/BeforeSend.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/CanonicalEventSchema.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/CorrelationContext.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DebugBundle.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DebugBundleSdk.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DebugBundleSdkEventBoundary.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DebugBundleSdkEventSupport.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DebugBundleSdkEvidenceSupport.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DebugBundleSdkExceptionCapture.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DebugBundleSdkPolicySupport.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DebugBundleSdkQueueSupport.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/DiagnosticCaptureBudget.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/EvidenceJson.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/EvidenceWire.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/ExceptionEvidence.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Laravel (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Laravel/DebugBundleExceptionHandler.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Laravel/DebugBundleLogTap.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Laravel/DebugBundleMiddleware.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Laravel/DebugBundleRelayMiddleware.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Laravel/DebugBundleServiceProvider.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Symfony (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Symfony/DebugBundleBundle.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Symfony/DebugBundleEventSubscriber.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Framework/Symfony/DebugBundleRelayController.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/IngestionWire.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Logging (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Logging/DebugBundleHandler.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/OperationContext.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/OperationState.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/OwnedJson.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Redaction.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/BrowserRelayAcceptedBatch.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/BrowserRelayHandler.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/BrowserRelayRateLimitStore.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/BrowserRelayResponse.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/InMemoryBrowserRelayRateLimitStore.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/RelayEvidencePath.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/RelayFileTransport.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/RelayFileWriteResult.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Relay/RelayForwardTransport.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/RemoteConfig.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Suppression.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/TelemetryPrivacy.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Transport (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Transport/HttpTransport.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Transport/IngestionAcknowledgementDecision.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Transport/RetryAfter.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Transport/TransportInterface.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/Transport/TransportResponse.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/TriggerToken.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/ValidationBudgetExceeded.php (added)
-
tags/2.1.3/vendor/debugbundle/sdk-php/src/event-envelope.schema.json (added)
-
tags/2.1.3/vendor/monolog (added)
-
tags/2.1.3/vendor/monolog/monolog (added)
-
tags/2.1.3/vendor/monolog/monolog/CHANGELOG.md (added)
-
tags/2.1.3/vendor/monolog/monolog/LICENSE (added)
-
tags/2.1.3/vendor/monolog/monolog/README.md (added)
-
tags/2.1.3/vendor/monolog/monolog/composer.json (added)
-
tags/2.1.3/vendor/monolog/monolog/src (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Attribute (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Attribute/WithMonologChannel.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/DateTimeImmutable.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/ErrorHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/SyslogFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/Curl (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/Handler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/NoopHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/OverflowHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/ProcessHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/Slack (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SqsHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/JsonSerializableDateTimeImmutable.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Level.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/LogRecord.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Logger.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/ClosureContextProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/LoadAverageProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Registry.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/ResettableInterface.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/SignalHandler.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Test (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Test/MonologTestCase.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Test/TestCase.php (added)
-
tags/2.1.3/vendor/monolog/monolog/src/Monolog/Utils.php (added)
-
tags/2.1.3/vendor/psr (added)
-
tags/2.1.3/vendor/psr/log (added)
-
tags/2.1.3/vendor/psr/log/LICENSE (added)
-
tags/2.1.3/vendor/psr/log/README.md (added)
-
tags/2.1.3/vendor/psr/log/composer.json (added)
-
tags/2.1.3/vendor/psr/log/src (added)
-
tags/2.1.3/vendor/psr/log/src/AbstractLogger.php (added)
-
tags/2.1.3/vendor/psr/log/src/InvalidArgumentException.php (added)
-
tags/2.1.3/vendor/psr/log/src/LogLevel.php (added)
-
tags/2.1.3/vendor/psr/log/src/LoggerAwareInterface.php (added)
-
tags/2.1.3/vendor/psr/log/src/LoggerAwareTrait.php (added)
-
tags/2.1.3/vendor/psr/log/src/LoggerInterface.php (added)
-
tags/2.1.3/vendor/psr/log/src/LoggerTrait.php (added)
-
tags/2.1.3/vendor/psr/log/src/NullLogger.php (added)
-
trunk/CHANGELOG.md (modified) (1 diff)
-
trunk/README.md (modified) (6 diffs)
-
trunk/assets/dist/debugbundle-browser.js (modified) (30 diffs)
-
trunk/assets/dist/sdk-build.json (modified) (1 diff)
-
trunk/composer.json (modified) (1 diff)
-
trunk/composer.lock (modified) (2 diffs)
-
trunk/debugbundle.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/vendor/composer/installed.json (modified) (2 diffs)
-
trunk/vendor/composer/installed.php (modified) (3 diffs)
-
trunk/vendor/debugbundle/sdk-php/CHANGELOG.md (modified) (1 diff)
-
trunk/vendor/debugbundle/sdk-php/README.md (modified) (11 diffs)
-
trunk/vendor/debugbundle/sdk-php/src/DebugBundleSdk.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
debugbundle/trunk/CHANGELOG.md
r3792513 r3802637 6 6 7 7 ## [Unreleased] 8 9 ## [2.1.3] - 2026-11-15 10 11 - Bundle the qualified PHP SDK 2.1.3 and Browser SDK 3.2.3 documentation patches. 12 13 - Align installation, initialization, integrations, first-event verification and configuration documentation with the shared SDK pattern. Keep credentials, delivery modes and runtime lifecycle requirements explicit. 14 - Runtime APIs and capture behavior are unchanged; this patch updates distributed documentation and package version metadata. 15 8 16 9 17 ## [2.1.2] - 2026-11-09 -
debugbundle/trunk/README.md
r3792513 r3802637 1 1 # DebugBundle WordPress Plugin 2 2 3 Patch 2.1. 2protects invitation and organisation-transfer credentials in captured text while preserving public APIs and event schemas. Upgrade the DebugBundle distribution to adopt the protection.3 Patch 2.1.3 protects invitation and organisation-transfer credentials in captured text while preserving public APIs and event schemas. Upgrade the DebugBundle distribution to adopt the protection. 4 4 5 5 WordPress plugin for DebugBundle. … … 8 8 9 9  10 10  11 11  12 12 … … 20 20 for activation and runtime limits. 21 21 22 ## Requirements 22 ## Installation 23 24 <a id="requirements"></a> 25 26 <a id="install"></a> 23 27 24 28 - WordPress 6.5 or newer (tested through WordPress 7.1) 25 29 - PHP 8.2 or newer 26 30 27 ## Installation28 29 31 1. Install **DebugBundle** from the [WordPress.org plugin directory](https://wordpress.org/plugins/debugbundle/). 30 2. Activate the plugin.31 3. Open **Settings -> DebugBundle**.32 4. Paste your DebugBundle project token and save.33 5. Use the backend and frontend test-event buttons to verify delivery.34 32 35 33 Manual ZIP installs are available from the [`debugbundle-wordpress` GitHub releases](https://github.com/debugbundle/debugbundle-wordpress/releases) page when a host or deployment process cannot install from WordPress.org. 36 34 37 The plugin can also read the project token from `wp-config.php`: 38 39 ```php 40 define('DEBUGBUNDLE_PROJECT_TOKEN', 'dbundle_proj_xxxxxxxxxxxx'); 41 ``` 42 43 Version 2.0 reads remote capture policy from a local cache on visitor requests. WP-Cron refreshes it using the project token; the cache is scoped by endpoint and token hash, and an unavailable cache falls back to the minimal capture policy. WP-Cron must run for remote policy changes to arrive. 44 45 ## What It Captures 35 ## Initialize 36 37 Activate the plugin, then open **Settings -> DebugBundle**, save your project token, environment and service, and enable the capture paths you need. The plugin initializes its bundled PHP and browser SDKs; no application `init()` call is required. 38 39 ## Integrations 40 41 ### What It Captures 46 42 47 43 - Backend PHP errors, exceptions, shutdown failures, request context, logs, runtime facts, and probes through `debugbundle/sdk-php` … … 52 48 The first release focuses on public-site capture. It does not capture `wp-admin` traffic by default. 53 49 54 ## Settings 50 ## First-event verification 51 52 Use the backend and frontend test-event buttons in **Settings -> DebugBundle** from an administrator session. Confirm both service identities in received events or incidents in DebugBundle. Saving settings or an empty relay spool is not a delivery receipt; check the delivery diagnostics and inspect the matching incident. 53 54 ## Configuration 55 56 <a id="settings"></a> 55 57 56 58 | Setting | Default | Purpose | … … 71 73 | Delete settings on uninstall | disabled | Remove saved settings when the plugin is uninstalled. | 72 74 75 The plugin can also read the project token from `wp-config.php`: 76 77 ```php 78 define('DEBUGBUNDLE_PROJECT_TOKEN', 'dbundle_proj_xxxxxxxxxxxx'); 79 ``` 80 81 Version 2.0 reads remote capture policy from a local cache on visitor requests. WP-Cron refreshes it using the project token; the cache is scoped by endpoint and token hash, and an unavailable cache falls back to the minimal capture policy. WP-Cron must run for remote policy changes to arrive. 82 73 83 ## External Service Behavior 74 84 … … 204 214 205 215 206 ### Unreleased acceptance-credential privacy 207 208 The source candidate also scrubs standalone `dbundle_invite_`, 216 <a id="unreleased-acceptance-credential-privacy"></a> 217 218 ### Acceptance-credential privacy 219 220 The SDK scrubs standalone `dbundle_invite_`, 209 221 `dbundle_org_invite_` and `dbundle_org_transfer_` acceptance secrets before 210 222 SDK-owned retention or transmission. See the [shared qualification record](https://github.com/debugbundle/debugbundle/blob/main/spec/business-credential-redaction.md). 211 Published packages keep their released behaviour until the coordinated dependency 212 and distribution checks are completed and a new version is published. 223 Existing installations receive this protection when upgraded to a version that includes it. -
debugbundle/trunk/assets/dist/debugbundle-browser.js
r3792513 r3802637 23447 23447 }); 23448 23448 23449 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/privacy.js23449 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/privacy.js 23450 23450 function protectBrowserEvent(event, additionalKeys) { 23451 23451 var _a5, _b; … … 23495 23495 } 23496 23496 23497 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/passive-resources.js23497 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/passive-resources.js 23498 23498 var WINDOW = 3e4; 23499 23499 var MAX_BYTES2 = 32 * 1024; … … 23754 23754 }; 23755 23755 23756 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/evidence-controller.js23756 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/evidence-controller.js 23757 23757 function browserEvidenceEndpoint(endpoint) { 23758 23758 const hashAt = endpoint.indexOf("#"), clean = hashAt < 0 ? endpoint : endpoint.slice(0, hashAt); … … 23942 23942 }; 23943 23943 23944 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/package.json23944 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/package.json 23945 23945 var package_default = { 23946 23946 name: "@debugbundle/sdk-browser", 23947 version: "3.2. 2",23947 version: "3.2.3", 23948 23948 private: false, 23949 23949 type: "module", … … 23982 23982 }; 23983 23983 23984 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/types.js23984 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/types.js 23985 23985 var SDK_NAME = "@debugbundle/sdk-browser"; 23986 23986 var SDK_VERSION = package_default.version; … … 24006 24006 var DEFAULT_LOG_LEVEL = "warning"; 24007 24007 24008 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/diagnostic-capture.js24008 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/diagnostic-capture.js 24009 24009 function createBrowserDiagnosticEvent(config3, payload, correlation, service) { 24010 24010 const event = createEventEnvelope({ … … 24024 24024 } 24025 24025 24026 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/browser-stack.js24026 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/browser-stack.js 24027 24027 function sanitizeBrowserStack(stack) { 24028 24028 return stack.replace(/https?:\/\/[^\s]+/gi, (source) => { … … 24039 24039 } 24040 24040 24041 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/native-fields.js24041 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/native-fields.js 24042 24042 function readNativeField(value, key2) { 24043 24043 try { … … 24070 24070 } 24071 24071 24072 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/response-json.js24072 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/response-json.js 24073 24073 async function readBoundedBrowserJson(response, signal) { 24074 24074 var _a5, _b; … … 24122 24122 } 24123 24123 24124 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/fetch-transport.js24124 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/fetch-transport.js 24125 24125 function getFetchSource() { 24126 24126 const candidate = globalThis["fetch"]; … … 24177 24177 } 24178 24178 24179 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/runtime.js24179 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/runtime.js 24180 24180 var DEFAULT_REQUEST_FAILURE_PRESET = "balanced"; 24181 24181 var DEFAULT_REQUEST_CAPTURE_EVENTS = "failures_only"; … … 24859 24859 } 24860 24860 24861 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/exception-evidence.js24861 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/exception-evidence.js 24862 24862 var NativeError = Error; 24863 24863 var nativeStackDescriptor; … … 25019 25019 } 25020 25020 25021 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/capture-exception.js25021 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/capture-exception.js 25022 25022 function createBrowserExceptionEvent(input2) { 25023 25023 var _a5, _b, _c; … … 25077 25077 } 25078 25078 25079 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/analytics-friction.js25079 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/analytics-friction.js 25080 25080 var FRICTION_CLICK_THRESHOLD = 3; 25081 25081 var FRICTION_CLICK_WINDOW_MS = 2e3; … … 25132 25132 }; 25133 25133 25134 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/analytics-normalization.js25134 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/analytics-normalization.js 25135 25135 var MAX_CUSTOM_DIMENSIONS = 8; 25136 25136 var MAX_CUSTOM_KEY_LENGTH = 64; … … 25406 25406 } 25407 25407 25408 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/analytics.js25408 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/analytics.js 25409 25409 var ANALYTICS_EVENT_SCHEMA_VERSION2 = "2026-07-analytics-01"; 25410 25410 var HASH_PATTERN = /^sha256:[a-f0-9]{64}$/i; … … 25817 25817 }; 25818 25818 25819 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/before-send.js25819 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/before-send.js 25820 25820 function cloneEvent(event) { 25821 25821 return JSON.parse(JSON.stringify(event)); … … 25844 25844 } 25845 25845 25846 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/capture-helpers.js25846 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/capture-helpers.js 25847 25847 var DEFAULT_REQUEST_FAILURE_PRESET2 = "balanced"; 25848 25848 var DEFAULT_REQUEST_CAPTURE_EVENTS2 = "failures_only"; … … 25998 25998 } 25999 25999 26000 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/resource-origin.js26000 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/resource-origin.js 26001 26001 function httpUrl2(value, base) { 26002 26002 if (typeof value !== "string" || !value || value.length > 4096 || /[\u0000-\u0020\u007f]/.test(value)) … … 26026 26026 } 26027 26027 26028 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/capture-rules.js26028 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/capture-rules.js 26029 26029 function asRecord2(value) { 26030 26030 if (value === null || typeof value !== "object" || Array.isArray(value)) { … … 26577 26577 } 26578 26578 26579 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/event-pipeline.js26579 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/event-pipeline.js 26580 26580 function applyBrowserCaptureRules(input2) { 26581 26581 var _a5; … … 26663 26663 } 26664 26664 26665 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/hooks.js26665 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/hooks.js 26666 26666 var MUTATING_METHODS = /* @__PURE__ */ new Set(["POST", "PUT", "PATCH", "DELETE"]); 26667 26667 var INTERESTING_RESPONSE_HEADERS = [ … … 27048 27048 } 27049 27049 27050 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/native-error-hooks.js27050 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/native-error-hooks.js 27051 27051 function captureNativeError(event, capture) { 27052 27052 var _a5; … … 27067 27067 } 27068 27068 27069 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/suppression.js27069 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/suppression.js 27070 27070 var DUPLICATE_WINDOW_MS = 3e4; 27071 27071 var LOOP_WINDOW_MS = 2e3; … … 27236 27236 }; 27237 27237 27238 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/transport-lane.js27238 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/transport-lane.js 27239 27239 function createLane() { 27240 27240 return { … … 27471 27471 } 27472 27472 27473 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/ingestion-acknowledgement.js27473 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/ingestion-acknowledgement.js 27474 27474 var RETRYABLE_REASONS = /* @__PURE__ */ new Set([ 27475 27475 "rate_limited", … … 27518 27518 } 27519 27519 27520 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/event-transport.js27520 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/event-transport.js 27521 27521 var BrowserEventTransport = class { 27522 27522 constructor(callbacks) { … … 28108 28108 } 28109 28109 28110 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/trigger-token.js28110 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/trigger-token.js 28111 28111 var PROBE_TRIGGER_TOKEN_PREFIX = "dbundle_probe_"; 28112 28112 function decodeBase64Url(segment) { … … 28197 28197 } 28198 28198 28199 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/probes.js28199 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/probes.js 28200 28200 var evidencePolicySchema = ResolvedCapturePolicySchema.partial(); 28201 28201 function validEvidenceConfig(payload, status) { … … 28419 28419 } 28420 28420 28421 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2. 2/node_modules/@debugbundle/sdk-browser/dist/index.js28421 // node_modules/.pnpm/@debugbundle+sdk-browser@3.2.3/node_modules/@debugbundle/sdk-browser/dist/index.js 28422 28422 var BrowserSdk = class { 28423 28423 constructor() { -
debugbundle/trunk/assets/dist/sdk-build.json
r3792513 r3802637 1 1 { 2 2 "package": "@debugbundle/sdk-browser", 3 "version": "3.2. 2",4 "asset_sha256": " 0832f7083e5e601cdda0c8e7d3ec9b4d110726927dcbe2379727f651c8ce5b82"3 "version": "3.2.3", 4 "asset_sha256": "6e279e3d58477d3ac533f97982faba8895c0c8adb2277411459fb28be93d4338" 5 5 } -
debugbundle/trunk/composer.json
r3792513 r3802637 11 11 "require": { 12 12 "php": ">=8.2", 13 "debugbundle/sdk-php": "^2.1. 2"13 "debugbundle/sdk-php": "^2.1.3" 14 14 }, 15 15 "require-dev": { -
debugbundle/trunk/composer.lock
r3792513 r3802637 5 5 "This file is @generated automatically" 6 6 ], 7 "content-hash": " f0f0f6e4562f3578dcec53826f2b8e96",7 "content-hash": "d243f7d1032e30dfd8ec7d0b85544ddb", 8 8 "packages": [ 9 9 { 10 10 "name": "debugbundle/sdk-php", 11 "version": "v2.1. 2",11 "version": "v2.1.3", 12 12 "source": { 13 13 "type": "git", 14 14 "url": "https://github.com/debugbundle/debugbundle-php.git", 15 "reference": " 7a9dec787a2703c50108d6f8a30067ed547f8c04"16 }, 17 "dist": { 18 "type": "zip", 19 "url": "https://api.github.com/repos/debugbundle/debugbundle-php/zipball/ 7a9dec787a2703c50108d6f8a30067ed547f8c04",20 "reference": " 7a9dec787a2703c50108d6f8a30067ed547f8c04",15 "reference": "6d7d16eaf45dbeeededd86599fe86c149836b895" 16 }, 17 "dist": { 18 "type": "zip", 19 "url": "https://api.github.com/repos/debugbundle/debugbundle-php/zipball/6d7d16eaf45dbeeededd86599fe86c149836b895", 20 "reference": "6d7d16eaf45dbeeededd86599fe86c149836b895", 21 21 "shasum": "" 22 22 }, … … 64 64 "source": "https://github.com/debugbundle/debugbundle-php" 65 65 }, 66 "time": "2026-11- 09T12:40:40+00:00"66 "time": "2026-11-15T01:03:57+00:00" 67 67 }, 68 68 { -
debugbundle/trunk/debugbundle.php
r3792513 r3802637 4 4 * Plugin URI: https://debugbundle.com/docs/integrations/wordpress 5 5 * Description: Capture backend and frontend production incidents from WordPress into DebugBundle. 6 * Version: 2.1. 26 * Version: 2.1.3 7 7 * Requires at least: 6.5 8 8 * Requires PHP: 8.2 … … 22 22 23 23 if (!defined('DEBUGBUNDLE_WORDPRESS_VERSION')) { 24 define('DEBUGBUNDLE_WORDPRESS_VERSION', '2.1. 2');24 define('DEBUGBUNDLE_WORDPRESS_VERSION', '2.1.3'); 25 25 } 26 26 27 27 if (!defined('DEBUGBUNDLE_WORDPRESS_BROWSER_SDK_VERSION')) { 28 define('DEBUGBUNDLE_WORDPRESS_BROWSER_SDK_VERSION', '3.2. 2');28 define('DEBUGBUNDLE_WORDPRESS_BROWSER_SDK_VERSION', '3.2.3'); 29 29 } 30 30 -
debugbundle/trunk/readme.txt
r3792513 r3802637 4 4 Requires at least: 6.5 5 5 Tested up to: 7.1 6 Stable tag: 2.1. 26 Stable tag: 2.1.3 7 7 Requires PHP: 8.2 8 8 License: GPLv2 or later … … 104 104 == Changelog == 105 105 106 = 2.1.3 = 107 * Align SDK setup documentation and bundle PHP SDK 2.1.3 with Browser SDK 3.2.3. 108 106 109 = 2.1.2 = 107 110 * Protect organisation invitation and transfer credentials before retention or transport. Bundle PHP SDK 2.1.2 and Browser SDK 3.2.2. -
debugbundle/trunk/vendor/autoload.php
r3792513 r3802637 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit f0f0f6e4562f3578dcec53826f2b8e96::getLoader();22 return ComposerAutoloaderInitd243f7d1032e30dfd8ec7d0b85544ddb::getLoader(); -
debugbundle/trunk/vendor/composer/autoload_real.php
r3792513 r3802637 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit f0f0f6e4562f3578dcec53826f2b8e965 class ComposerAutoloaderInitd243f7d1032e30dfd8ec7d0b85544ddb 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit f0f0f6e4562f3578dcec53826f2b8e96', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInitd243f7d1032e30dfd8ec7d0b85544ddb', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit f0f0f6e4562f3578dcec53826f2b8e96', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInitd243f7d1032e30dfd8ec7d0b85544ddb', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit f0f0f6e4562f3578dcec53826f2b8e96::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInitd243f7d1032e30dfd8ec7d0b85544ddb::getInitializer($loader)); 33 33 34 34 $loader->register(true); -
debugbundle/trunk/vendor/composer/autoload_static.php
r3792513 r3802637 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit f0f0f6e4562f3578dcec53826f2b8e967 class ComposerStaticInitd243f7d1032e30dfd8ec7d0b85544ddb 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 49 49 { 50 50 return \Closure::bind(function () use ($loader) { 51 $loader->prefixLengthsPsr4 = ComposerStaticInit f0f0f6e4562f3578dcec53826f2b8e96::$prefixLengthsPsr4;52 $loader->prefixDirsPsr4 = ComposerStaticInit f0f0f6e4562f3578dcec53826f2b8e96::$prefixDirsPsr4;53 $loader->classMap = ComposerStaticInit f0f0f6e4562f3578dcec53826f2b8e96::$classMap;51 $loader->prefixLengthsPsr4 = ComposerStaticInitd243f7d1032e30dfd8ec7d0b85544ddb::$prefixLengthsPsr4; 52 $loader->prefixDirsPsr4 = ComposerStaticInitd243f7d1032e30dfd8ec7d0b85544ddb::$prefixDirsPsr4; 53 $loader->classMap = ComposerStaticInitd243f7d1032e30dfd8ec7d0b85544ddb::$classMap; 54 54 55 55 }, null, ClassLoader::class); -
debugbundle/trunk/vendor/composer/installed.json
r3792513 r3802637 3 3 { 4 4 "name": "debugbundle/sdk-php", 5 "version": "v2.1. 2",6 "version_normalized": "2.1. 2.0",5 "version": "v2.1.3", 6 "version_normalized": "2.1.3.0", 7 7 "source": { 8 8 "type": "git", 9 9 "url": "https://github.com/debugbundle/debugbundle-php.git", 10 "reference": " 7a9dec787a2703c50108d6f8a30067ed547f8c04"10 "reference": "6d7d16eaf45dbeeededd86599fe86c149836b895" 11 11 }, 12 12 "dist": { 13 13 "type": "zip", 14 "url": "https://api.github.com/repos/debugbundle/debugbundle-php/zipball/ 7a9dec787a2703c50108d6f8a30067ed547f8c04",15 "reference": " 7a9dec787a2703c50108d6f8a30067ed547f8c04",14 "url": "https://api.github.com/repos/debugbundle/debugbundle-php/zipball/6d7d16eaf45dbeeededd86599fe86c149836b895", 15 "reference": "6d7d16eaf45dbeeededd86599fe86c149836b895", 16 16 "shasum": "" 17 17 }, … … 34 34 "symfony/http-kernel": "^7.2" 35 35 }, 36 "time": "2026-11- 09T12:40:40+00:00",36 "time": "2026-11-15T01:03:57+00:00", 37 37 "type": "library", 38 38 "installation-source": "dist", -
debugbundle/trunk/vendor/composer/installed.php
r3792513 r3802637 2 2 'root' => array( 3 3 'name' => 'debugbundle/wordpress-plugin', 4 'pretty_version' => ' v2.1.2',5 'version' => ' 2.1.2.0',6 'reference' => ' 311c4a30c0fec4716664a71d286ddfa4982378f6',4 'pretty_version' => 'dev-main', 5 'version' => 'dev-main', 6 'reference' => 'bcc9536c0d72c087b3ea97a2c58501df4576f7a1', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'debugbundle/sdk-php' => array( 14 'pretty_version' => 'v2.1. 2',15 'version' => '2.1. 2.0',16 'reference' => ' 7a9dec787a2703c50108d6f8a30067ed547f8c04',14 'pretty_version' => 'v2.1.3', 15 'version' => '2.1.3.0', 16 'reference' => '6d7d16eaf45dbeeededd86599fe86c149836b895', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../debugbundle/sdk-php', … … 21 21 ), 22 22 'debugbundle/wordpress-plugin' => array( 23 'pretty_version' => ' v2.1.2',24 'version' => ' 2.1.2.0',25 'reference' => ' 311c4a30c0fec4716664a71d286ddfa4982378f6',23 'pretty_version' => 'dev-main', 24 'version' => 'dev-main', 25 'reference' => 'bcc9536c0d72c087b3ea97a2c58501df4576f7a1', 26 26 'type' => 'wordpress-plugin', 27 27 'install_path' => __DIR__ . '/../../', -
debugbundle/trunk/vendor/debugbundle/sdk-php/CHANGELOG.md
r3792513 r3802637 2 2 3 3 ## [Unreleased] 4 5 ## [2.1.3] - 2026-11-15 6 7 - Align installation, initialization, integrations, first-event verification and configuration documentation with the shared SDK pattern. Keep credentials, delivery modes and runtime lifecycle requirements explicit. 8 - Runtime APIs and capture behavior are unchanged; this patch updates distributed documentation and package version metadata. 9 4 10 5 11 ## [2.1.2] - 2026-11-09 -
debugbundle/trunk/vendor/debugbundle/sdk-php/README.md
r3792513 r3802637 1 1 # DebugBundle PHP SDK 2 2 3 Patch 2.1. 2protects invitation and organisation-transfer credentials in captured text while preserving public APIs and event schemas. Upgrade the DebugBundle distribution to adopt the protection.3 Patch 2.1.3 protects invitation and organisation-transfer credentials in captured text while preserving public APIs and event schemas. Upgrade the DebugBundle distribution to adopt the protection. 4 4 5 5 PHP SDK for DebugBundle. 6 7 `make evidence-performance` compares identical exception/recovery calls with8 evidence disabled and enabled, including a full warning queue, with networking9 disabled. It reports capture time and PHP peak/live allocated memory after fixture10 setup, and checks native previous causes, original-error priority and existing11 retention ceilings. Memory measurements describe the PHP allocator, not cumulative12 allocation churn or total process RSS. `make smoke-fpm` separately verifies the13 existing request-end delivery deadline with evidence disabled and enabled.14 6 15 7  … … 21 13 Requires PHP 8.2 or newer. 22 14 23 ## Evidence in 2.1.024 25 Version 2.1.0 adds bounded native previous-exception graphs and structured26 locations while retaining the original redacted error fields. Normal additional27 exception evidence is limited to 32 KiB; fatal evidence uses at most two nodes,28 eight frames per node and 4 KiB including operation metadata. Arguments and object29 dumps are excluded from the graph. Custom throwable formatters are not invoked.30 Native fatal file/line evidence is separate from the SDK's constructed trace.31 PHP 8.5 can supply a native fatal backtrace when its existing setting permits it;32 the SDK never enables that setting. Earlier runtimes report partial evidence.33 34 New fields require proof that the complete delivery path and readers accept them.35 Discovery adds `debugbundle_evidence=1` to existing config/ingestion requests;36 capture makes no discovery request. Short-lived PHP processes and file/custom37 transports may set `['evidenceCapabilities' => ['version' => 1, 'features' =>38 ['exception_evidence_v1', 'recovery_v1']]]` as an explicit assertion of complete-path support. Missing,39 unknown or revoked proof preserves legacy exception delivery. Only a negotiated40 `invalid_event` can retry the same original exception without optional additions;41 policy/security rejections and standalone context do not use that fallback.42 43 `captureExceptionEvidence` defaults to true behind verified support. Explicit44 recovery additionally requires `'captureRecoveryObservations' => true`, `recovery_v1`45 and capture-policy permission; the minimal preset always disables it. Call46 `captureRecovery(['failureRef' => $freshUuidV4, 'attemptId' => $attemptUuidV4,47 'state' => 'attempt_completed', 'evidenceScope' => $scope])` for an explicit48 technical observation. States are `attempt_started`, `attempt_completed`,49 `attempt_failed`, `recovery_observed` and `failure_persisted`. An HTTP 200 or a50 completed attempt does not assert recovery. Optional fields are `operation`,51 `statusCode`, `durationMs` and ordinary correlation; arbitrary application data52 belongs in existing context/probes. Never use user identifiers or URLs as these53 fresh references. Include the same `failureRef` and scope with the original54 exception. Page scope also requires the same session correlation.55 56 `runWithOperationContext(['kind' => 'job', 'name' =>57 $technicalName, 'limitMs' => $knownLimit], $callback)` supplies an operation scope58 and monotonic elapsed time. Kinds are `job`, `command` and `request`. Results and thrown application errors are preserved.59 Existing Laravel/Symfony request owners and concurrent Fibers are isolated;60 completion/reset revokes ownership. Unknown names and limits stay unknown.61 The SDK never infers a wall-clock request limit from PHP's execution-time setting.62 63 Recovery uses the ordinary bounded queue and mandatory privacy/hook policy. A64 per-instance tracker admits at most 50 failures, five attempts and 20 observations65 per five-minute window; tracker metadata and pending diagnostic payloads share a66 64 KiB budget. ACK/drop/reset releases pending ownership without renewing the67 window. Valid hook identity/type replacements remain supported and are checked68 against the resulting event's policy. Complete returned envelopes are checked69 against the vendored accepting Draft 7 schema and semantic evidence rules. Hook70 JSON is copied without application serializers, clone handlers or foreign-object71 inspection. Invalid/throwing hooks preserve the protected original; exhausted72 validation and unfit valid replacements are withheld without undoing redaction.73 Mandatory privacy output is checked again before policy and delivery.74 75 Native HTTP uses byte-sized ordered prefixes under the receiving 256-KiB limit,76 including wrapper/comma bytes. A flush shares the existing 250-ms monotonic77 budget across chunks; pending tails retain their ownership for a later explicit78 attempt. Request-end delivery remains one bounded best-effort request. Optional79 SDK evidence is reduced before withholding an unfit primary. PHP empty-map array80 idioms are projected into JSON objects using the accepting schema. A first fatal81 capture uses already canonical SDK shapes without allocating that interpreter.82 Relays count injected server credentials, reject unfit events before acceptance,83 and share the same native forwarding budget. Legacy custom success remains84 accepted; only complete canonical ACKs mark a durable spool delivered. Exclusive85 private markers preserve existing files and do not follow symlinks. PHP request-end loss and custom-transport86 limitations described below still apply.87 88 PHP relays preserve typed context, graphs and browser observations after privacy,89 intersect support with downstream proof and keep legacy responses unchanged.90 Opted-in responses add a descriptor and indexed `evidence_errors`; the existing91 string `errors` array remains available. Local/spooled readers require explicit92 complete-path proof. Passive browser collection belongs to the browser SDK;93 PHP only preserves that evidence.94 95 Local qualification: `make check-docker`, `make coverage-docker`,96 `make evidence-runtime-docker`, `make smoke-worktree` and `make smoke-fpm`.97 Publication and installed-site adoption remain separate release actions.98 99 ## Automatic capture and application filtering100 101 `captureErrors()` checks the current `error_reporting()` mask for each error. Warnings, notices and deprecations suppressed with `@` or excluded by that mask are ignored. Enabled errors still follow the existing PHP handler behavior. Explicit `captureException()` calls and fatal shutdown capture remain available independently of the warning mask.102 103 Exception capture uses the throwable class as the message when `getMessage()` is empty, before `beforeSend` and duplicate suppression. Nonempty messages (including `"0"`) and the original stack are preserved, subject to mandatory redaction. Captures without request context use empty JSON objects for request headers and query parameters.104 105 ### Version 2.0 delivery limit106 107 Version 2.0 keeps the ordinary Composer install and requires no resident collector. Capturing a batch no longer calls the network. PHP's shutdown hook makes one best-effort send of at most 25 priority-selected events and 256 KiB, with exceptions ahead of routine logs. The built-in stream timeout is 250 ms but is advisory; DNS, slow peers, and custom transports may exceed it. The send occupies a PHP worker while it runs, and unsent events are lost when the request ends or the endpoint is unavailable. Use an application-owned background runner if your deployment requires stronger delivery or zero request-end wait.108 109 `init()` no longer calls `configFetcher`. If you supply one, invoke `refreshRemoteConfig()` from a controlled background or administrative task; do not call it on the request path. `flush()` is an explicit synchronous operation intended for CLI, diagnostics, or controlled shutdown. Existing installed 1.x versions retain their prior behavior until a major upgrade. Review the request-end worker-cost and loss tradeoff before upgrading.110 111 15 ## Installation 112 16 … … 115 19 ``` 116 20 117 ## Quick Start 21 ## Initialize 22 23 <a id="quick-start"></a> 24 25 Initialize in your application bootstrap after loading Composer’s autoloader. Set `DEBUGBUNDLE_PROJECT_TOKEN` in the server environment, initialization installs error, exception and shutdown hooks. Add framework and logger adapters in Integrations. 118 26 119 27 ```php … … 124 32 DebugBundle::init([ 125 33 'projectToken' => getenv('DEBUGBUNDLE_PROJECT_TOKEN'), 126 'service' => 'checkout-api',127 34 'environment' => 'production', 128 ]); 129 35 'service' => 'api', 36 ]); 37 ``` 38 39 ## Integrations 40 41 Laravel, Symfony, Monolog and browser relay adapters are supported. 42 43 ### Capture hooks 44 45 ```php 130 46 DebugBundle::captureErrors(); 131 47 DebugBundle::captureExceptions(); 132 48 DebugBundle::captureShutdown(); 133 49 ``` 50 51 ### Capture setup details 134 52 135 53 Capture handled errors, logs, messages, and probes explicitly: … … 142 60 ``` 143 61 144 ## Framework Integrations62 ### Framework Integrations 145 63 146 64 | Runtime | Integration | … … 153 71 Example apps live in `examples/laravel` and `examples/symfony`. 154 72 155 ## Browser Relay73 ### Browser Relay 156 74 157 75 PHP backends can host the browser relay endpoint used by `@debugbundle/sdk-browser`. … … 175 93 - Connected relay mode without a usable project token still accepts and can spool events, but forwarding remains disabled until the server provides credentials. This is the relay missing token behavior. 176 94 177 ## Configuration Reference 95 ### Laravel Logging 96 97 For Laravel's Monolog-backed stack, add the SDK tap class to a channel in `config/logging.php`: 98 99 ```php 100 use DebugBundle\Framework\Laravel\DebugBundleLogTap; 101 102 'channels' => [ 103 'stack' => [ 104 'driver' => 'stack', 105 'channels' => ['single'], 106 'tap' => [DebugBundleLogTap::class], 107 ], 108 ], 109 ``` 110 111 ### Symfony Logging 112 113 For Symfony applications using MonologBundle, register the SDK handler as a Monolog service: 114 115 ```yaml 116 services: 117 DebugBundle\Logging\DebugBundleHandler: 118 arguments: 119 $sdk: '@DebugBundle\DebugBundleSdk' 120 121 monolog: 122 handlers: 123 debugbundle: 124 type: service 125 id: DebugBundle\Logging\DebugBundleHandler 126 level: warning 127 ``` 128 129 ## First-event verification 130 131 Use an explicit setup event in a development or staging application, then confirm the matching service and environment in a received event or incident. Initialization, a healthy status and an empty queue are not delivery receipts. Keep the application running long enough for delivery; use bounded flushing only in tests or controlled teardown, never in a request handler. 132 133 Use the repo-local smoke target to prove a fresh install end to end against a mock ingestion endpoint: 134 135 ```bash 136 make smoke 137 ``` 138 139 That command builds a Composer archive, installs the package into a fresh consumer fixture, emits an application-owned `captureMessage()` plus `captureRequest()` event, submits a browser relay request through the Symfony relay controller, validates the received event envelopes, and confirms both paths reach the mock ingestion endpoint with the expected `service`, `environment`, SDK metadata, and correlation fields. 140 141 For published-package verification during release validation, run the same smoke path against Packagist: 142 143 ```bash 144 php smoke/run_app_driven_smoke.php --package debugbundle/sdk-php:2.1.3 145 ``` 146 147 For a manual verification snippet inside your own app: 148 149 ```php 150 <?php 151 152 use DebugBundle\DebugBundle; 153 154 DebugBundle::init([ 155 'projectToken' => getenv('DEBUGBUNDLE_PROJECT_TOKEN'), 156 'service' => 'checkout-api', 157 'environment' => 'staging', 158 ]); 159 160 DebugBundle::captureMessage('debugbundle first-event verification', 'error'); 161 DebugBundle::flush(); 162 var_dump(DebugBundle::getStatus(), DebugBundle::getLastEventAt()); 163 ``` 164 165 For connected delivery, confirm the event in DebugBundle and inspect its incident with the CLI. For local-only browser relay files, run `debugbundle process` and `debugbundle inspect <incident-id>` in the backend repository. A local file or mock endpoint receipt proves only that destination; it does not prove cloud acceptance. 166 167 ## Configuration 168 169 The built-in application client uses HTTP in every environment. A literal `local` token does not select file transport. Browser relay local-only files are a separate delivery path; use a real ingestion token and endpoint for backend capture. 170 171 <a id="configuration-reference"></a> 178 172 179 173 Configuration sources and precedence: … … 208 202 - Generic PHP: initialize with `DebugBundle::init([...])`, then opt into `captureErrors()`, `captureExceptions()`, and `captureShutdown()`. 209 203 204 ## Evidence in 2.1.0 205 206 Version 2.1.0 adds bounded native previous-exception graphs and structured 207 locations while retaining the original redacted error fields. Normal additional 208 exception evidence is limited to 32 KiB; fatal evidence uses at most two nodes, 209 eight frames per node and 4 KiB including operation metadata. Arguments and object 210 dumps are excluded from the graph. Custom throwable formatters are not invoked. 211 Native fatal file/line evidence is separate from the SDK's constructed trace. 212 PHP 8.5 can supply a native fatal backtrace when its existing setting permits it; 213 the SDK never enables that setting. Earlier runtimes report partial evidence. 214 215 New fields require proof that the complete delivery path and readers accept them. 216 Discovery adds `debugbundle_evidence=1` to existing config/ingestion requests; 217 capture makes no discovery request. Short-lived PHP processes and file/custom 218 transports may set `['evidenceCapabilities' => ['version' => 1, 'features' => 219 ['exception_evidence_v1', 'recovery_v1']]]` as an explicit assertion of complete-path support. Missing, 220 unknown or revoked proof preserves legacy exception delivery. Only a negotiated 221 `invalid_event` can retry the same original exception without optional additions; 222 policy/security rejections and standalone context do not use that fallback. 223 224 `captureExceptionEvidence` defaults to true behind verified support. Explicit 225 recovery additionally requires `'captureRecoveryObservations' => true`, `recovery_v1` 226 and capture-policy permission; the minimal preset always disables it. Call 227 `captureRecovery(['failureRef' => $freshUuidV4, 'attemptId' => $attemptUuidV4, 228 'state' => 'attempt_completed', 'evidenceScope' => $scope])` for an explicit 229 technical observation. States are `attempt_started`, `attempt_completed`, 230 `attempt_failed`, `recovery_observed` and `failure_persisted`. An HTTP 200 or a 231 completed attempt does not assert recovery. Optional fields are `operation`, 232 `statusCode`, `durationMs` and ordinary correlation; arbitrary application data 233 belongs in existing context/probes. Never use user identifiers or URLs as these 234 fresh references. Include the same `failureRef` and scope with the original 235 exception. Page scope also requires the same session correlation. 236 237 `runWithOperationContext(['kind' => 'job', 'name' => 238 $technicalName, 'limitMs' => $knownLimit], $callback)` supplies an operation scope 239 and monotonic elapsed time. Kinds are `job`, `command` and `request`. Results and thrown application errors are preserved. 240 Existing Laravel/Symfony request owners and concurrent Fibers are isolated; 241 completion/reset revokes ownership. Unknown names and limits stay unknown. 242 The SDK never infers a wall-clock request limit from PHP's execution-time setting. 243 244 Recovery uses the ordinary bounded queue and mandatory privacy/hook policy. A 245 per-instance tracker admits at most 50 failures, five attempts and 20 observations 246 per five-minute window; tracker metadata and pending diagnostic payloads share a 247 64 KiB budget. ACK/drop/reset releases pending ownership without renewing the 248 window. Valid hook identity/type replacements remain supported and are checked 249 against the resulting event's policy. Complete returned envelopes are checked 250 against the vendored accepting Draft 7 schema and semantic evidence rules. Hook 251 JSON is copied without application serializers, clone handlers or foreign-object 252 inspection. Invalid/throwing hooks preserve the protected original; exhausted 253 validation and unfit valid replacements are withheld without undoing redaction. 254 Mandatory privacy output is checked again before policy and delivery. 255 256 Native HTTP uses byte-sized ordered prefixes under the receiving 256-KiB limit, 257 including wrapper/comma bytes. A flush shares the existing 250-ms monotonic 258 budget across chunks; pending tails retain their ownership for a later explicit 259 attempt. Request-end delivery remains one bounded best-effort request. Optional 260 SDK evidence is reduced before withholding an unfit primary. PHP empty-map array 261 idioms are projected into JSON objects using the accepting schema. A first fatal 262 capture uses already canonical SDK shapes without allocating that interpreter. 263 Relays count injected server credentials, reject unfit events before acceptance, 264 and share the same native forwarding budget. Legacy custom success remains 265 accepted; only complete canonical ACKs mark a durable spool delivered. Exclusive 266 private markers preserve existing files and do not follow symlinks. PHP request-end loss and custom-transport 267 limitations described below still apply. 268 269 PHP relays preserve typed context, graphs and browser observations after privacy, 270 intersect support with downstream proof and keep legacy responses unchanged. 271 Opted-in responses add a descriptor and indexed `evidence_errors`; the existing 272 string `errors` array remains available. Local/spooled readers require explicit 273 complete-path proof. Passive browser collection belongs to the browser SDK; 274 PHP only preserves that evidence. 275 276 Local qualification: `make check-docker`, `make coverage-docker`, 277 `make evidence-runtime-docker`, `make smoke-worktree` and `make smoke-fpm`. 278 Publication and installed-site adoption remain separate release actions. 279 280 ## Automatic capture and application filtering 281 282 `captureErrors()` checks the current `error_reporting()` mask for each error. Warnings, notices and deprecations suppressed with `@` or excluded by that mask are ignored. Enabled errors still follow the existing PHP handler behavior. Explicit `captureException()` calls and fatal shutdown capture remain available independently of the warning mask. 283 284 Exception capture uses the throwable class as the message when `getMessage()` is empty, before `beforeSend` and duplicate suppression. Nonempty messages (including `"0"`) and the original stack are preserved, subject to mandatory redaction. Captures without request context use empty JSON objects for request headers and query parameters. 285 286 ### Version 2.0 delivery limit 287 288 Version 2.0 keeps the ordinary Composer install and requires no resident collector. Capturing a batch no longer calls the network. PHP's shutdown hook makes one best-effort send of at most 25 priority-selected events and 256 KiB, with exceptions ahead of routine logs. The built-in stream timeout is 250 ms but is advisory; DNS, slow peers, and custom transports may exceed it. The send occupies a PHP worker while it runs, and unsent events are lost when the request ends or the endpoint is unavailable. Use an application-owned background runner if your deployment requires stronger delivery or zero request-end wait. 289 290 `init()` no longer calls `configFetcher`. If you supply one, invoke `refreshRemoteConfig()` from a controlled background or administrative task; do not call it on the request path. `flush()` is an explicit synchronous operation intended for CLI, diagnostics, or controlled shutdown. Existing installed 1.x versions retain their prior behavior until a major upgrade. Review the request-end worker-cost and loss tradeoff before upgrading. 291 210 292 ## Install Examples by Mode 211 293 … … 328 410 - Public snippets should not mix SDK package versions across separate repos or examples. 329 411 330 ## Laravel Logging331 332 For Laravel's Monolog-backed stack, add the SDK tap class to a channel in `config/logging.php`:333 334 ```php335 use DebugBundle\Framework\Laravel\DebugBundleLogTap;336 337 'channels' => [338 'stack' => [339 'driver' => 'stack',340 'channels' => ['single'],341 'tap' => [DebugBundleLogTap::class],342 ],343 ],344 ```345 346 ## Symfony Logging347 348 For Symfony applications using MonologBundle, register the SDK handler as a Monolog service:349 350 ```yaml351 services:352 DebugBundle\Logging\DebugBundleHandler:353 arguments:354 $sdk: '@DebugBundle\DebugBundleSdk'355 356 monolog:357 handlers:358 debugbundle:359 type: service360 id: DebugBundle\Logging\DebugBundleHandler361 level: warning362 ```363 364 412 ## Safety Defaults 365 413 … … 386 434 - Connected mode without a usable project token does not silently report healthy connected capture. 387 435 388 ## First-Event Verification389 390 Use the repo-local smoke target to prove a fresh install end to end against a mock ingestion endpoint:391 392 ```bash393 make smoke394 ```395 396 That command builds a Composer archive, installs the package into a fresh consumer fixture, emits an application-owned `captureMessage()` plus `captureRequest()` event, submits a browser relay request through the Symfony relay controller, validates the received event envelopes, and confirms both paths reach the mock ingestion endpoint with the expected `service`, `environment`, SDK metadata, and correlation fields.397 398 For published-package verification during release validation, run the same smoke path against Packagist:399 400 ```bash401 php smoke/run_app_driven_smoke.php --package debugbundle/sdk-php:1.5.0402 ```403 404 For a manual verification snippet inside your own app:405 406 ```php407 <?php408 409 use DebugBundle\DebugBundle;410 411 DebugBundle::init([412 'projectToken' => getenv('DEBUGBUNDLE_PROJECT_TOKEN'),413 'service' => 'checkout-api',414 'environment' => 'staging',415 ]);416 417 DebugBundle::captureMessage('debugbundle first-event verification', 'error');418 DebugBundle::flush();419 var_dump(DebugBundle::getStatus(), DebugBundle::getLastEventAt());420 ```421 422 436 ## Development 423 437 … … 468 482 469 483 470 ### Unreleased acceptance-credential privacy 471 472 The source candidate also scrubs standalone `dbundle_invite_`, 484 <a id="unreleased-acceptance-credential-privacy"></a> 485 486 ### Acceptance-credential privacy 487 488 The SDK scrubs standalone `dbundle_invite_`, 473 489 `dbundle_org_invite_` and `dbundle_org_transfer_` acceptance secrets before 474 490 SDK-owned retention or transmission. See the [shared qualification record](https://github.com/debugbundle/debugbundle/blob/main/spec/business-credential-redaction.md). 475 Published packages keep their released behaviour until the coordinated dependency 476 and distribution checks are completed and a new version is published. 491 Existing installations receive this protection when upgraded to a version that includes it. 492 493 ## Maintainer performance checks 494 495 `make evidence-performance` compares identical exception/recovery calls with 496 evidence disabled and enabled, including a full warning queue, with networking 497 disabled. It reports capture time and PHP peak/live allocated memory after fixture 498 setup, and checks native previous causes, original-error priority and existing 499 retention ceilings. Memory measurements describe the PHP allocator, not cumulative 500 allocation churn or total process RSS. `make smoke-fpm` separately verifies the 501 existing request-end delivery deadline with evidence disabled and enabled. -
debugbundle/trunk/vendor/debugbundle/sdk-php/src/DebugBundleSdk.php
r3792513 r3802637 22 22 23 23 private const SDK_NAME = 'debugbundle/sdk-php'; 24 private const SDK_VERSION = '2.1. 2';24 private const SDK_VERSION = '2.1.3'; 25 25 private const SCHEMA_VERSION = '2026-03-01'; 26 26 private const DEFAULT_ENDPOINT = 'https://api.debugbundle.com/v1/events';
Note:
See TracChangeset
for help on using the changeset viewer.