Skip to content

perf(ui): RepaintBoundary + TickerMode for workspace morph layers (Fluid F2) #358

Description

@ZhuchkaTriplesix

Parent

Part of #356 · Fluid perf audit F2 (P0)

Problem

QueryaSwitchingBody / QueryaCrossFadeStack apply AnimatedOpacity (and slide) over full workspace trees (empty hero ↔ connected SQL/editor) without RepaintBoundary per layer. Inactive keep-alive children stay mounted under opacity 0 and may keep tickers/work running.

Where:

  • lib/core/motion/querya_switching_body.dart
  • lib/core/motion/querya_cross_fade_stack.dart
  • callers: workspace_panel.dart, engine workspace homes

Expected

  • Each morph layer wrapped in RepaintBoundary
  • Inactive layers use TickerMode(enabled: active) (keep IgnorePointer / ExcludeFocus)
  • No new hard-cut regressions for empty ↔ connected

Acceptance

  • Layers isolated for paint
  • Inactive panes do not drive animation tickers
  • Widget tests for SwitchingBody / CrossFadeStack still green
  • Manual: empty ↔ connect morph stays smooth (profile preferred)

Related

Metadata

Metadata

Labels

motionAnimation system, transitions, motion tokensperformanceTheme parser epic label: performanceuiUser interface components and widgets

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions