Skip to content

Releases: Gold872/elastic-dashboard

Elastic 2025.0.0 Beta 5

15 Dec 16:51
66a882c
Compare
Choose a tag to compare

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!

image

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

New Contributors

v2025.0.0-beta-4...v2025.0.0-beta-5

Elastic 2025.0.0 Beta 4

16 Nov 18:49
51b171a
Compare
Choose a tag to compare

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

New Contributors

v2025.0.0-beta-3...v2025.0.0-beta-4

Elastic 2025.0.0 Beta 3

21 Oct 18:00
a96201d
Compare
Choose a tag to compare

Camera Stream Freezing Fix

A critical bug where camera streams freeze when disconnecting and reconnecting from a robot has been fixed.

Full Changelog

v2025.0.0-beta-2...v2025.0.0-beta-3

Elastic 2025.0.0 Beta 2

18 Oct 19:32
2e8537f
Compare
Choose a tag to compare

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

v2025.0.0-beta-1...v2025.0.0-beta-2

Elastic 2025.0.0 Beta 1

06 Oct 19:53
076925d
Compare
Choose a tag to compare

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

Full Changelog: v2024.2.0...v2025.0.0-beta-1

Elastic v2024.2.0

24 Feb 19:01
aaee4c8
Compare
Choose a tag to compare

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

04 Feb 20:48
0f32027
Compare
Choose a tag to compare

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

14 Jan 21:43
48cf85c
Compare
Choose a tag to compare

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

07 Jan 21:38
4aa950c
Compare
Choose a tag to compare

Fixed

  • Graphs not rendering when created

Full Changelog: v2024.0.0...v2024.0.1

Elastic v2024.0.0

07 Jan 01:19
4180bd8
Compare
Choose a tag to compare

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