Skip to content

miro-sync: Improve card positioning and progress feedback #41

@mindsocket

Description

@mindsocket

Problems

1. Positions buggy with --new-frame

When creating a new frame, cards are all placed on the same vertical position instead of being properly laid out in rows by hierarchy level.

Reproduction:

bun run src/index.ts miro-sync <space> --new-frame "<Name>'s playbook"

Expected: Cards arranged in hierarchical rows with proper vertical spacing
Actual: All cards on same Y position

2. Cache doesn't store calculated positions

The cache stores miroCardId and contentHash, but not the calculated position. This makes it difficult to:

  • Detect if cards have been manually moved
  • Preserve user positioning across syncs
  • Implement smarter positioning logic

3. New cards default to (0, 0) without --new-frame

When creating cards in an existing frame, new cards are placed at origin (0, 0) which:

  • Clutters all new cards in one spot
  • Makes manual reorganization tedious
  • Doesn't leverage the layout logic that already exists for --new-frame

Better behavior:

  • Y position should be inferred from hierarchy level (same as --new-frame)
  • Space out new cards horizontally per type
  • Create rows of new cards by type that are easier to move into position

4. No progress feedback during long operations

Without --verbose, there are long pauses during API calls with no indication of progress. Users see nothing during:

  • Fetching frame items
  • Creating/updating cards
  • Creating/deleting connectors

Request: Show high-level progress indicators even in normal mode (e.g., "Processing cards...", "Syncing connectors...")

Scope

Focus on miro-sync positioning UX and feedback. These improvements make the tool more usable for day-to-day syncing without requiring users to create new frames each time.

Related files

  • src/miro/sync.ts - Main sync logic
  • src/miro/layout.ts - Position calculation
  • src/miro/cache.ts - Cache structure

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions