Skip to content

improvement(ui): unify loading animations - #7746

Open
j15z wants to merge 9 commits into
stagingfrom
feat/better-loading-animations
Open

improvement(ui): unify loading animations#7746
j15z wants to merge 9 commits into
stagingfrom
feat/better-loading-animations

Conversation

@j15z

@j15z j15z commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Use one shared dot spinner with weighted rotation across loading states.
  • Reuse the wordmark morph for workflow/workspace loading, with flat theme colors and matching empty-state size and alignment.
  • Show loading feedback immediately when switching workflows.
  • Refine the node run spinner and round the running strip to match the action buttons.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Other: UI and animation improvements

Testing

  • 108 focused tests passed across navigation, wordmark animation, sidebar, find bar, and landing demos.
  • Full lint passed across 26 workspaces.
  • All 46 repository audits passed, including strict API boundary validation.
  • Block registry and docs manifest checks passed.
  • Review light/dark loading-to-empty-state alignment, workflow switching, and node running/Stop states.

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

Screenshots/Videos

No screenshots or videos attached.

j15z added 9 commits September 9, 2026 16:45
Use Relay for shared loading indicators and the Sim wordmark morph for
workspace and workflow loading. Show workflow navigation feedback as soon
as a destination is selected, including sidebar and search navigation.
…g-animatinos

# Conflicts:
#	apps/sim/app/(landing)/components/footer/components/footer-wordmark-loop/footer-wordmark-loop.tsx
Replace the relay loader with a compact fading highlight around a ring.
Keep the weighted orbit and reduced-motion fallback. This commit records
the gradient variant before returning to the orbiting-dot design.
Replace the gradient highlight with a solid dot on a 3-unit ring.
Record the dot variant with its slowdown centered at the top before
experimenting with a clockwise offset.
Keep the dot moving through the top while accelerating through the bottom.
Rotate the ring and dot together so their alignment stays fixed when scaled.
This commit records the updated dot spinner variant.
Give the running strip and Stop highlight matching 15-degree edges with
rounded corners and a 2.75px gap. Round the strip's outer end to follow the
node contour, and preserve the thicker dot loader at 16px in the run button.

Checkpoint for the slanted strip version before trying a vertical gap.
Use Static in light mode and Graphite in dark mode for workflow loading,
while keeping the existing gradients available for the landing page.
Remove the temporary pinned preview so loading ends normally.

Checkpoint the rounded vertical gap between the Stop highlight and the
running strip before restoring the slanted strip version for comparison.
@vercel

vercel Bot commented Sep 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
docs Ready Ready Preview Sep 10, 2026 11:17pm UTC

Request Review

@greptile-apps

greptile-apps Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 4/5

The PR appears safe to merge after non-blocking UI issues around incomplete navigation coverage and short-canvas command clipping are addressed.

Findings

  1. P2 Navigation feedback is incomplete
  2. P2 Commands can be clipped

Summary

  • Introduces shared wordmark frame, morph, and workflow-loader components.
  • Replaces bespoke spinners across workspace and landing-page surfaces.
  • Adds a workspace-level workflow-navigation provider and loading overlay.
  • Refines running-node action-bar geometry and animation styling.
  • Leaves some workflow-switch actions outside the new navigation feedback path and introduces clipping risk in the empty-workflow command layout.

Diagram

sequenceDiagram
    participant User
    participant Navigation as Workflow navigation helper
    participant Overlay as Loading overlay
    participant Router
    participant Editor as Workflow editor
    User->>Navigation: Select covered workflow link
    Navigation->>Overlay: Set optimistic pending state
    Navigation->>Router: Push destination
    Overlay-->>User: Show wordmark immediately
    Router->>Editor: Render destination workflow
    Editor->>Overlay: Report hydration readiness
    Overlay-->>User: Reveal hydrated canvas
    User->>Router: Create, duplicate, or delete-and-switch
    Note over Router,Overlay: Direct router calls bypass immediate pending feedback
Loading

Reviews (1) · Last reviewed commit: "improvement(ui): unify loading animation..."

Comment on lines +33 to +50
const navigate = useCallback<NavigateToWorkflow>(
(href, options) => {
const destination = new URL(href, window.location.href)
const isWorkflowSwitch =
destination.origin === window.location.origin &&
/^\/workspace\/[^/]+\/w\/[^/]+\/?$/.test(destination.pathname) &&
destination.pathname !== window.location.pathname

startTransition(() => {
setIsNavigating(isWorkflowSwitch)
if (options?.replace) {
router.replace(href, { scroll: options.scroll, transitionTypes: options.transitionTypes })
} else if (options) {
router.push(href, { scroll: options.scroll, transitionTypes: options.transitionTypes })
} else {
router.push(href)
}
})

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.

P2 Navigation feedback is incomplete

The immediate loading indicator only appears when navigation uses this new callback. Creating a workflow from the sidebar and duplicating the active workflow still call router.push directly, so those user-initiated switches leave the old canvas visible until the destination route commits. Route every workflow switch through the shared navigation function so loading feedback remains consistent.

Knowledge Base Used:

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

</g>
</WordmarkFrame>

<div className='-translate-x-1/2 absolute top-full left-1/2 flex w-max flex-col gap-2 pt-5'>

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.

P2 Commands can be clipped

The commands are now positioned below a wordmark that is centered independently, so they no longer participate in vertical centering. Because the containing canvas clips overflow, a canvas around 300px tall or shorter can hide the lower command rows. Keep the complete empty state in normal layout flow or reposition it for short canvases.

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.

1 participant