Post

GSoC 2026 - Week 3

Here is week 3 update for my project:

This week, I added the basic widget execution framework as part of PR #8 (based on Execution of Dashboard widgets discussion). A new WidgetBase, which is the base class for all widgets is added. A WidgetManager, which is responsible for the entire lifecycle of the widgets is also added. Widgets for the energy plots (all derived from a common EnergyWidgetBase class) have been added using this new framework.

Here are some of the changes made as part of this PR:

  • Added WidgetBase and WidgetManager to run basic widgets
  • Added support to push widget outputs to browser
  • Added following UI functionality
    • List available widgets (with filtering)
    • Add widgets
    • Display added widgets with live updates
    • Move and re-size of widget items
    • Filtering of added widgets
    • Delete widgets
  • Added backend analysis widgets for Energies
  • Added step iteration of trajectories
  • Added both backend and frontend tests for all new functionality
  • Fix doc links
  • Refactor UniverseManager and WidgetsComm
  • Avoid modifying trajectory reader for step info

I replaced the @mdi/font frontend dependency with @mdi/js, which packages only used JavaScript SVG icons instead of packaging the entire material design icons as part of PR #9. This reduced the wheel size by a factor of 10 (from ~2MB to 200KB).

Codecov is now setup to dispaly coverage results based on components - frontend / backend.

On the packaging side, we now have the mdadash-feedstock repo and the package is available on conda-forge.

With this week’s progress, we can now add basic energy plot widgets that have complete support for live display, filtering, resizing, moving, deletion etc in the UI. We are on track for next week’s milestone as per the Project timeline.

Next week, I will add inputs support for widgets and also add some other basic widgets like COM distance, radii of gyration, etc. This will complete the entire lifecycle of widgets from the UI perspective as needed for the 2nd milestone.

This post is licensed under CC BY 4.0 by the author.