Sidecars

Debug Inspector

Inspect application events on desktop and Android, reproduce issues and export carefully reviewed diagnostics.

0.3.9Alpha capabilityDeclared targets: Windows, Linux, Macos, Androiduk.capp.sidecar.debug

Use the diagnostic workspace

Debug Inspector is the application's own diagnostic workspace. It brings together navigation, console failures, request timing, declared service observations and runtime metadata so you can investigate the running package, rather than guessing from a screenshot of its UI.

Select uk.capp.sidecar.debug for the target application, then build and install the updated package. Desktop opens with Ctrl+Shift+D by default. Android has its own touch-oriented, full-screen inspector and launcher inside the usable system viewport.

The package declares desktop runtimes for Windows, Linux and macOS, plus a separate Android runtime. That declaration is not certification of every native target. Android does not receive the desktop inspector with mobile CSS layered over it.

Debug Inspector selection is independent of Android's application debug mode. It does not require android:debuggable=true. Enabling a build's debug flag is not a substitute for selecting the Sidecar, and selecting the Sidecar does not make the APK a debug build.

First useful diagnostic session

  1. Include Debug Inspector in the package you are investigating and open it once to confirm that it loaded.
  2. Check the capture settings relevant to the problem. Navigation, network, console and service capture are enabled by default; performance capture is opt-in.
  3. Return to the application and reproduce one bounded action, preferably with synthetic data. Note the order: user action, route change, request, response/failure and visible outcome.
  4. Reopen the inspector and examine the related events together. A failed browser request, a missing native service and an application exception are different faults.
  5. Export only the diagnostic material needed to explain the issue. Review it before sharing, even when redaction is enabled.

The retained buffer is finite: the default event limit is 2,000. Old events can be displaced. Capture a focused reproduction instead of expecting a complete permanent audit trail of a long-running app.

What the captures establish

CaptureUseful forDoes not establish
Routes and navigationWhich app view was entered and whenA backend business operation completed
Console and uncaught failuresApplication warnings, exceptions and context you explicitly loggedComplete visibility into every native process
Fetch/XMLHttpRequest timing and statusWhich instrumented request failed or was slowA valid business response merely because HTTP succeeded
Declared service observationsLinking app symptoms with available native/service stateArbitrary process discovery or remote administration
Optional performance entriesFocused timing investigationA full profiler or device-performance certification
Runtime, bundle and plan metadataIdentifying the package/configuration being testedSuccessful installation or behaviour of a different package

Instrumentation starts in the registered app/runtime surfaces. It cannot recover an event that happened before capture was active, nor inspect unrelated browser windows. Keep important application errors observable through the app's normal error handling as well.

Android opening and closing

The Android inspector covers the application while open; the product underlay is inert and scrolling is contained. Close it or use the supported Android Back action to return to the app. Header, tabs, content and footer should remain between the top and bottom guards when rotating the device or opening the keyboard.

The Android shell waits for its declared stylesheet and selected runtime plan before showing controls. A hidden launcher during startup can therefore be a readiness state. Persistent absence or a capp:debug-sidecar-failed event is a failure to investigate, not a reason to inject the desktop shell or disable the content security policy.

Rebuild/reinstall when changing the packaged runtime or target selection. Publishing the documentation website or changing a source folder does not update an already installed inspector.

Privacy and export discipline

Keep redactSecrets enabled. Sensitive header names, token-like query values and secret-shaped fields are redacted before retained events, but redaction is not a full data-loss prevention system. Ordinary messages, identifiers, URLs, request arguments and personal data may still identify a person or a private project.

Log safe event names and bounded non-sensitive context. Do not log passwords, tokens, seed phrases, full authentication replies or complete user records just because the inspector has a redaction setting. Review diagnostic JSON before attaching it to a public issue or sending it outside the team.

A capture toggle is a collection decision. Use only the categories needed for a reproduction, and decide deliberately whether diagnostics should ship in an end-user distribution. The Sidecar does not create a remote support port simply by being selected.

Public integration boundary

There is no portable Debug Inspector API for arbitrary process or filesystem inspection. Do not depend on its private instrumentation/controller objects or diagnostic globals as stable product contracts.

Use normal application logging and error handling for your own code, the supported runtime/data APIs for application operations, and Service Inspector for the UI controlling already declared services. Selecting Debug Inspector does not grant Agent permission to perform those operations.

Troubleshooting

SymptomCheck and next step
No inspector in an installed appCheck the exact installed package's Sidecar selection and target, not only the current Library draft.
Android launcher remains hiddenInspect bootstrap/style/plan readiness and the failure event; do not fall back to unstyled controls.
Missing network or console eventsCheck that category's capture setting and reproduce after instrumentation is active.
Old events have disappearedThe buffer is bounded. Export a focused capture and reproduce again.
Request fails while a service looks healthySeparate browser/transport/authentication errors from process and health observations.
Export still contains sensitive contextRemove it before sharing and improve the application's own logging; do not rely solely on field-name redaction.

For repeatable UI assertions use Test Runner. An inspector event is useful evidence, but it is not an automated pass/fail test of the product's postcondition.

Configuration reference

These are the selected package's configuration fields. String credential values and installation-specific defaults are never published here. A field's presence does not bypass its runtime policy.

FieldTypeMeaning and constraints
overlayDockselectOverlay position. Choices: right, bottom, floating, fullscreen
startupselectOpen behaviour. Choices: shortcut, remember, open
retainEventsnumberEvent buffer. Bounds: 250 to 20000
routeCapturecheckboxRoute events
networkCapturecheckboxNetwork events
consoleCapturecheckboxConsole events
serviceCapturecheckboxService events
performanceCapturecheckboxPerformance samples
redactSecretscheckboxRedact secrets

Component changelog

baseline0.3.9Permalink

Debug Inspector

Inspect app-scoped runtime events and redacted diagnostics.

Documentation snapshot, not a historical release date.
View component notes →
↑ ↓ to navigate · Enter to open · Esc to close. Search stays in your browser.