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
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:
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
miroCardIdandcontentHash, but not the calculated position. This makes it difficult to: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:
Better behavior:
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: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 logicsrc/miro/layout.ts- Position calculationsrc/miro/cache.ts- Cache structure