Skip to content

feat(onboarding): tour of the UI for first-time users - #1391

Open
Dhruv-0-Arora wants to merge 68 commits into
devfrom
darora1/218/ui-tour
Open

feat(onboarding): tour of the UI for first-time users#1391
Dhruv-0-Arora wants to merge 68 commits into
devfrom
darora1/218/ui-tour

Conversation

@Dhruv-0-Arora

@Dhruv-0-Arora Dhruv-0-Arora commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

SYNTH-218

Onboarding users onto the new UI. Helping them navigate through using Synthesis and understand the different parts of the simulator.
Certain onboarding modules block clicking anything on the screen except the TourCard itself.

Note

Onboarding is only for the first time you open the simulator. To see it, you must clear your preferences. There is now a button in settings which you can use the do onboarding again

Component UI:
Screenshot 2026-07-08 at 2 21 13 PM

Screenshot 2026-07-16 at 6 33 37 PM

In addition, this PR adds the new Library modal. This modal sorts each robot and field by year in addition to adding their thumbnails.

Screenshot 2026-07-16 at 6 34 06 PM

Important

Some PRs that have worked on the InitialConfigPanel may have been lost in merging. Ensure your PRs have been merged in and not silently merged out.


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.
      Signed-off-by: Dhruv Arora dhruv.arora1@autodesk.com

Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
@Dhruv-0-Arora Dhruv-0-Arora self-assigned this Jul 8, 2026
@Dhruv-0-Arora
Dhruv-0-Arora changed the base branch from feat/63/ui-redesign to dev July 10, 2026 22:38
@Dhruv-0-Arora
Dhruv-0-Arora changed the base branch from dev to feat/63/ui-redesign July 10, 2026 22:44
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Thread structured per-asset `year` and optional `thumbnail` from the
manifest through to cached assets so the asset library can group and
preview assets:

- Widen the manifest schema (ManifestFileEntry) with year/thumbnail.
- Derive year (parsed from filenames at build time) and resolve a
  sibling thumbnail path in update_manifest.ts.
- Expose both on DefaultAssetInfo, resolving the thumbnail to a
  servable URL.
- Persist them onto MirabufCacheInfo via cacheRemote/storeInCache so
  downloaded assets retain the metadata; older cached entries still
  deserialize since the fields are optional.
Replace the docked ImportMirabufPanel with a large centered LibraryModal
that lists assets by competition year, matching the Figma design:

- Year tabs (descending, with an "Other" tab for undated assets) over a
  card grid that merges each year's robots and field, with thumbnail
  placeholders, a cached badge, and spawn/download/delete affordances.
- Keep Saved (cached), Autodesk Hub (APS), and Import-from-File as
  secondary sections so no functionality is lost.
- Extract spawnCachedMira and the remote/APS/download-all flows into a
  shared librarySpawnActions module.
- Migrate all call sites from openPanel to openModal; drop the Library
  from the panel mutual-exclusion group and replicate the
  block-spawn-while-configuring guard in openModal; defer the
  Import<->Library handoff a tick to avoid the single-modal clobber.
- Advance the onboarding tour on a new modal-open trigger and update the
  step copy to reference year tabs.
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Encapsulate the APS state, event subscriptions, and spawn handler in
AutodeskHubAccordion so the Library body only deals with default/cached
assets. Also fix DownloadButton using the delete icon.
The deployed manifest had no year fields, so every asset fell into the
single 'Other' tab. Regenerate the asset pack with update_manifest.ts to
write year (and thumbnail) metadata, and fix the script's basepath case
(Mira -> mira) so it targets the actual served directory on case-sensitive
filesystems.
…previews

