Release notes

Here you can find the release notes for Kanzi Monitor.

1.41.0

First release of Kanzi Monitor for Kanzi 4.1. Compatible with Kanzi 4.1.0. A source-only distribution package is available for building the plugin from source against any supported Kanzi 4.1.x version.

Features

Kanzi Monitor introspects a stock Kanzi 4.1 application out of the box: it resolves the host scene graph and frame timing through the Kanzi 4.1 Domain (Domain::getScreens() / Domain::getFramesPerSecond()), with no injected Application or host-side registration.

Command Processor Service

  • Local console for interactive command-line access over stdin/stdout, a remote console over TCP sockets, and a serial console over serial ports (UART; Windows COM ports and POSIX serial devices).

  • Built-in commands for application control, scene graph inspection, and diagnostics, plus support for custom application-defined commands. kzinfo reports the build configuration (Debug, Profiling, or Release).

Trace Service

  • Profiling data collection with configurable sample buffers and collection intervals.

  • Output driven by a named writer registry: writers register under a name and are selected through the ActiveWriters configuration key (default chrometrace), switchable at runtime via overwatch.writers / overwatch.activatewriter / overwatch.deactivatewriter. Built-in writers:

    • chrometrace — Chrome Trace Format JSON.

    • perfetto — native Perfetto protobuf (.perfetto-trace): typed counters and debug annotations, the canonical input format for Perfetto UI and Android Performance Analyzer, via a hand-rolled encoder with no external dependency.

    • perfetto-producer — streams events to the platform tracing daemon (Android traced, Linux perfetto) so Kanzi work appears alongside ATrace and SurfaceFlinger in a single system timeline. Requires building with -DKZMONITOR_PERFETTO_PRODUCER=ON (Android binaries ship with it on).

  • Configurable automatic trace output on exit, on timer, or when frame duration exceeds a threshold.

UI Service

  • On-screen overlay with basic, report, and control screen modes; configurable font scaling for high-DPI devices; touch and key input.

Log Service

  • In-memory log buffer with on-screen presentation; the buffer size is configurable at runtime (overwatch.logconfig).

  • Console access to log entries, category filtering in the Monitor Web UI, and KanziLog trace pipeline diagnostics for troubleshooting missing log entries.

Performance Service

  • Runtime performance statistics and counters with the PerformanceInfo profiling category.

  • Performance metric watchers that trigger commands when thresholds are crossed.

Overwatch Service

  • JSON-based remote introspection of the scene graph, resources, rendering, data sources, and performance; scene graph browsing with configurable depth limiting; property querying and modification.

  • Resource inspection with CPU/GPU memory usage and metadata, including texture type / cubemap descriptors (type, face count, dimensions, format, mipmap levels) through resinfo and overwatch.resourceinfo.

  • Texture and render-pass output preview, with per-face cubemap preview (overwatch.texturepreview face=<n>); screenshot capture through scheduled framebuffer readback.

  • Font and glyph cache inspection (fontinfo / overwatch.fonts / overwatch.glyphcachepreview): font identity, style, metrics, and a live glyph-atlas preview, plus runtime glyph cache size control (overwatch.setglyphcachesize) for pressure testing.

  • Real-time performance metrics (FPS, frame times, render statistics); DataSource inspection including DataObjectList nodes; log entry access and trace control; graphics backend information; build configuration through overwatch.status.

Platform support

  • Windows (MSVC 2022)

  • Android

  • QNX 710

  • Linux

Tools

  • Monitor Web UI — browser-based GUI for remote inspection and debugging: live scene graph browsing, property editing, resource and texture preview, screen capture, render pass visualization, performance monitoring, and trace capture. This release adds a Fonts tab (font identity/metrics, live glyph-atlas preview, editable glyph cache size), a View in Perfetto button on the Trace tab, a Logs category filter with an editable buffer size, and Screen-tab overlay controls (PerformanceInfo level, Monitor UI visibility, BasicUI screen, font scale). All platform packages include a prebuilt standalone executable.

  • MCP Server — Model Context Protocol server that exposes the Overwatch command set as structured tools for AI assistants such as Claude Code and Claude Desktop. New this release: get_fonts, get_font_glyph_cache_preview, set_glyph_cache_size, get_log_config / set_log_buffer_size, and a face parameter on get_texture_preview.

  • RemoteConsoleClient — command-line TCP client for the remote console. Prebuilt for Windows and Linux.

  • SerialConsoleClient — command-line serial client for the serial console. Prebuilt for Windows and Linux.

Example project

  • The example application under examples/monitor_example/ is compatible with, and uses, the application templates from Kanzi 4.1.0. See the Kanzi 4.1.0 SDK documentation for details on the new template structure.

Changes since 1.40.0

A “what changed since the previous minor” recap. This is a notification only — see Migration guides for how to adapt, and the main docs for how to use.

  • Added: font and glyph cache inspection; runtime glyph cache size control; Perfetto trace output (perfetto / perfetto-producer) and an embedded Perfetto UI in the Web UI; cubemap / texture-type resource inspection; build-configuration reporting; Web UI log category filtering; runtime log buffer size control. (See Features above.)

  • Removed: the Application-injection API — setApplication (C++), the setNativeRuntime / setNativeApplication JNI handshakes, the NodeRegisteringScreenEnabled override, and the registerRoot / registerNativeViewRoot view-root hook (the scene graph is now resolved via Domain::getScreens()); the Android Monitor AAR (Kanzi Monitor exposes no Java API); the appfps metric and the appquit command (use fps and quit).

  • Changed: trace output is selected through the ActiveWriters writer registry — the public SampleCollector::registerWriterTask() / clearWriterTasks() symbols are removed (register via TraceWriterRegistry); the app-prefixed commands are retired (appfpsinfofpsinfo).

  • Fixed: the Web UI “Connected” indicator no longer stays green after the application exits; RemoteConsole sets SO_REUSEADDR so port 56000 is reusable immediately after a restart; screenshot-capture timeouts report an actionable hint and take_screenshot completes in a single call; texture-preview GPU readback uses the texture’s native pixel format (fixing corrupted HDR and cubemap previews); Android trace output writes to the app’s internal storage (Context.getFilesDir()) instead of /sdcard/, removing the external-storage permission requirement; the frame-duration trigger key is now spelled WritingOnFrameDurationThreshold (the 1.40.0 misspelling WritingOnFrameDurationTreshold remains a deprecated alias); the non-functional graphics API call logging commands (graphicslog / overwatch.graphicslog and the set_graphics_logging / get_graphics_logging MCP tools) — carried over from the 1.9.x line but dead on Kanzi 4.x, which dropped the underlying engine API — are removed, so they no longer appear available when they cannot work.

See also

Migration guides

Known issues