Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: PlotJuggler/plotjuggler_bridge
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.0.0-dev-dev
Choose a base ref
...
head repository: PlotJuggler/plotjuggler_bridge
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0.2.0
Choose a head ref
  • 8 commits
  • 27 files changed
  • 2 contributors

Commits on Feb 21, 2026

  1. style: Apply clang-format to all source files

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    Entire-Checkpoint: 00acef786069
    facontidavide and claude committed Feb 21, 2026
    Configuration menu
    Copy the full SHA
    c229c07 View commit details
    Browse the repository at this point in the history
  2. fix: Prevent null deref race in WebSocket callback during shutdown

    Hold state_mutex_ through server_->getClients() in the Open handler
    to prevent shutdown() from moving server_ out between the initialized_
    check and the server_ dereference.
    
    Also moves the initialized_ guard from a single top-of-callback check
    into per-handler checks, since only the Open handler needs the lock
    held through the server_ access.
    
    Adds lock ordering comment: state_mutex_ > clients_mutex_ > queue_mutex_
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    Entire-Checkpoint: 00acef786069
    facontidavide and claude committed Feb 21, 2026
    Configuration menu
    Copy the full SHA
    895e86f View commit details
    Browse the repository at this point in the history
  3. fix: Protect MessageStripper::strip() and reject empty schemas

    Extract make_buffer_callback() to wrap strip() in try-catch. On
    failure, the original unstripped message is forwarded instead of
    propagating the exception into the ROS2 executor.
    
    Also eliminates the duplicated callback lambda between
    handle_subscribe and handle_resume.
    
    Additionally, treat empty schema as a subscription failure. Previously
    get_message_definition() returning "" was silently accepted as success.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    Entire-Checkpoint: 00acef786069
    facontidavide and claude committed Feb 21, 2026
    Configuration menu
    Copy the full SHA
    e3b6524 View commit details
    Browse the repository at this point in the history
  4. fix: Propagate nested type resolution failures in schema extraction

    Previously, if a nested message type failed to resolve (missing
    package, missing .msg file), the failure was silently ignored and
    the schema was returned with the nested type omitted. Now the
    failure propagates, causing get_message_definition() to return
    empty string, which the empty-schema check treats as a failure.
    
    Also fixes a pre-existing bug where builtin types with array syntax
    (e.g., float64[9]) were not recognized as builtins because brackets
    were stripped after the builtin check instead of before.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    Entire-Checkpoint: 00acef786069
    facontidavide and claude committed Feb 21, 2026
    Configuration menu
    Copy the full SHA
    77fc1ae View commit details
    Browse the repository at this point in the history
  5. fix: Log exception details in subscribe() and refresh() catch blocks

    Previously both methods caught exceptions and returned false with
    no logging, making failures impossible to diagnose. Now logs the
    exception message with full context.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    Entire-Checkpoint: 00acef786069
    facontidavide and claude committed Feb 21, 2026
    Configuration menu
    Copy the full SHA
    d0ab1aa View commit details
    Browse the repository at this point in the history
  6. docs: Document lock ordering hierarchy in BridgeServer

    Prevents future changes from introducing deadlocks by documenting
    the implicit ordering: cleanup_mutex_ > last_sent_mutex_ > stats_mutex_.
    WebSocketMiddleware ordering was documented in an earlier commit.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    Entire-Checkpoint: 00acef786069
    facontidavide and claude committed Feb 21, 2026
    Configuration menu
    Copy the full SHA
    072f7ed View commit details
    Browse the repository at this point in the history
  7. test: Add regression tests for P0/P1 bug fixes

    - BuiltinArrayTypeNotMistakenForNestedType: verifies float64[9] is
      recognized as a builtin (not a nested message type)
    - ImuSchemaContainsExpectedFields: verifies all IMU fields including
      fixed-size array covariance fields are present
    - NonExistentNestedTypeReturnsEmpty: verifies fabricated types fail
    - SubscribeFailureResponseContainsTopicAndReason: verifies each
      failure entry in the subscribe response has topic and reason fields
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    Entire-Checkpoint: 00acef786069
    facontidavide and claude committed Feb 21, 2026
    Configuration menu
    Copy the full SHA
    57c86e6 View commit details
    Browse the repository at this point in the history
  8. docs: Add P0/P1 bug fixes implementation plan

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    Entire-Checkpoint: ff30dde1eb4e
    facontidavide and claude committed Feb 21, 2026
    Configuration menu
    Copy the full SHA
    1a7705e View commit details
    Browse the repository at this point in the history
Loading