Skip to content

Data Saving Mode Feature#280

Open
AtencionEsTodoNecesitas wants to merge 7 commits intofeather-wallet:masterfrom
u4144619648-wq:feature/skip-sync-data-saving
Open

Data Saving Mode Feature#280
AtencionEsTodoNecesitas wants to merge 7 commits intofeather-wallet:masterfrom
u4144619648-wq:feature/skip-sync-data-saving

Conversation

@AtencionEsTodoNecesitas

This PR adds a Data Saving Mode feature to help users reduce bandwidth usage by preventing automatic blockchain synchronization.
More info : add-a-skip-sync-feature-to-a-monero-wallet

Features Added

1. Data Saving Mode

  • Optional setting to disable automatic blockchain sync
  • Wallet marks as synchronized without downloading blocks
  • Accessible via Settings checkbox
  • Can be toggled on/off at runtime

2. Full Sync

  • Syncs from last sync date to current blockchain height
  • Automatically disables Data Saving Mode when triggered
  • Estimated ~500 MB of data
  • Available in: Wallet → Advanced → Full Sync

3. Sync Dates

  • Sync specific date ranges (e.g., April 1 - April 8)
  • Automatically disables Data Saving Mode when used
  • Available in: Wallet → Advanced → Sync Dates

Technical Implementation

  • Preserves wallet's natural blockchain height (no permanent modifications)
  • Proper connection status handling to prevent reconnection loops
  • Auto node failover after consecutive connection failures
  • Prevents unnecessary Tor node switching when connection is stable
  • Clean implementation following Feather's design patterns

Use Cases

  • Users on metered/limited bandwidth connections
  • Quick wallet access without waiting for full sync
  • Verify balance without downloading entire blockchain
  • Sync only relevant date ranges when needed

Testing

Tested on Debian 10 with Qt6, multiple node types (clearnet and .onion), and various sync scenarios.

mac and others added 7 commits January 14, 2026 01:12
This implements a comprehensive data saving mode for Feather Wallet to help users
save mobile data and time when they haven't received Monero since last opening.

Features implemented:
- Data Saving Mode toggle in Settings > Transactions
- Skip Sync: Jump to current blockchain height without syncing
- Sync Dates: Sync a specific date range using date pickers
- Full Sync: Perform normal synchronization
- Auto-sync can be disabled when Data Saving Mode is enabled

Technical changes:
- Added Config::dataSavingMode configuration key
- Extended Wallet class with skipSync(), syncFromHeight(), and syncDateRange() methods
- Created SyncDatesDialog for date range selection
- Added Sync Options submenu under Wallet > Advanced menu
- Connected settings signals through WindowManager to MainWindow
- Block height estimation based on Monero's ~2 minute average block time

Benefits:
- Can save 500+ MB of mobile data when skipping sync
- Saves 30+ minutes of waiting time for users in areas with expensive/limited data
- Useful for brick-and-mortar payments and cash-in-person trades
- Maintains full wallet functionality when sync is needed
The issue was that skipSync() was calling startRefresh() which re-enabled
continuous auto-refresh even when Data Saving Mode was on.

Fixes:
- Check Data Saving Mode on wallet open and pause refresh if enabled
- skipSync() now only triggers a single refresh (m_refreshNow) instead of
  enabling continuous refresh via startRefresh()
- Added informative dialog when Data Saving Mode is toggled on
- Improved status messages for better user feedback
- syncFromHeight() and syncDateRange() still use startRefresh() as they
  need continuous sync until caught up

This ensures that when Data Saving Mode is enabled, the wallet stays
paused after using Skip Sync, and only syncs when explicitly requested.
sync without modifying monero code, plus fixed Data Saver Mode toggle in
settings
Improvements:
- Data Saving Mode now properly pauses sync without downloading blocks
- Fixed connection status handling when toggling DS mode on/off
- Removed Skip Sync button (cannot interrupt running Monero refresh)
- Full Sync and Sync Dates auto-disable DS mode before syncing
- Added automatic node switching after 5 consecutive height failures
- Fixed race condition causing 'Connecting' status in DS mode
- Store original wallet creation height for Full Sync feature
- Prevent Tor auto-reconnection when connection is already active
- Clean implementation following original Feather design patterns

Features:
- Data Saving Mode: Prevents automatic blockchain sync to save bandwidth
- Full Sync: Syncs from last sync date to current (approx 500 MB)
- Sync Dates: Sync specific date ranges with DS mode auto-disabled
- Auto node failover for improved reliability
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