Version 0.4.3

Mobile Study Mode now renders rich text • Faster, safer card moves with NSFileCoordinator • Smoother Card Controls with no modal flicker

0.4.3 · macOS, iOS

New Features

Rich Text in Mobile Study Mode (macOS & iOS)

Formatted text created in the desktop Card Editor now renders faithfully on iPhone:

  • ProseMirror Parsing on iOS: Study Mode parses the same ProseMirror JSON written by the desktop Card Editor, preserving bold, italic, lists, alignment, colors, and fonts
  • New richContent Field: Card text elements now carry a structured richContent payload alongside plain text, so both apps render from a single source of truth

Improvements

Card Controls Stability (macOS)

Moving, duplicating, and deleting cards in Card Controls is noticeably smoother:

  • Coordinated File Moves: Card moves between decks now go through macOS NSFileCoordinator, so iCloud sees a proper atomic move instead of a copy-then-delete race — faster on large decks and safer when iCloud Drive is mid-sync
  • Post-Move Verification: After a move completes, the backend verifies the card actually landed in the destination before updating the UI, catching edge cases where iCloud would otherwise report success prematurely
  • Silent Refresh (No Modal Flicker): Card Controls refreshes its state after card operations without re-mounting the modal, eliminating the brief flash that sometimes occurred after move or delete operations
  • Pending Operation Tracking: The Card Controls store now tracks in-flight operations and debounces refreshes, preventing duplicate updates when multiple cards are moved in quick succession

iCloud Sync Robustness (macOS)

The iCloud migration and sync pipeline handles edge cases more gracefully:

  • Pre-Migration Conflict Consolidation: Before migrating a local library into iCloud, existing conflict artifacts are consolidated so they don’t multiply during the move
  • Startup Artifact Sweep: On launch, the app sweeps for leftover iCloud conflict artifacts from prior sessions and cleans them up before the library loads
  • Sharper Conflict Detection: The backend’s conflict-detection pass is more precise about what counts as a real conflict versus a transient sync state, reducing false positives
  • File Manager Refactor: Internal file-management and conflict-handling code reorganized for clearer ownership and easier future changes

Mobile App Polish (iOS)

  • Dynamic Sync Status: Profile now shows live iCloud sync state, including an explicit “iCloud unavailable” indicator when the container can’t be reached
  • Dynamic Version Display: Profile reads app version and build from the bundle instead of a hardcoded string, so it stays correct across releases
  • Working External Links: Fixed missing URLs on external links in Profile and Settings

Technical Updates

  • Replaced bump-version.cjs with bump-and-commit.cjs, which atomically updates version files, syncs Cargo.lock, commits, and tags — preventing the tag-before-commit bug that previously pointed release tags at pre-bump commits
  • Added docs/data/ to .gitignore for per-session data model update notes

Feedback

Found a bug or have a feature request? We’d love to hear from you:

Thank you for using SuperCards!