Repository navigation
refactor!: remove five unused public surfaces before the 1.0 freeze (1.0.0) - #231
Merged
Merged
Conversation
facontidavide
force-pushed
the
refactor/remove-dead-surface
branch
from
November 13, 2026 23:09
58c67c0 to
702734f
Compare
This was referenced Nov 13, 2026
facontidavide
force-pushed
the
refactor/remove-dead-surface
branch
2 times, most recently
from
November 13, 2026 23:22
2484675 to
940beb4
Compare
…1.0.0) Nothing in PlotJuggler, pj-official-plugins or the sibling repositories uses any of these, and 1.0 would otherwise keep them until 2.0. - pj.colormap.v1: the C vtable, ColorMapRegistryView/Service and the ToolboxPluginBase accessors. No host ever registered the service, and its callback contract had no lifetime or revocation rule. The id is retired; a future service would be pj.colormap.v2. - ConfigEnvelope: the host never used it. Docs that described the host wrapping source configs in it now say what the host does. - The descriptor_import compatibility surface (four forwarding headers, the descriptor_import_support target and Conan component), deprecated in 0.31 for one release. Its tests and the installed-package probe are retargeted to pj_base/sdk/source and PJ::sdk::source; no coverage is dropped. - pj.parser_functional.v1: superseded by v2 one day after it shipped. Only the v1-only declarations go; the scalar sink and callback types v2 reuses stay. The handle negotiates v2 only. The id is retired. - MediaMetadataBuilder: superseded by ObjectTopicMetadataBuilder. PJ_ABI_VERSION stays 5 and no remaining layout changes. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…uses a real table With the v1 fallback gone, a parser built against 0.21 has no functional route, so the docs and comments that said "pre-0.21" or "falls back to v1" now say pre-0.22 and v2 only. The retired-id comment names 1.0.0-dev.1, which still exported v1. The v1-only test answered the retired id with a zero-sized table, which a restored fallback would have rejected on size alone. It now answers with a well-formed table and asserts neither entry point is called. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
facontidavide
force-pushed
the
refactor/remove-dead-surface
branch
from
November 13, 2026 23:38
f1959d8 to
ad2c38c
Compare
This was referenced Nov 14, 2026
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.
What
Removes five public surfaces that nothing uses, so 1.0.0 does not freeze them until 2.0.
PJ_ABI_VERSIONstays 5 and no remaining struct, vtable or wire format changes.pj.colormap.v1(C vtable,ColorMapRegistryView/Service,ToolboxPluginBase::colorMapRegistry())pj.colormap.v2.ConfigEnvelope(pj_plugins/host/config_envelope.hpp)descriptor_importcompatibility surface (four forwarding headers,descriptor_import_supporttarget and Conan component)plotjuggler_sdk::source,pj_base/sdk/source/,PJ::sdk::sourcepj.descriptor_import.v1protocol headers are untouched.pj.parser_functional.v1pj.parser_functional.v2MediaMetadataBuilder(pj_base/sdk/media_metadata.hpp)ObjectTopicMetadataBuilderWhy each is safe
Two independent passes searched PlotJuggler, pj-official-plugins and every sibling repository, including worktrees and unmerged remote branches.
toolbox_colormap, was deleted in August with the Lua/Python toolboxes. PJ4 defines a host for it but never registers it.Test coverage
descriptor_import_*_test.cppfiles are retargeted tosource/, not deleted: 56 cases before and after.examples/sdk_consumer/descriptor_import_probe.cppis renamedsource_probe.cppand retargeted, because it is the only installed-package test that links the compiledpj_sourcearchive.ConfigEnvelopecases and the 9MediaMetadataBuildercases.PJ4 follow-ups when it adopts 1.0
Both break the PJ4 build until done:
pj_datastore/src/colormap_registry_host.cpp,pj_datastore/include/pj_datastore/colormap_registry_host.hppand the CMake entry.makeColorMapRegistryHostis never called.#include "pj_base/sdk/media_metadata.hpp"inpj_app/tests/main_window_scene3d_drop_framing_test.cpp.Not in this PR, on purpose
pj_emit_plugin_manifest: still called from 33 CMake files in pj-official-plugins, and that repository's floor checker hard-codes the name. It needs a migration there first.PluginDescriptor::min_plotjuggler_version: documented as deprecated, but the Windows installer build and current plugin manifests still rely on the key.Overlap with #230
Both PRs edit the same lines in
pj_base/CMakeLists.txt(install list),test_sdk_install.sh,conanfile.py,cmake/plotjuggler_sdkConfig.cmake.inand twoCLAUDE.mdfiles. Whichever merges second needs a small rebase.Verification
./build.sh --debug(Debug + ASAN): builds./test.sh: 106 of 106 passtools/feature_floors/check_feature_floors.py: OK, 138 surfaces./test_sdk_install.sh(Release): passespre-commit(clang-format 22): cleanconan create(Release,with_tests=False) plus a throwaway consumer that linksplugin_hostandsourceand asserts the deleted headers and thedescriptor_import_supporttarget are absent: passesNot run locally: the
abidiffgate (libabigail is not installed here). CI runs it. If it flags the removed C types, the baseline refresh is the intentional-MAJOR case.🤖 Generated with Claude Code