Skip to content

feat: typed sort keys for mcap/ulog tables + mosaico sort indicators#229

Merged
facontidavide merged 4 commits into
mainfrom
feat/table-item-typed-values
Jul 18, 2026
Merged

feat: typed sort keys for mcap/ulog tables + mosaico sort indicators#229
facontidavide merged 4 commits into
mainfrom
feat/table-item-typed-values

Conversation

@GNERSIS

@GNERSIS GNERSIS commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What

Adopts dialog SDK 0.18.0 typed table cells (PlotJuggler/plotjuggler_sdk#149) so numeric columns sort numerically instead of lexicographically, and makes Mosaico's header sorting visible. Host-side companion: PlotJuggler/PJ4#442.

  • mcapMsg Count keys its native uint64 (exact past 2⁵³); display text unchanged.
  • ulogValue / Timestamp cells keep their %g / %.2f rendering and key the full-precision double. Info keys are deliberately double, not native integers: the single Value column mixes integer- and float-typed fields and the host refuses mixed-class key columns (no exact cross-class order exists), while a double is exact for every realistic info scalar. Info cells decode via asNativeTypeVariant() with display parity preserved — array values show their first element (matching ulog_cpp's scalar accessor semantics), char goes through unsigned char, unconvertible values stay keyless "N/A".
  • mosaico — declares its sort state via setTableSortIndicator so the host paints the header arrow; its existing onHeaderClicked sorting becomes reachable with the new host wiring (no changes to the sort logic itself).

Old hosts are unaffected: they never read column_values and keep today's behavior.

Draft — blocked on the SDK release

SDK_VERSION is bumped to 0.18.0, but extern/plotjuggler_core cannot move until the SDK tag exists. Once PlotJuggler/plotjuggler_sdk#149 merges and v0.18.0 is tagged, run:

python3 scripts/bump_core_version.py 0.18.0

commit the submodule move onto this branch, and mark the PR ready. Until then bump_core_version.py --check (the CI guard) is expected to fail here.

GNERSIS added 2 commits July 17, 2026 16:41
Adopt dialog SDK 0.18.0 typed table cells so numeric columns sort
numerically instead of lexicographically:

- mcap: Msg Count keys its native uint64 (exact past 2^53).
- ulog: Value/Timestamp cells keep their %g / %.2f rendering and key the
  full-precision double. Info keys are deliberately double, not native
  integers: the single Value column mixes integer- and float-typed fields
  and the host refuses mixed-class key columns, while a double is exact for
  every realistic info scalar. Info cells decode via the native variant with
  display parity preserved: array values show their first element (matching
  ulog_cpp's scalar accessor semantics), char goes through unsigned char,
  and unconvertible values stay keyless "N/A".
- mosaico: declares its sort state via setTableSortIndicator so the host
  paints the header arrow; its onHeaderClicked sorting becomes reachable
  with the new host wiring.

SDK_VERSION 0.17.0 -> 0.18.0. extern/plotjuggler_core moves to the v0.18.0
tag (scripts/bump_core_version.py 0.18.0) once the SDK release is tagged;
until then the --check guard is expected to fail on this branch.
JFrog has no plotjuggler_sdk/0.18.0 binary yet, so CI's acquire-core falls
back to building the SDK from this submodule — which pinned the 0.17.0
sources and would have packaged them under the 0.18.0 name, with no
PJ::TableItem to compile against. Point it at the SDK feature commit; the
landing step re-points it to the v0.18.0 release tag via
scripts/bump_core_version.py once that tag exists.
@GNERSIS
GNERSIS force-pushed the feat/table-item-typed-values branch from 9c02565 to 336c519 Compare July 17, 2026 15:43
The branch pinned a pre-release 0.18.0 commit (5219944, the typed
sort-keys feature only). The released tag additionally carries the
table-delta feature and the PJ_DIALOG_PLUGIN MSVC legacy-preprocessor
fix (plotjuggler_sdk#153). SDK_VERSION was already 0.18.0.

Validated: fleet rebuilt against the tag, ctest 26/26 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@facontidavide
facontidavide marked this pull request as ready for review July 18, 2026 14:16
@facontidavide
facontidavide merged commit bd91234 into main Jul 18, 2026
6 checks passed
@facontidavide
facontidavide deleted the feat/table-item-typed-values branch July 18, 2026 14:20
facontidavide added a commit that referenced this pull request Jul 18, 2026
…LUGIN (#232)

Two leftovers from the #229/#230 merge race:

- extern/plotjuggler_core -> 9def534, the RETAGGED v0.18.0 (#229 merged
  moments before the repin landed, so main pinned the pre-retag 7abaccb
  and missed the sort-key-aware table deltas, plotjuggler_sdk#154).
  SDK_VERSION already reads 0.18.0.
- All 20 dialog registration sites back to the documented two-arg
  PJ_DIALOG_PLUGIN(Class, kManifest) form (+ docs). The WITH_MANIFEST
  spelling was a Windows workaround for the macro dispatch bug that
  v0.18.0 fixes (plotjuggler_sdk#153), so it is no longer needed now
  that main pins 0.18.0.

Validated: fleet rebuilt against the retagged SDK (168/168), ctest
26/26 passed.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants