Releases: Gold872/elastic-dashboard
Elastic 2025.0.0 Beta 3
Elastic 2025.0.0 Beta 2
This updates adds some performance improvements to live data viewing, fixes some issues when running on Linux, and adds an installer for MacOS.
Data Streaming Refactor
Switch from using StreamBuilder
to ValueListenableBuilder
on NT widgets. Users should now see significant performance improvements.
Linux Build Fixes
Fixed compatibility issues on Linux, on some versions of Linux. Flutter has also been upgraded 3.22.3, which fixes some graphical rendering issues.
MacOS Installer (Experimental)
Added an installer for MacOS. This has had very little testing so any feedback or issues experienced with it will be helpful.
Full Changelog
Elastic 2025.0.0 Beta 1
I'm happy to begin initial 2025 beta testing for Elastic. For those who aren't familiar with Elastic, it's a Flutter driver dashboard that acts as a drop in replacement for Shuffleboard, with a nicer UI, network optimizations, and more customizability. Elastic was initially released last year, and I was blown away by the community response.
What Changed?
Overall, not much on the outside. The interface and UX is extremely similar, but the differences lie in all the tiny additions and new features.
Windows Installer
The most significant change for Elastic in 2025 isn't even in the actual app, it's how the app is installed. On the GitHub releases (linked at the bottom of the post), there are now 2 download options for Windows: a portable option (the only option during 2024 season) and now the installer option. Instead of having to manually extract a zip file and create shortcuts, an installer can be ran to install the app and create desktop shortcuts. The portable version will remain available for teams who wish to to continue using it.
This is only available on Windows as of right now.
Robot Notifications & ElasticLib
The Alerts widget (which is also being added to WPILib in 2025) is extremely useful for displaying any issues or potential warnings. However, if you want to post a temporary status update or grab the user's attention when the widget isn't visible, there isn't an easy way to do so. Which is why there is now the ability to send notifications from robot code.
Along with this is the introduction of ElasticLib, which is a 1 file library that can be dropped into a robot project to allow sending notifications. Here's an example of how to send an error notification with ElasticLib:
Elastic.sendAlert(new ElasticNotification(NotificationLevel.ERROR, "Error Notification", "This is an error notification!"));
Which will send an on-screen notification displaying "Error Notification" and "This is an error notification!".
As of right now, this is only supported in Java, but contributions for a C++ port are open.
Better Theme Customization
Elastic has always had the option to customize the color of the app. However, often times the color scheme generated wouldn't match the vibrancy of the color, especially for bright colors. Now, there are many options as to how to customize the color scheme, which allows for a much wider range of colors across the app.
Widget Copy & Paste
Ever had a widget that was customized a specific way that you wanted to be able to copy onto another tab? Well you will no longer have to recreate the widget, you can now copy and paste a widget onto another tab!
Camera Stream Quality
Camera streams can use up a LOT of bandwidth. While Elastic has made some measures to conserve bandwidth from the camera streams, if a camera was sending a high resolution stream at a high framerate, there wasn't much that could be done about it.
Now, there is now the ability to change the quality (compression), resolution, and fps, allowing for low bandwidth camera streams.
Changelog
- Changed network latency to a decimal value by @Gold872 in #35
- Removed websocket bandwidth calculation by @Gold872 in #36
- Improved camera stream efficiency by @Gold872 in #37
- Added ability to change camera stream quality by @Gold872 in #38
- Update Flutter to 3.22.0 by @Gold872 in #39
- Use new asset manifest api instead of reading AssetManifest.json by @Gold872 in #40
- Remove codecov status CI by @Gold872 in #41
- Fix widgets not unsubscribing if type doesn't have a widget implementation by @Gold872 in #43
- Fix field objects not rendering if connection is already established during widget creation by @Gold872 in #44
- Update color picker plugin by @Gold872 in #45
- Replaced deprecated APIs by @Gold872 in #46
- Allow robot created notifications by @EmeraldWither in #48
- Increase notification width by @Gold872 in #49
- Increase notification time by @Gold872 in #50
- Add windows installer by @Gold872 in #54
- Copy & paste feature by @DanPeled in #62
- added dark mode & theme features by @DanPeled in #65
- Added CI check for import sorting by @Gold872 in #67
- Improved connection stability by @Gold872 in #69
- Remove NetworkTables Singleton by @Gold872 in #42
- Tab left+right navigation shortcuts by @Gold872 in #70
- Added hotkey manager test by @Gold872 in #71
- Fixed number views not working with integers by @Gold872 in #72
- Fix grid size not working by @Gold872 in #75
- Fix widget grid scaling when dragging in by @Gold872 in #76
- Fix first notification not showing by @Gold872 in #77
- added option to modify robot & trajectory colors by @DanPeled in #82
- Add restore default to color picker by @Gold872 in #84
- Fixed minimum window size on different DPI displays by @Gold872 in #87
- Swerve angle offset feature by @DanPeled in #59
- Fix command widget lockup by @Gold872 in #90
- Added struct decoding for pose2d and swerve module state by @Gold872 in #93
- Widget registrar by @DanPeled in #94
- Update documentation screenshots by @Gold872 in #95
- Changed macos bundle from "com.example" to "com.gold872" by @Gold872 in #97
- Fix widget minimum width being applied to height by @Gold872 in #98
- Added privacy policy by @Gold872 in #102
- Compress field images with oxipng by @Gold856 in #103
- Fix field images not disposing properly by @Gold872 in #105
- Update innosetup CI and .gitignore by @Gold872 in #106
- Fix camera stream edge case error when no image is received by @Gold872 in #107
- Update version to 2025.0.0-beta-1 by @Gold872 in #108
New Contributors
- @EmeraldWither made their first contribution in #48
- @DanPeled made their first contribution in #62
- @Gold856 made their first contribution in #103
Full Changelog: v2024.2.0...v2025.0.0-beta-1
Elastic v2024.2.0
Added
- Radial Gauge widget
- Ability to sort options in dropdown chooser
- Ability to hide command type in command widget
- Ability to show a button to publish text display data
- Ability to restore window position and size when opening the app
Changes/Fixes
- Grid sizes are now saved in the json configuration
- In-app notifications are shown in the correct spot
robot_height
can now be used as a property in the field widget- Widgets are scaled to new grid sizes when grid size is changed
- Settings dialog has been rearranged
Internal Code Changes
- Flutter has been updated to 3.19.0
- Shortcuts system has been reworked for the new version of Flutter
- All variables and methods in the dashboard page and NT widgets are now private
Full Changelog: v2024.1.0...v2024.2.0
Elastic v2024.1.0
Added
- Option to change Swerve widget rotation units
- Ability to lock layout
- YAGSL compatible swerve drive widget
- Option to update number slider data in real time
Changes/Fixes
- Fixed minimum screen size being too big on high resolution displays
- DS resizing now accounts for task bar visibility
- Command scheduler no longer crashes if topic IDs and names have different lengths
- Menu bar and widget container titles have been compacted
- IP address text box now updates when connection mode is changed
- Number slider and differential drive publishes the correct values when dragging
- Shuffleboard API will create new tabs even if there's no widgets on them
- Shuffleboard API no longer fails if data is missing or in the wrong order
Full Changelog: v2024.0.2...v2024.1.0
Elastic v2024.0.2
Added
- Timestamped application logging
- NT protocol in connection messages
Changes/Fixes
- Crescendo field has the correct origin and size
- When a new version is available, the notification will display the latest version
Full Changelog: v2024.0.1...v2024.0.2
Elastic v2024.0.1
Elastic v2024.0.0
Added
- Crescendo field images (image source)
- Option to change graph line width
- Option to change the time to display yellow and red in match timer
Changes/Fixes
- NT connection timeout is in the correct units, disconnects will now correctly happen when the connection from network tables is lost
- Topic ID signature is ignored when receiving RTT timestamps - fixes random disconnects
- List layouts now ignore mouse button when disconnected
- Camera streams are only updated & rendered when the widget is visible
- Improved Graph time accuracy
- PID controller widget only publishes when a button is pressed - improves robot safety when enabled
- App bar title is properly centered
Full Changelog: v2024.2.0-beta...v2024.0.0
Elastic v2024.2.0-beta
Added
- Basic application logging
- Missing widgets from Shuffleboard and SmartDashboard
- 3-Axis Accelerometer
- Accelerometer
- Encoder
- Motor Controller
- Nidec Brushless
- Profiled PID Controller
- Relay
- Ultrasonic
- Text displaying network latency
- RTT network tables protocol
- Only uses if the server is running NT4.1, still works with WPILib 2023
- Ability to automatically resize the height of the window to fit the Driver Station on screen (same thing the LabVIEW dashboard does)
- Better looking context menus
- Ability to change widget type from the context menu, even if not connected to network tables
- Option to change the default update rate and graph rate
- Option to hide metadata topics in the add widget dialog
- Ability to drag a table and auto create a list layout
Changes/Fixes
- Widgets are only rebuilt if subscription values change - significantly better performance
- Widgets ignore the mouse pointer when dragging
- Prevents the tooltip from showing on dropdown choosers
- Default tabs get correctly created on initial startup
- Team number doesn't display "null" if it's not set
- Camera stream widget will no longer choose invalid stream URLs
- Camera stream no longer breaks when switching tabs
- Widgets correctly rebuild themselves when changing subscription settings
- Differential drive vector arrow now points in the correct direction at the correct location
- List layout label locations properly load on startup
- List layout widget types and NT properties can now be edited without having to restart the app (oops)
- Shuffleboard API won't add widgets if disconnected from Network Tables
- Match time widget rounds down instead of up
- NaN numbers don't crash the Field widget
- Field trajectories draw a solid line instead of multiple dots
- Drivetrain widgets are scaled to the size of the widget
- Graph widgets use NT timestamps to update data - significantly higher accuracy
- Array editing properly works in text display widgets
Internal Code Changes
- Upgraded Flutter version to 3.16.5
- NT widgets inherit an abstract class instead of using a mixin
- All widgets are built using the NTWidgetBuilder so all constructors can be defined in one spot
- Everything with NT4 related has been renamed to have NT, except for classes specific to NT4 (subscriptions and topics)
- State management has been completely rebuilt, data is no longer stored in the draggable container classes themselves
Full Changelog: v2024.1.1-beta...v2024.2.0-beta
Elastic v2024.1.1-beta
Added
- New shortcuts system
- Ability to reorder tabs
- Ability to change position of labels in list layouts
- More options for robot IP address connection
Changes/Fixes
- Shuffleboard API integration now supports the property names of Shuffleboard widgets
- Attempting to load an invalid JSON will now show an error on the screen
- Default update period for widgets has been changed 100 ms to save bandwidth (except for graphs which is still 33ms), this of course can still be changed manually
- Graph settings now update when you change them
UI Changes
- List layouts take up significantly less space
- Widgets now have a minimum size
- Match time text takes up all available space
Full Changelog: v2024.1.0-beta...v2024.1.1-beta