ros-jazzy-ros2-medkit-gateway (0.4.0-1noble) noble; urgency=high

  **Breaking Changes:**
  * ``GET /version-info`` response key renamed from ``sovd_info`` to ``items`` for SOVD alignment (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * ``GET /`` root endpoint restructured: ``endpoints`` is now a flat string array, added ``capabilities`` object, ``api_base`` field, and ``name``/``version`` top-level fields (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * Default rosbag storage format changed from ``sqlite3`` to ``mcap`` (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * Plugin API version bumped to v4 - added ``ScriptProvider``, locking API, and extended ``PluginContext`` with entity snapshot, fault listing, and sampler registration
  * ``GraphProviderPlugin`` extracted to separate ``ros2_medkit_graph_provider`` package
  **Features:**
  *Discovery & Merge Pipeline:*
  * Layered merge pipeline for hybrid discovery with per-layer, per-field-group merge policies (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * Gap-fill configuration: control heuristic entity creation with ``allow_heuristic_*`` options and namespace filtering (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * Plugin layer: ``IntrospectionProvider`` now wired into discovery pipeline via ``PluginLayer`` (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * ``/health`` endpoint includes merge pipeline diagnostics (layers, conflicts, gap-fill stats) (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * Entity detail responses now include ``logs``, ``bulk-data``, ``cyclic-subscriptions`` URIs (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * Entity capabilities fix: areas and functions now report correct resource collections (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * ``discovery.manifest.enabled`` / ``discovery.runtime.enabled`` parameters for hybrid mode
  * ``NewEntities.functions`` - plugins can now produce Function entities
  * ``GET /apps/{id}/is-located-on`` endpoint for reverse host lookup (app to component)
  * Beacon discovery plugin system - push-based entity enrichment via ROS 2 topic
  * ``x-medkit-topic-beacon`` and ``x-medkit-param-beacon`` vendor extension REST endpoints
  * Linux introspection plugins: procfs, systemd, and container plugins via ``x-medkit-*`` vendor endpoints (#263 <https://github.com/selfpatch/ros2_medkit/pull/263>)
  *Locking:*
  * SOVD-compliant resource locking: acquire, release, extend with session tracking and expiration
  * Lock enforcement on all mutating handlers (PUT, POST, DELETE)
  * Per-entity lock configuration via manifest YAML with ``required_scopes``
  * Lock API exposed to plugins via ``PluginContext``
  * Automatic cyclic subscription cleanup on lock expiry
  * ``LOCKS`` capability in entity descriptions
  *Scripts:*
  * SOVD script execution endpoints: CRUD for scripts and executions with subprocess execution
  * ``ScriptProvider`` plugin interface for custom script backends
  * ``DefaultScriptProvider`` with manifest + filesystem CRUD, argument passing, and timeout
  * Manifest-defined scripts: ``ManifestParser`` populates ``ScriptsConfig.entries`` from manifest YAML
  * ``allow_uploads`` config toggle for hardened deployments
  * RBAC integration for script operations
  *Logging:*
  * ``LogProvider`` plugin interface for custom log backends (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  * ``LogManager`` with ``/rosout`` ring buffer and plugin delegation
  * ``/logs`` and ``/logs/configuration`` endpoints
  * ``LOGS`` capability in discovery responses
  * Configurable log buffer size via parameters
  * Area and function log endpoints with namespace aggregation (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  *Triggers:*
  * Condition-based triggers with CRUD endpoints, SSE event streaming, and hierarchy matching
  * ``TriggerManager`` with ``ConditionEvaluator`` interface and 4 built-in evaluators (OnChange, OnChangeTo, EnterRange, LeaveRange)
  * ``ResourceChangeNotifier`` for async dispatch from FaultManager, UpdateManager, and OperationManager
  * ``TriggerTopicSubscriber`` for data trigger ROS 2 topic subscriptions
  * Persistent trigger storage via SQLite with restore-on-restart support
  * ``TriggerTransportProvider`` plugin interface for custom trigger delivery
  *OpenAPI & Documentation:*
  * ``RouteRegistry`` as single source of truth for routes and OpenAPI metadata
  * ``OpenApiSpecBuilder`` for full OpenAPI 3.1.0 document assembly with ``SchemaBuilder`` and ``PathBuilder``
  * Compile-time Swagger UI embedding (``ENABLE_SWAGGER_UI``)
  * Named component schemas with ``$ref``, clean ``operationId`` values, endpoint descriptions, ``GenericError`` schema refs, ``info.contact``, Spectral-clean output, multipart upload schemas, static spec caching
  * SOVD compliance documentation with resource collection support matrix (#258 <https://github.com/selfpatch/ros2_medkit/pull/258>)
  *Other:*
  * Multi-collection cyclic subscription support (data, faults, logs, configurations, update-status)
  * Generation-based caching for capability responses via ``CapabilityGenerator``
  * ``PluginContext::get_child_apps()`` for Component-level aggregation
  * Sub-resource RBAC patterns for all collections
  * Auto-populate gateway version from ``package.xml`` via CMake
  * Namespaced fault manager integration - ``FaultManagerPaths`` resolves service/topic names for custom namespaces
  * Grouped ``fault_manager.*`` parameter namespace for cleaner configuration
  **Build:**
  * Extracted shared cmake modules into ``ros2_medkit_cmake`` package (#294 <https://github.com/selfpatch/ros2_medkit/pull/294>)
  * Auto-detect ccache for faster incremental rebuilds
  * Precompiled headers for gateway package
  * Centralized clang-tidy configuration (opt-in locally, mandatory in CI)
  **Tests:**
  * Unit tests for DiscoveryHandlers, OperationHandlers, ScriptHandlers, LockHandlers, LockManager, ScriptManager, DefaultScriptProvider
  * Comprehensive integration tests for locking, scripts, graph provider plugin, beacon plugins, OpenAPI/docs, logging, namespaced fault manager
  * Contributors: @bburda

 -- bburda <bartoszburda93@gmail.com>  Thu, 19 Mar 2026 23:00:00 -0000

ros-jazzy-ros2-medkit-gateway (0.3.0-1noble) noble; urgency=high

  **Features:**
  * Gateway plugin framework with dynamic C++ plugin loading (#237 <https://github.com/selfpatch/ros2_medkit/pull/237>)
  * Software updates plugin with 8 SOVD-compliant endpoints (#237 <https://github.com/selfpatch/ros2_medkit/pull/237>, #231 <https://github.com/selfpatch/ros2_medkit/pull/231>)
  * SSE-based periodic data subscriptions for real-time streaming without polling (#223 <https://github.com/selfpatch/ros2_medkit/pull/223>)
  * Global ``DELETE /api/v1/faults`` endpoint (#228 <https://github.com/selfpatch/ros2_medkit/pull/228>)
  * Return HEALED/PREPASSED faults via status filter (#218 <https://github.com/selfpatch/ros2_medkit/pull/218>)
  * Bulk data upload and delete endpoints (#216 <https://github.com/selfpatch/ros2_medkit/pull/216>)
  * Token-bucket rate limiting middleware, configurable per-endpoint (#220 <https://github.com/selfpatch/ros2_medkit/pull/220>)
  * Reduce lock contention in ConfigurationManager (#194 <https://github.com/selfpatch/ros2_medkit/pull/194>)
  * Cache component topic map to avoid per-request graph rebuild (#212 <https://github.com/selfpatch/ros2_medkit/pull/212>)
  * Require cpp-httplib >= 0.14 in pkg-config check (#230 <https://github.com/selfpatch/ros2_medkit/pull/230>)
  * Add missing ``ament_index_cpp`` dependency to ``package.xml`` (#191 <https://github.com/selfpatch/ros2_medkit/pull/191>)
  * Unit tests for HealthHandlers, DataHandlers, and AuthHandlers (#232 <https://github.com/selfpatch/ros2_medkit/pull/232>, #234 <https://github.com/selfpatch/ros2_medkit/pull/234>, #233 <https://github.com/selfpatch/ros2_medkit/pull/233>)
  * Standardize include guards to ``#pragma once`` (#192 <https://github.com/selfpatch/ros2_medkit/pull/192>)
  * Use ``foreach`` loop for CMake coverage flags (#193 <https://github.com/selfpatch/ros2_medkit/pull/193>)
  * Migrate ``ament_target_dependencies`` to compat shim for Rolling (#242 <https://github.com/selfpatch/ros2_medkit/pull/242>)
  * Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219 <https://github.com/selfpatch/ros2_medkit/pull/219>, #242 <https://github.com/selfpatch/ros2_medkit/pull/242>)
  * Contributors: @bburda, @eclipse0922, @mfaferek93

 -- bburda <bartoszburda93@gmail.com>  Thu, 26 Feb 2026 23:00:00 -0000

ros-jazzy-ros2-medkit-gateway (0.2.0-1noble) noble; urgency=high

  * Initial rosdistro release
  * HTTP REST gateway for ros2_medkit diagnostics system
  * SOVD-compatible entity discovery with four entity types:
    
      * Areas, Components, Apps, Functions
      * HATEOAS links and capabilities in all responses
      * Relationship endpoints (subareas, subcomponents, related-apps, hosts)
    
  * Three discovery modes:
    
      * Runtime-only: automatic ROS 2 graph introspection
      * Manifest-only: YAML manifest with validation (11 rules)
      * Hybrid: manifest as source of truth + runtime linking
    
  * REST API endpoints:
    
      * Fault management: GET/POST/DELETE /api/v1/faults
      * Data access: topic sampling via GenericSubscription
      * Operations: service calls and action goals via GenericClient
      * Configuration: parameter get/set via ROS 2 parameter API
      * Snapshots: GET /api/v1/faults/{code}/snapshots
      * Rosbag: GET /api/v1/faults/{code}/snapshots/bag
    
  * Server-Sent Events (SSE) at /api/v1/faults/stream:
    
      * Multi-client support with thread-safe event queue
      * Keepalive, Last-Event-ID reconnection, configurable max_clients
    
  * JWT-based authentication with configurable policies
  * HTTPS/TLS support via OpenSSL and cpp-httplib
  * Native C++ ROS 2 serialization via ros2_medkit_serialization (no CLI dependencies)
  * Contributors: Bartosz Burda, Michal Faferek

 -- bburda <bartoszburda93@gmail.com>  Fri, 06 Feb 2026 23:00:00 -0000


