fix: dashboard plugin FFI bindings, JSON parsing, flake.nix, and tests (#132)#161
Open
jimmy-claw wants to merge 3 commits intomasterfrom
Open
fix: dashboard plugin FFI bindings, JSON parsing, flake.nix, and tests (#132)#161jimmy-claw wants to merge 3 commits intomasterfrom
jimmy-claw wants to merge 3 commits intomasterfrom
Conversation
Add a dashboard UI plugin for logos-app that provides real-time monitoring of LMAO agent status, metrics, and identity information. Changes: - Add lmao_get_metrics() and lmao_get_info() FFI functions to expose MetricsSnapshot and agent identity/topics via the C interface - Create logos-dashboard-plugin/ with IComponent implementation: - DashboardComponent: plugin entry point with QQuickWidget - DashboardBackend: C++ bridge exposing FFI calls as Q_PROPERTY/Q_INVOKABLE - DashboardView.qml: dashboard with identity, topics, and 17 metric cards - MetricCard.qml: reusable metric display component - Dark theme consistent with logos-app styling - Add unit tests for new FFI functions (metrics serialization, info structure) Fixes #132 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…et tabs (#132) Add tabbed navigation to the LMAO logos-core-module plugin with three views: - Dashboard: agent identity, encryption status, Waku topics, connected peers, sessions - Fleet: existing agent discovery and task sending (refactored from original LmaoView) - Metrics: real-time operational counters with auto-refresh (tasks, messaging, discovery, encryption) New FFI functions: lmao_get_metrics, lmao_get_node_info, lmao_get_peers, lmao_get_sessions New C++ backend methods: getMetrics, getNodeInfo, getPeers, getSessions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix lmao_get_info → lmao_get_node_info (matching actual FFI export) - Fix JSON parsing: info nested under "info" key, metrics under "metrics" key - Replace inline extern declarations with shared lmao_ffi.h header - Add missing lmao_get_peers/lmao_get_sessions to dashboard FFI header - Add flake.nix for Nix-based builds of dashboard plugin - Add test suite (test_dashboard.cpp) with FFI validation tests - Enable testing in CMakeLists.txt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
lmao_get_info→lmao_get_node_info(matching actual Rust FFI export — previous code would fail at link time)refreshInfo()now correctly reads nestedinfoobject;refreshMetrics()/getMetrics()now correctly read nestedmetricsobjectextern "C"declarations inDashboardBackend.hwith#include "lmao_ffi.h"(adds missinglmao_get_peers/lmao_get_sessions)flake.nix: Dashboard plugin can now be built via Nix (matching logos-core-module)test_dashboard.cppwith 7 Qt Test cases covering FFI string lifecycle, null safety, and JSON error responsesTest plan
cargo test --workspace --exclude logos-messaging-a2a-execution— all 996+ tests passFixes #132
🤖 Generated with Claude Code