Skip to content

fix: preserve viewport across MCP-driven file reloads#53

Merged
trmquang93 merged 1 commit into
mainfrom
fix/preserve-viewport-on-reload
May 16, 2026
Merged

fix: preserve viewport across MCP-driven file reloads#53
trmquang93 merged 1 commit into
mainfrom
fix/preserve-viewport-on-reload

Conversation

@trmquang93
Copy link
Copy Markdown
Collaborator

Summary

  • When the MCP server mutates the .drawd file externally, the editor reloads via importFlow and applyPayload, which was resetting the viewport (pan/zoom), scope filter, and screen selection — causing a disorienting canvas jump.
  • Viewport: Skip setPan/setZoom when source === 'mcp' so the user's current canvas position is preserved.
  • Selection: Added preserveSelection option to replaceAll — keeps the selected screen if its ID still exists in the incoming data, clears it otherwise.
  • Scope: Preserve scopeRoot during MCP reloads instead of resetting to null.

Test plan

  • New useFileActions.test.js (8 tests): verifies viewport/scope/selection preservation for MCP source, and normal viewport application for file opens
  • New replaceAll preserveSelection tests in useScreenManager.test.js (3 tests): verifies selection kept when screen still exists, cleared when removed, cleared by default
  • npm run lint passes
  • npx vite build passes
  • npm test — all 850 tests pass (2 pre-existing MCP server failures from missing satori dep)

Closes #8.4

@trmquang93 trmquang93 merged commit 6bc703a into main May 16, 2026
1 check passed
@github-actions github-actions Bot deleted the fix/preserve-viewport-on-reload branch May 16, 2026 23:30
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