Skip to content

refactor(web): migrate LogoSpinner to @makeplane/propel - #9764

Draft
codingwolf-at wants to merge 3 commits into
previewfrom
refactor/makeplane-logo-spinner
Draft

refactor(web): migrate LogoSpinner to @makeplane/propel#9764
codingwolf-at wants to merge 3 commits into
previewfrom
refactor/makeplane-logo-spinner

Conversation

@codingwolf-at

@codingwolf-at codingwolf-at commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Description

Replace the web app's local LogoSpinner (theme-picked GIFs under apps/web) with @makeplane/propel/components/logo-spinner. Call sites pass size="fluid" and alt so the mark is accessible and matches the old splash heights (24px → 44px at sm).

Hydrate fallback no longer waits on next-themes: Propel renders both theme GIFs and CSS selects via data-theme, which removes the blank canvas before the mark. Workspace auth only shows the spinner on first load when workspace info is missing, so a permissions refetch does not tear down the home dashboard. Vite SSR noExternals @makeplane/propel so the GIF imports resolve in the prerendered shell instead of 500ing in Node.

Type of Change

  • Code refactoring

Screenshots and Media (if applicable)

Logo Spinner
Screen.Recording.2026-09-04.at.7.17.55.PM.mov

Test Scenarios

  • Cold-load web (signed out and signed in): the Plane mark shows on bg-canvas with no empty frame, then the app appears.
  • Open home, issue detail, page detail, onboarding, profile settings, webhooks, and workspace invitations loading states and confirm the spinner size/theme.
  • Stay on home after it has painted: a workspace-info refetch must not replace the dashboard with the spinner.
  • pnpm --filter=web build completes; the prerendered shell does not 500 on GIF imports.

…cross the application

* Replaced imports of LogoSpinner from the common component to the new location in @makeplane/propel.
* Updated LogoSpinner usage to include size and alt attributes for better accessibility and consistency.
* Removed old LogoSpinner GIF assets as they are no longer needed.

This change ensures a unified approach to using the LogoSpinner component throughout the application.
@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codingwolf-at codingwolf-at self-assigned this Sep 4, 2026
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

React Doctor found 4 new issues in 4 files · 4 warnings · score 91 / 100 (Great) · 5 fixed · vs preview

4 warnings

app/(all)/workspace-invitations/page.tsx

  • ⚠️ L37 React function has high control-flow complexity no-high-complexity-react-function

core/components/workspace-notifications/root.tsx

  • ⚠️ L30 React function has high control-flow complexity no-high-complexity-react-function

core/layouts/auth-layout/workspace-wrapper.tsx

  • ⚠️ L50 React function has high control-flow complexity no-high-complexity-react-function

core/lib/wrappers/authentication-wrapper.tsx

  • ⚠️ L34 React function has high control-flow complexity no-high-complexity-react-function

Reviewed by React Doctor for commit be9adeb. See inline comments for fixes.

@codingwolf-at codingwolf-at changed the title refactor: migrate LogoSpinner to @makeplane/propel and update usage a… refactor(web): migrate LogoSpinner to @makeplane/propel Sep 4, 2026
This change aligns the lockfile with the latest version of @makeplane/propel, ensuring consistency across the project dependencies.
…state

* Replaced static "Loading" alt text with a translatable string using the `useTranslation` hook across multiple components.
* This change enhances accessibility and supports localization for the loading indicator in various parts of the application.
@@ -27,6 +28,8 @@ type NotificationsRootProps = {
};

export const NotificationsRoot = observer(function NotificationsRoot({ workspaceSlug }: NotificationsRootProps) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

React Doctor · react-doctor/no-high-complexity-react-function (warning)

NotificationsRoot has cyclomatic complexity 20, cognitive complexity 18, and maximum nesting depth 3, so its React logic is hard to understand and change. Extract independent branches into components or hooks.

Fix → Extract independent render branches and state logic into focused components or hooks until the control flow is easy to follow.

Docs

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