Logic:
- Add 'Skip to Tip', 'Date Range', and 'Full Sync' engine to libwalletqt
- Implement 'Scan Transaction' functionality for specific TXIDs
UI:
- Add context menu actions to bottom bar for selective sync
- Display block-depth count in status bar, courtesy of @masflam
bounty claimed here (as "mr_overquald")
https://bounties.monero.social/posts/79/1-230m-add-a-skip-sync-feature-to-a-monero-wallet
bigger scan Tx window
fix transaction diaglogue sizing
tidy estimatedBytes
use simple QDialog for transaction Scan window
rename to syncPause
properly dispose of QThreadStorage disposal
$ ./build/bin/feather --version
FeatherWallet 2.8.1-79-g16eec531
QThreadStorage: entry 2 destroyed before end of thread 0x562e3e2b3b90
QThreadStorage: entry 1 destroyed before end of thread 0x562e3e2b3b90
improvements in status bar
better sync status
trying to get status always updated
put into helper method
refactor bool importTransaction()
fix p1: full sync bug & mutex
fix file close cache bug
more lint fixes; start blocks instead of time
simplify status bar to block count, not download size/time
fix sync 1000 block even when paused bug
hide all widgets on minimize; respect log level
show "[PAUSED] x Blocks to go" on Connecting Status, too
Fetch initial heights so UI can update even if paused
info log: m_walletImpl->refresh() with walletHeight
fix: calc daemon height if 0 to show wallet depth
update icon for paused state
muzzle WebSocket when in pause mode
track and emit network/pause status
log block/daemon/wallet updates for ref
QPointer<QAction> m_updateNetworkInfoAction;
no background sync when paused; allow autoReconnect() on non-onion nodes
abstract out blocksBehind() method
show m_lastSyncStatusUpdate in label and debug log
disable Network Update Info when node disconnected
place disconnectCurrentNode outside connectToNode
parse cmdline args BEFORE initing UI libs
only disconnect WebSocket on pause when also selected
disconnect node when user explicitly requests
parse args start index=1, not 0 (skip script/exec name)
fix bug in m_updateNetworkInfoAction
disable context menu conditioanlly; conceal sus $0.00 bal
rename to FeatherWallet
better balance (based on wallet status and sync pause status)
fix translucent mis-match
make old policy conditional on configuration
fix: m_updateNetworkInfoAction was active when sync Disabled
show full amount when zero in balance label
fix annoying WebSocket close warning:
WindowManager: cleanup thread done 0x7cca7efdbec0
~Application
~WebsocketNotifier 0x7cca7efdbec0
QObject::startTimer: Timers can only be used with threads started with QThread
handle Calc page logic better now with new flags
add dedicated SyncRangeDialog
better reconnect logic/less network & log spam
track time since: last sync and last fiat update
tooltip simplifications/methods
some more simplifications to status/label/fiat updates
move sync interval to node page; add more config keys
status/balance and HW backed wallet fixes
fix autoConnect() spam/fail bug
update last refresh/sync pause logic status
oblivionsage [Thu, 13 Nov 2025 00:52:38 +0000 (01:52 +0100)]
fix: prevent integer underflow in amount() bounds check
The bounds check 'index > arr.size() - 1' has an edge case bug.
When arr.size() is 0, subtracting 1 from an unsigned size_t
underflows to SIZE_MAX, so 'index > SIZE_MAX' is always false.
This could theoretically allow out-of-bounds access, though it's
pretty hard to trigger in practice - would need a malformed/corrupted
unsigned_tx file that parses successfully but has no transactions.
Changed to 'arr.empty() || index >= arr.size()' which handles
the edge case properly.
наб [Tue, 17 Jun 2025 16:22:32 +0000 (18:22 +0200)]
Don't pretend to fall off the end of Nodes::useSocks5Proxy()
[334/404] Building CXX object src/CMakeFiles/feather.dir/utils/nodes.cpp.o
/home/nabijaczleweli/uwu/feather/src/utils/nodes.cpp:503:1: warning: non-void function does not return a value in all control paths [-Wreturn-type]
503 | }
| ^
1 warning generated.