release v1.5.0: generic Plot panel, db3 remote URL loading#9
Merged
Conversation
…tructure Implement a new function for generating chunk file names for lazy panel UI components, ensuring a consistent naming convention. Additionally, modify the output configuration to place assets directly in the root of the dist-lib directory, streamlining the build output structure.
Align panel chunk naming with ThreeD/Pose so dist-lib outputs identifiable
{PanelName}Panel-*.js chunks instead of generic Component-*.js files.
Shorten the shared 3D rendering module path and update imports across ThreeD, Pose, UrdfDebug, and urdf-preview entrypoint.
Move align-core, image-core, and audio-core into Align/core, Image/core, and Audio/core to match the ThreeD panel layout and simplify import paths.
…recation (#1) * feat(plot): implement Plot panel with dataset handling and configuration Add a new Plot panel feature, including components for rendering plots, managing datasets, and configuring series. Introduce utilities for reading message ranges and extracting plot path values. Implement settings for customizing plot behavior, such as axis modes and series configurations. Ensure integration with existing message pipeline for real-time data visualization. * feat(plot): add MCAP topic inspection script and enhance plot dataset handling Introduce a new script for inspecting MCAP topics to facilitate Plot panel fixture generation. Enhance the plot dataset handling by implementing efficient random access by topic and time, improving the overall performance and usability of the Plot panel. Update related types and configurations to support these features, ensuring better integration with existing data visualization workflows. * feat(plot): enhance dataset handling and introduce joint state path utilities Refactor the dataset management in the Plot panel to improve performance and usability. Introduce new utilities for handling joint state paths, including functions for combining and stripping paths. Update the message path extraction logic to support multiple comma-separated and whitespace-separated paths. Enhance the plot configuration actions and selectors for better integration with the new dataset features, ensuring a more efficient data visualization workflow. * feat(plot): deprecate JointStatePlot and enhance panel definitions Introduce warnings for deprecated JointStatePlot usage in the layout and runtime components, advising migration to the Plot panel. Update panel definitions to exclude JointStatePlot from addable options and implement new utilities for handling joint state paths. Enhance plot configuration normalization to support legacy series merging and improve dataset handling for better visualization workflows. * fix(plot): improve error handling and code clarity in dataset tests and plot alignment Enhance dataset tests by adding error checks for undefined indices, ensuring robust validation of non-null values. Refactor plot alignment logic to handle potential undefined entries gracefully. Additionally, streamline the extraction of y-values in dataset processing for better readability and maintainability. Remove unused type imports to clean up the codebase. --------- Co-authored-by: joaner <joaner@users.noreply.github.com>
…siveness Updated the WelcomeScreen component to enhance layout by removing unnecessary min-height constraints and adjusting flex properties for better responsiveness. This change aims to streamline the component's rendering and improve user experience on various screen sizes.
Enhance the IterablePlayer class by introducing a new method, streamMessagesInTimeRange, which allows for streaming messages in specified time ranges with configurable batch sizes and limits. This update improves the efficiency of message retrieval and supports real-time data visualization in the Plot panel. Additionally, refactor the getMessagesInTimeRange method to utilize the new streaming functionality, ensuring compatibility with existing use cases. Introduce tests for the new streaming behavior and update related types to accommodate the new parameters.
db3/SQLite cannot be Range-streamed (random access over the whole database), so the db3 worker now downloads a remote URL in full (with download progress) and opens it in memory. This unifies the local-File / remote-URL access model across all formats — passing a db3 URL just works, no host-side pre-download needed. Also: - bump @ioai/wasm-zstd to ^1.1.2 (inline-worker blob: URL fix) - add a Next.js (App Router / Turbopack) integration section to the embedding docs, plus a db3 troubleshooting note - update architecture docs for remote db3 behavior Bump to 1.3.5. Co-authored-by: joaner <joaner@users.noreply.github.com>
* fix(plot): improve SettingsNumber input UX * fix(plot): toggling series visibility no longer triggers a re-fetch * fix(plot): smooth incremental updates instead of flickering during load * feat(plot): disable X-axis modes that need array Y-paths or an X-path * feat(plot): add reset-zoom button + slim load progress bar
Remove the non-functional Plot reset zoom control, localize tab context menu and add-panel submenu strings, and add an npm check:i18n script.
Align Foxglove inclusive slice bounds for paths like position[1:2], accept position[1-2] as an alias, remount uPlot when incremental series updates are unsafe, and clear the dataset when plot data config changes.
Keep db3 remote URL loading documentation; clarify @ioai/wasm-zstd ≥ 1.1.2 in version requirements and troubleshooting.
Plot path strings in tests and comments were mistaken for arbitrary property utilities, producing invalid CSS that broke lightningcss minify.
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.
feat: generic Plot panel, db3 remote URL loading, and release v1.5.0
Description
This PR brings
@ioai/rosviewfrom 1.3.5 → 1.5.0 with a new generic Plot panel, remote db3 URL loading, player streaming APIs for time-range reads, and a round of panel/build refactors.Plot panel (new)
Plotlayout adapter, legend/settings UI, CSV export, and extensive unit tests.Plotlayouts now map to the generic Plot adapter (previously redirected to JointStatePlot).IterablePlayer.streamMessagesInTimeRangeasync generator so charts update incrementally instead of waiting for a full range scan.db3 remote URL loading
db3.workeraccepts a remoteurl(in addition to localfile/files).Player & sources
IterablePlayer: newstreamMessagesInTimeRange(); existinggetMessagesInTimeRange()preserved (drains the stream internally).randomAccessByTopicfrom initialization.Refactors & tooling
Component.tsx→*Panel.tsx; panel-specific modules unified undercore/directories (Align, Audio, Image, ThreeD, etc.).npm run check:i18nscript (scripts/check-i18n.mjs); Plot panel strings added for en / zh / ja.getAddablePanelDefinitions()filters panels hidden from the picker.Release
package.jsonandpackage-lock.json.Diff summary:
origin/mainis 14 commits ahead ofupstream/main— 154 files, +7915 / −570 lines.Motivation / related issue
Fileboilerplate.Related PRs on the fork: #1 (Plot panel), #3 (db3 URL + Next.js guide).
Type of change
Checklist
npm run lintpasses with no errorsnpm testpasses (unit tests)npm run buildandnpm run build:libsucceedAPI compatibility
No changes to
src/entrypoints/index.ts— published@ioai/rosviewexports are unchanged.Internal / behavioral changes:
Plotin registry; FoxglovePlotadapter targets generic PlothideFromPanelPicker: true; still registered for legacy layoutsgetAddablePanelDefinitions()Unavailableand hidden panels)IterablePlayer.streamMessagesInTimeRange()getMessagesInTimeRange()unchanged signatureStreamMessagesInTimeRangeArgsmaxMessages,batchSize,batchWallTimeMsurl+ optionalknownTotalBytes; error message updated when neither url nor files providednpm run check:i18nScreenshots / recordings