Skip to content

feat: unify Image/RawMessages topic bar; bump to v1.7.0#23

Merged
joaner merged 2 commits into
ioai-tech:mainfrom
joaner:feat/unify-topic-picker
Jul 9, 2026
Merged

feat: unify Image/RawMessages topic bar; bump to v1.7.0#23
joaner merged 2 commits into
ioai-tech:mainfrom
joaner:feat/unify-topic-picker

Conversation

@joaner

@joaner joaner commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  • The Image panel and RawMessages panel already shared the same TopicQuickPicker dropdown, but each hand-rolled its own header container with different padding, so the Raw panel's topic bar was visibly taller (~41px) than the Image panel's (~33px).
  • Extracted a shared PanelTopicBar (src/features/panels/framework/PanelTopicBar.tsx) that standardizes the box model (horizontal-only padding, height driven purely by the picker's own h-8), while still letting each panel override colors/borders via className. Both panels now use it; RawMessages' topic bar now matches the Image panel's shorter height (confirmed both measure exactly 33px). Image panel's own dark chrome styling is unchanged.
  • Plot/Audio/JointStatePlot keep their own bespoke header rows for now (different layout needs — extra controls alongside the picker), but can adopt PanelTopicBar later with no API changes required.
  • Bumped package.json version to 1.7.0 (not tagged yet).

Includes .github/workflows/ci.yml from the already-merged #22 (mcap CLI is local-only, not installed in CI) as part of this branch's base — no further CI changes here.

Test plan

  • npm run lint
  • npm run typecheck
  • npm test (573 unit tests, incl. new PanelTopicBar.test.tsx)
  • npm run build (SPA) and npm run build:lib
  • npm run gen:e2e:fixtures && npm run test:e2e (35 Playwright tests)
  • Manually measured both panels' topic-bar heights via a throwaway Playwright probe: Image = 33px, RawMessages (after fix) = 33px (was ~41px before)

Do not merge yet — holding for manual confirmation before merging and tagging v1.7.0.

joaner added 2 commits July 9, 2026 16:53
…essages

Both panels already reused the same TopicQuickPicker dropdown, but each
hand-rolled its own header container with different padding: Image's
had none (compact, ~33px), RawMessages' added `py-1` (~41px). Extract
a shared PanelTopicBar (framework/PanelTopicBar.tsx) that standardizes
the box model (flex items-center, horizontal-only padding, height
driven by the picker's own h-8) while still letting each panel
override colors/borders via className, and use it in both panels.

RawMessages now matches Image panel's shorter topic-bar height, which
is the reference experience going forward. Image panel's own styling
(permanently-dark chrome) is unchanged. Plot/Audio/JointStatePlot keep
their own bespoke header rows for now (different layout needs), but
can adopt PanelTopicBar later with no API changes required.
@joaner joaner merged commit be4c3eb into ioai-tech:main Jul 9, 2026
2 checks passed
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.

1 participant