Fusion embeds a 250x250 PNG thumbnail in every mira file's metadata, which
was going unused (per rutmanz's PR note). Extract it at manifest-build time
into a sibling thumbnails/<name>.png and reference it from the manifest, so
library cards show real asset renders instead of placeholder icons. The
assembly is already decoded for GUID/name normalization, so this adds no
extra parsing.
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Informational tourcards prevent clicking anything on the screen except
the tourcard itself. This commit also modifies the structure of some
tourcards to help improve the flow of onboarding
Insert a "Set Up Your Assembly" card between "Choose a Robot" and
"Select an Assembly". It points at the Assembly Setup panel and tells the
user to pick an input scheme or press Finish, which auto-assigns the
Ernie (WASD) scheme. The step advances on ConfigurationSavedEvent.

Anchor it to the input-scheme list rather than the panel root, whose
bounding box is widened by the transform gizmo control. Also re-sync the
Popper position in a short burst after an anchored step mounts: the panel
slides in via a CSS transform that fires no resize event, which otherwise
leaves the callout measured against its pre-animation position.
@Dhruv-0-Arora
Dhruv-0-Arora force-pushed the feat/63/ui-redesign branch 3 times, most recently from 0d44711 to cbab725 Compare July 16, 2026 15:28
@Dhruv-0-Arora
Dhruv-0-Arora force-pushed the darora1/218/ui-tour branch 2 times, most recently from 682466f to 6848d4f Compare July 16, 2026 17:16
@Dhruv-0-Arora
Dhruv-0-Arora marked this pull request as ready for review July 17, 2026 00:56
@Dhruv-0-Arora
Dhruv-0-Arora requested review from a team as code owners July 17, 2026 00:56
@Dhruv-0-Arora
Dhruv-0-Arora requested review from RoushilS and azaleacolburn and removed request for a team July 17, 2026 00:56
previously, if you spawned a robot instead of a field @ the beginning, it would prevent
you from moving past tour cards 3 & 4

Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
From the previous commit, there was an issue where the scrim (overlay)
would prevent a user from clicking the add button if they accidentally
spawn a robot instead of a field

Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
…he next button

Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>

@azaleacolburn azaleacolburn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm honestly not a huge fan of the way parts of the onboarding process feel and look, but I didn't notice any bugs.

I am, again, not the best person to review most of this code, so I'm not going to! I trust @rutmanz and @0xda157 a lot more in that department.

@0xda157 0xda157 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • You can spawn a robot when it asks you to spawn a field, which causes the tour to ask you to spawn a robot when you've already done so
  • If the step has not been completed, I think that showing a toast instead of just disabling the next button is really weird. I'd prefer to just have the button do nothing.
  • The tour card pointing at the library should not be covering the items in the library Image
  • The "switch modes" tour card covers the switch modes dropdown Image

Comment thread fission/src/ui/tour/TourOverlay.tsx Outdated
Comment thread fission/src/ui/tour/TourProvider.tsx Outdated
Comment thread fission/update_manifest.ts

@AlexD717 AlexD717 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.

  • Pressing escape on the first step should skip the tutorial, not spawn a popup telling me to spawn an assembly

  • Step 11 says WASD, yet we let users choose any input scheme (specify if Ernie was chosen)

Image

Comment thread fission/src/test/ui/TourOverlay.test.tsx Outdated
Comment thread fission/src/test/ui/TourOverlay.test.tsx Outdated
Comment thread fission/src/test/ui/TourReconcile.test.ts Outdated
Comment thread fission/src/test/PreferencesSystem.test.ts Outdated
Comment thread fission/src/test/ui/TourReconcile.test.ts Outdated
Comment thread fission/src/ui/tour/TourSteps.ts
Dhruv-0-Arora and others added 5 commits August 13, 2026 12:54
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Co-authored-by: Alexey Dmitriev <157652245+AlexD717@users.noreply.github.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Co-authored-by: Alexey Dmitriev <157652245+AlexD717@users.noreply.github.com>
Co-authored-by: 0xda157 <153149335+0xda157@users.noreply.github.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Brings in Multiplayer v2 (Glueball). Nine files conflicted; several more
auto-merged across the same areas. Resolution decisions:

PreferenceTypes.ts
- Took dev's MultiplayerHost/Port/Secure and dropped MultiplayerClientID,
  which dev deliberately removed in the v2 rewrite. Kept HasSeenOnboardingTour.

Synthesis.tsx
- Kept dev's Stack that groups DragModeIndicator with MultiplayerHUD, and
  wrapped the tree in TourProvider with TourOverlay after PortraitOverlay.

MirabufLoader.ts / LibrarySpawnActions.ts
- This branch moved spawnCachedMira out to LibrarySpawnActions.ts, so dev's
  edits to the old copy were ported by hand rather than merged:
  - added the "Cannot spawn a second field!" guard for multiplayer sessions
  - renamed newObject payload sceneObjectKey to sceneObjectId
  - dropped the bodyIds payload field
  - broadcast is no longer async, so broadcastSpawn no longer awaits it
  - retargeted the import from multiplayer/types to multiplayer/MultiplayerTypes
- Kept dev's consolePrefixer logger in MirabufLoader.ts.

SceneRenderer.ts
- Kept both sides: this branch's captureAssemblyThumbnail and dev's optional
  id parameter on registerSceneObject. Took dev's relocated
  components/overlays/SceneOverlayEvents path.

MobileHUD.tsx (moved by dev to components/overlays/)
- Took dev's import paths for the new location and dev's globalOpenModal
  multiplayer flow, which supersedes the startWorldCallback prop this branch
  was passing. Kept LibraryModal in place of ImportMirabufPanel.

TopBar.tsx / ConfigurePanel.tsx
- Additive import unions only. Kept dev's setCloseModal and MatchModeType
  alongside the tour imports.

ImportMirabufPanel.tsx
- Deleted. This branch replaced it with LibraryModal, and dev's only change to
  it was an import path rewrite, so nothing behavioural was lost. No references
  remain.

biome.json (only deliberate deviation from dev)
- Added an overrides entry disabling the linter and formatter for
  src/systems/multiplayer/bindings, matching how src/proto is already handled.
  dev's existing "!src/systems/multiplayer/bindings" sits in the formatter
  includes only, so the generated glueball bindings were still linted and
  formatted and blocked the pre-commit hook.

Verified after resolution: tsc clean, biome clean on source, 817 unit tests
pass, production build succeeds.

@AlexD717 AlexD717 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.

Still asking me to spawn a robot if I already spawned it

Screen.Recording.2026-08-13.at.4.14.17.PM.mov

Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
@Dhruv-0-Arora
Dhruv-0-Arora requested a review from AlexD717 August 14, 2026 00:23
@Dhruv-0-Arora

Copy link
Copy Markdown
Collaborator Author

@AlexD717 now when you do the robot and field out of order, the tour card 7 will appear in the middle of the screen because the intake button is not visible. I don't think we should change this.

@AlexD717 AlexD717 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.

lgtm

@0xda157 0xda157 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • The library highlight extends beyond what is visible, and the tour card still cover the name of items: Image
  • the switch modes tooltip still cover the selection menu: Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants