Releases: Gold872/elastic-dashboard
Elastic 2025.0.0 Beta 5
Network Tree Fixes
Elastic is now able to display and add widgets for topics that don't contain a leading /
ElasticLib Python and API Rewrite
ElasticLib is now supported in Python. Additionally, the Java and C++ APIs have been rewritten to align more with language conventions. This does mean that existing code using ElasticLib will have to be modified, however the features of the library still remain the same.
Note about C++: The C++ api is now split into 2 files, elasticlib.h
, and elasticlib.cpp
, both of these files will have to be in your project in order for the library to compile
Special thanks to @DanPeled and @calcmogul for their work on this!
Bug Fixes and Stability Improvements
An issue was fixed that prevented list layouts from being created in certain situations. Additionally, the logic for widget dragging and grid updating has been changed to automatically update the grid whenever a widget changes, which fixes several errors that would occur when dragging widgets out of a list layout, and should increase reliability.
There was also an issue where some text boxes would submit before the user confirmed, which made it impossible to configure grid sizes, this has now been fixed.
Settings Menu Rewrite
The settings menu has been redesigned and is now much easier to navigate!
Camera Stream Optimizations (Again!)
The logic for decoding and rendering camera streams has been completely rewritten in a style better optimized for continuous streaming. The logic for determining when to stop streaming has been simplified, and also fixes the issue of streams starting before the widget becomes visible.
This has not been tested on a robot, so if you encounter any issues with camera streams from this update, please report it!
Remote Layout Downloading
I am very happy to support a much easier and more reliable way of downloading layouts from a robot. Previously, the only way to retrieve a layout through a robot connection was with the Shuffleboard Code API, which can be time consuming to set up, and is very difficult to maintain on the dashboard end. Instead, all you have to do now is export your layout as a json file, put it into your deploy folder, add one line of code to your robot, and you can remotely download and merge a layout from connecting to your robot.
The robot code side of this feature will be available with the release of WPILib 2025 Beta 3
Details on this new feature can be found here
Shuffleboard API Deprecation
With the release of the remote layout downloading feature, Elastic's support for creating layouts through the Shuffleboard API is now deprecated and will be removed after the 2025 season. The documentation linked above has a migration guide for code layouts, and a replacement for the tab-switching feature will be added in a future update. Starting with this release, a warning message will appear when a code layout is created with the Shuffleboard API, with a link to the migration guide.
Other Small Features
- Added an icon on the top of the menu bar when there's a new update, clicking it will bring you to the download page
Full Changelog
- Add a fix for NT topics without a leading / by @Gold872 in #137
- Added support for elasticlib in python by @DanPeled in #136
- Added an app bar icon when there's an update by @Gold872 in #142
- Fix list layout creation for unregistered sendable types by @Gold872 in #151
- Tab Grid Fixes and Cleanup by @Gold872 in #150
- Moved lock layout icon and cleaned up notifications by @Gold872 in #152
- Fix continuous text submission by @Gold872 in #154
- Settings rewrite by @DanPeled in #86
- Camera stream optimizations by @Gold872 in #156
- Make elasticlib C++ and Python libraries more idiomatic by @calcmogul in #140
- Add CI for ElasticLib formatting by @Gold872 in #139
- Remote Layout Download from Robot by @Gold872 in #153
- Update version to 2025.0.0-beta-5 by @Gold872 in #157
New Contributors
- @calcmogul made their first contribution in #140
Elastic 2025.0.0 Beta 4
New Docs
The documentation has been moved to GitBook! The contents of the documentation have not significantly changed, but should be much easier to browse and navigate. The new URL for the online documentation is: https://frc-elastic.gitbook.io/docs
Additional Shortcuts
There are now new shortcuts to open settings and robot connection. Ctrl + ,
will open the settings, Ctrl + k
will connect to the robot (the driver station ip address), and Ctrl + Shift + k
will connect to simulation.
ElasticLib and Notification Changes
There is now additional customizability to notifications set with ElasticLib, along with API Improvements.
Method Chaining
Similar to how Phoenix 6 supports customizing control requests and configurations through method chaining, ElasticLib supports customizing notifications through method chaining.
For example:
ElasticNotification statusNotification = new ElasticNotification(NotificationLevel.INFO, "Info!", "Your robot is doing great!");
/* additional robot code */
statusNotification.setLevel(NotificationLevel.WARNING);
statusNotification.setTitle("Warning!");
statusNotification.setDescription("Your robot has a small issue!");
Elastic.sendAlert(statusNotification);
can be simplified to
ElasticNotification statusNotification = new ElasticNotification(NotificationLevel.INFO, "Info!", "Your robot is doing great!");
/* additional robot code */
Elastic.sendAlert(statusNotification
.withLevel(NotificationLevel.WARNING)
.withTitle("Warning!")
.withDescription("Your robot has a small issue!"));
Display Time, Size, and More!
In addition to the nicer API, Elastic now supports customizing the time to display the notification for and the size!
C++ Support
C++ support for ElasticLib has been added!
Other Small Improvements
- The NetworkTables search field will continuously update while typing (#131)
- Client name has been changed from "Elastic" to "elastic"
- The width of a Combo Box Chooser dropdown will now take up the whole widget
Full Changelog
- Added shortcuts for robot connection and opening settings by @Gold872 in #123
- Update privacy policy by @Gold872 in #124
- Update README by @Gold872 in #125
- Added options for modifying display time and width & height of notifications through code by @DanPeled in #122
- Change client name to Elastic by @Gold872 in #129
- Fix RTT server address by @Gold872 in #130
- Make NT search textfield update on change by @humandavey in #131
- Use tar.gz file extension on macos by @Gold872 in #132
- Improve Java ElasticLib by @Gold872 in #133
- Added C++ elastic lib by @DanPeled in #109
- Update version to 2025.0.0-beta-4 by @Gold872 in #135
New Contributors
- @humandavey made their first contribution in #131
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