Skip to content

Exporter UI Refactor [AARD-1883] - #1194

Merged
BrandonPacewic merged 41 commits into
devfrom
zachr/1883/exporter-ui
Jul 25, 2025
Merged

Exporter UI Refactor [AARD-1883]#1194
BrandonPacewic merged 41 commits into
devfrom
zachr/1883/exporter-ui

Conversation

@rutmanz

@rutmanz rutmanz commented Jul 3, 2025

Copy link
Copy Markdown
Member

Task

AARD-1883

Uses Fusion's palette system to make the UI for the exporter a React webpage. Goal is to make the UI cleaner, easier to build on, and not such a pain to update.

Symptom

When you click the exporter button in fusion, you previously saw the old UI. The old UI was difficult to update and very inflexible in its layout.

Solution

  • Old ConfigureCommand GUI replaced with a palette, which has all of the same inputs re-implemented using MUI and React
  • Uses the Fusion-Web communication protocol to transfer data at key moments
    • When selecting joints and game pieces (Web UI prompts Fusion to allow the user to select an appropriate item in the scene, Fusion returns the selected items)
    • When first opening the panel (Fusion sends calculated robot weight)
    • When exporting (Web UI sends configuration to Fusion and initiates the export process)

Photos

image

Limitations

  • Uses Fusion's internal units (rad/s, cm/s, kg, N) instead of user's unit preferences
    • This isn't a technical limitation, could update to account for that if we think it's important

Verification

  • Confirmed that ExporterOptions objects were the same with both the old configuration UI and the new web UI
  • Confirmed that saving and loading of config in the document metadata worked
  • Confirmed that joint selector and gamepiece selectors allow you to select joints and gamepieces
  • Confirmed that models can be imported

Before merging, ensure the following criteria are met:

  • All acceptance criteria outlined in the ticket are met.
  • Necessary test cases have been added and updated.
  • A feature toggle or safe disable path has been added (if applicable).
  • User-facing polish:
    • Ask: "Is this ready-looking?"
  • Cross-linking between Jira and GitHub:
    • PR links to the relevant Jira issue.
    • Jira ticket has a comment referencing this PR.

@rutmanz rutmanz self-assigned this Jul 3, 2025
@rutmanz rutmanz added enhancement ui/ux Relating to user interface, or in general, user experience exporter Related to the Synthesis exporter labels Jul 3, 2025
@rutmanz
rutmanz force-pushed the zachr/1883/exporter-ui branch from 553417a to cea6ff1 Compare July 9, 2025 18:28
@rutmanz
rutmanz marked this pull request as ready for review July 9, 2025 18:32
@rutmanz
rutmanz requested review from a team as code owners July 9, 2025 18:32
@autodesk-chorus

Copy link
Copy Markdown

Chorus detected one or more security issues with this pull request. See the Checks tab for more details.

As a reminder, please follow the secure code review process as part of the Secure Coding Non-Negotiable requirement.

Comment thread exporter/SynthesisFusionAddin/web/package-lock.json Outdated
@azaleacolburn azaleacolburn added the refactor The most important part of software development. label Jul 9, 2025
@rutmanz
rutmanz requested a review from azaleacolburn July 17, 2025 16:13

@azaleacolburn azaleacolburn left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice work, lgtm!

@PepperLola PepperLola left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good and worked to export Dozer, I just have a couple nitpicks

Comment thread exporter/SynthesisFusionAddin/src/UI/MarkingMenu.py Outdated
Comment thread exporter/SynthesisFusionAddin/web/README.md Outdated
Comment thread exporter/SynthesisFusionAddin/web/src/ui/MaterialTaggingTab.tsx Outdated

@Dhruv-0-Arora Dhruv-0-Arora left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2025-07-22 at 10 06 36 AM

doesn't seem to be happening on dev for me

Comment thread exporter/SynthesisFusionAddin/src/UI/ConfigCommand.py Outdated
Comment thread exporter/SynthesisFusionAddin/src/UI/ConfigCommand.py Outdated
@rutmanz
rutmanz requested a review from Dhruv-0-Arora July 22, 2025 19:00

@PepperLola PepperLola left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it looks good. For some reason when I add dozer's face to the material tagging table it disappears when I close and reopen the exporter, even though other components (e.g. wheels) stay there. I think it might have something to do with it being linked from another document?

@Dhruv-0-Arora Dhruv-0-Arora left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2025-07-24 at 11 11 40 AM

When I click the "save" button, I get this error

@rutmanz

rutmanz commented Jul 25, 2025

Copy link
Copy Markdown
Member Author

@Dhruv-0-Arora I had that a while ago in testing but thought I fixed it, do you have logs/a way to reproduce?

@Dhruv-0-Arora

Copy link
Copy Markdown
Collaborator

@Dhruv-0-Arora I had that a while ago in testing but thought I fixed it, do you have logs/a way to reproduce?

I wasn't able to reproduce it again. It might have been some problem with the web build that I had done previously although unlikely since I do recall rebuilding the exporter UI (because I had deleted it prior to building it)

@BrandonPacewic BrandonPacewic left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I click the "save" button, I get this error

This looks like a bug manifested from Fusion caching stuff. I don't have any evidence for that other than my intuition of working with Fusion's python api.

Like I said before I really should have done this last summer. Looks amazing, nice work.

* dev: (35 commits)
  Per Incident Penalty
  Format
  Unit Test Fix
  Format
  Unconditional Overwrite Fix
  Format
  Camera tries to find a focus if no focus exists
  Action Link Updated
  fix: remove analytics stuff (oopsie)
  fix: merge issue
  fix: remove eslint and prettier configs
  fix: make biome actually enforce eslint's rules, include react rules
  Clearer Config
  Format
  PR Feedback
  Format
  Scene Object Test Improvements
  Eslint Removed
  fix: update bun lockfile
  Update DefaultMatchModeConfigs.ts
  ...
@BrandonPacewic

Copy link
Copy Markdown
Member

Manually silencing chorus warning:

security/semgrep
app.chorus.semgrep.rules.njsscan.semantic_grep.crypto.node_insecure_random_generator

crypto.pseudoRandomBytes()/Math.random() is a cryptographically weak random number generator.

@BrandonPacewic BrandonPacewic mentioned this pull request Jul 25, 2025
@BrandonPacewic
BrandonPacewic merged commit dd25423 into dev Jul 25, 2025
18 checks passed
@BrandonPacewic
BrandonPacewic deleted the zachr/1883/exporter-ui branch July 25, 2025 23:31
@BrandonPacewic BrandonPacewic mentioned this pull request Jul 25, 2025
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

exporter Related to the Synthesis exporter refactor The most important part of software development. ui/ux Relating to user interface, or in general, user experience

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants