Commit Graph
1111 Commits
Author SHA1 Message Date
jwinterm 27f694c4bd mining tab: fix top text layout — anchor conflict on sync value, oversized fonts, bezel overflow
- Sync Progress value had both left and horizontalCenter anchors (drifted center)
- 20pt labels in 30px rows collided; now 14pt matching the top-left monitors
- hashrate/uptime/height values auto-fit their pixel-art frames (HorizontalFit)
- 'uptime' -> 'Uptime'
2026-08-29 13:43:05 -04:00
jwinterm a3509a6c3b Detect stuck outgoing transactions and re-relay after daemon restart
Field report: a send sat 'in mempool' for two days while the network had
never seen it (Tor down at send time defeats both the multi-broadcast and
the embedded daemon's exclusive --tx-proxy relay), locking the change.

Three additive changes, all strictly local (no txid is ever queried
against an external service):

- onMultiBroadcast now counts relay responses; if no node accepted the
  broadcast within 45s the user is told immediately and offered the
  existing rebroadcast path, instead of silence.
- A periodic local history scan warns once per outgoing tx that has been
  pending for more than 25 minutes, again offering rebroadcast (which
  already reconnects to a fresh node first).
- On DaemonManager::synced, still-pending outgoing txs are re-announced
  from the wallet's own tx cache; a restarted embedded node's pool has
  forgotten them.
2026-08-29 06:13:06 -04:00
jwinterm 93d13a6568 v5.0.3: harden embedded-node restart handling + version bump
On top of Lucas's #119 (--db-sync-mode safe):
- DaemonManager: age out the crash-retry budget (m_restarts) so legit node
  toggles/restarts don't trip "maximum retries exceeded" after ~4 spawns over a
  session; the cap now only bites a genuine rapid crash-loop.
- DaemonManager: clear the m_stopping latch on start(), so the crash auto-restart
  keeps working after the node has been toggled off then on (it was a one-shot
  before).
- bump version 5.0.2 -> 5.0.3.
2026-06-27 13:10:54 -04:00
Lucas 64326119eb Updated DaemonManager to ensure new blocks are
committed immediately by disabling LMDB batch write mode.
2026-06-26 21:57:42 +10:00
jwinterm e3ba9c7bad v5.0.2: hide hardware-restore option + version bump
- wizard: hide the hardware-device wallet option (wownero has no Ledger/Trezor
  support; inherited Feather cruft).
- bump version 5.0.1 -> 5.0.2.

v5.0.2 also rebuilds the Linux AppImage in an ubuntu:24.04 container (glibc 2.39)
so it runs on Ubuntu 24.04 / Mint / Debian — v5.0.1's AppImage was built on
glibc 2.43 and would not start elsewhere. No wallet-code change: wallets created
on pre-table-fix builds carry a stale restore height (blank balance); the fix is
to re-restore from seed.
2026-06-25 09:19:19 -04:00
jwinterm 6cd7e8bad9 fix: regenerate stale restore-height table (fixes vanishing balance)
restore_heights_wownero_mainnet.txt was last updated 2023-12-15 (h587048).
For wallets created after that, RestoreHeightLookup::dateToHeight extrapolates
forward at 288 blk/day; 2.5y past the last anchor overshoots the chain tip, so
the computed restore height lands ABOVE the current height. The wallet then
skips output-scan on every real block => received funds are never recorded,
while the tx pool still shows them: coins appear pending, then vanish.

Same bug class as 8686e9bf (which fixed the block-time CONSTANT from monero's
120s/720-per-day to wownero's 300s/288); here the constant was right but the
TABLE went stale. Regenerated with contrib/generate-restore-heights/heights.py
to h849000 (2026-06-19). Verified dateToHeight < tip for all dates 2019..today.
2026-06-23 21:25:18 -04:00
jwinterm 0d5d745311 v5.0.1: Windows QtQuick crash fix + node/Tor lifecycle overhaul
Windows crash chain (exposed by the embedded-node default):
- main.cpp: force the QtQuick software renderer. The Mining tab's QQuickWidget
  drove the default RHI/GL path and faulted (0xc0000005) on broken-GL hosts
  (VirtualBox VMSVGA), crashing the app and orphaning the embedded node.
  Real hardware was unaffected.
- ChildProcessGuard + DaemonManager/TorManager: kernel-level die-with-parent
  (Windows Job Object KILL_ON_JOB_CLOSE / Linux PR_SET_PDEATHSIG) so the
  embedded wownerod and bundled tor never survive a wowlet exit or crash.
- DaemonManager: verify-before-adopt via get_info (nettype/height) instead of
  trusting a bare open RPC port, so a stale/orphan node is never adopted.

Node/Tor lifecycle + remote-node connectivity:
- config: torPrivacyLevel default -> allTorExceptNode. NEVER sync blocks over
  Tor; the wallet's node connection is always clearnet. Tor is only for tx
  broadcast, so remote nodes work with or without Tor.
- nodes: add Nodes::reconnect() (clear failure blocklist + force reconnect);
  node/Tor toggle handlers use it so a transient outage no longer strands the
  wallet at "Disconnected".
- MainWindow/SettingsDialog: reconnect on node/Tor toggle and on the async
  daemonStateChanged (closes the start() race; a freshly-toggled local node
  connects immediately).
- TorManager: reset retry/unpack state in init() so a system<->bundled Tor
  re-toggle can start again; quiesce on stop(). Linux unpackBins() rework
  (mkpath + presence-based unpack + graceful return-false), getVersion() arg
  fix, and a missing-binary start guard.
- build.yml: derive TOR_VERSION from the embedded tor binary (a hardcoded
  bundle number made unpackBins rewrite Tor every launch).
- depends/funcs.mk: confine cross-cmake find_package to the depends sysroot so
  host -dev libraries don't leak into the build.
2026-06-23 17:45:39 -04:00
jwinterm c87d807443 cmake: don't link ICU/iconv on cross-builds (vestigial without system boost)
feather.exe links ${ICU_LIBRARIES}, set by the monero submodule's static-build branch assuming depends ships ICU + libiconv. Feather's depends doesn't, and its depends boost is --without-icu, so nothing references ICU/iconv symbols — the mingw link failed on missing -licu*/-liconv. Clear ICU_LIBRARIES when CMAKE_CROSSCOMPILING; native (system boost, built with ICU) unchanged.
2026-06-20 22:20:35 -04:00
jwinterm 3d1424869d wowlet: clearer Tor status for external Tor + lift mining stats into the dark bar
- TorInfoDialog: when wowlet reuses an already-running external/system Tor (isLocalTor), show 'Connected (using external Tor)' instead of the misleading 'Not running'.

- mining.qml: raise + tighten the Block Height / Sync Progress block so it sits in the dark header bar instead of clipping the scene art (first pass, may need a small tweak).
2026-06-20 12:09:43 -04:00
jwinterm 83a4582266 wowlet: fix tx-proxy port, add configurable node data-dir, mining sync hint
- DaemonManager --tx-proxy now uses the Tor that is actually running (torManager()->isLocalTor()) instead of the stored useLocalTor preference, which selected the wrong SOCKS port (managed 19450 vs system 9050) and silently stalled outbound tx broadcasts.

- Embedded node: nodeDataDir setting points wownerod at an existing chain (e.g. ~/.wownero) to skip a full re-sync; empty keeps the managed isolated default.

- mining.qml: tell the user mining waits until the node is synced.
2026-06-20 08:58:47 -04:00
jwinterm 35af2db2ef wowlet: keep wownero clearnet nodes usable in Tor mode (fix empty remote-node list)
feather's websocket-node filter drops every non-onion node once the Tor privacy
level flips to onion-preferred (after initial sync) — it assumes an onion node
ecosystem. wownero's public nodes are clearnet, so the Settings list went empty
and autoConnect had nothing eligible -> Disconnected. Keep clearnet nodes
eligible in every proxy mode (routed over Tor's SOCKS proxy when Tor is on, so
still private); only hide onion/i2p nodes when their anonymity mode isn't active.
2026-06-20 06:05:47 -04:00
jwinterm ea22d5dbe4 wowlet: pull the live remote-node list from wownero.org/nodes
The feather websocket is disabled (no WOW backend); replace it with a Tor-routed
HTTP poll of https://wownero.org/nodes/api/nodes/wallet (the live, health-checked
node-map feed). Builds the managed node list from the feed's plain-http nodes
(skips SSL-only nodes feather can't reach), falls back to the bundled nodes.json
if the feed is unreachable, refreshes hourly. So users who don't run a local node
get a fresh, working remote-node list instead of a stale hardcoded one.
2026-06-19 22:02:53 -04:00
jwinterm 4d5805a75c wowlet: fix remote-node connect when the built-in node is off. (1) nodes.cpp loadConfig: when the websocket discovery is disabled, ignore the cached ws node list (stale / polluted with monero nodes from an early build) and use the bundled wownero list. (2) nodes.json: managed clearnet list -> the 4 current healthy wownero nodes (node2/node3.monerodevs.org, spippolatori.it, wownerod.foolsump.com) 2026-06-19 16:39:59 -04:00
jwinterm 3eab1e14fa wowlet: first-run 'be your own node' welcome + deferred startup + non-blocking node toggle. On first launch a welcome dialog lets the user choose own-node vs remote BEFORE any node starts (gated on firstRun; later launches use the saved choice); node start moved past it in WindowManager. Settings toggle now stops wownerod non-blocking (no UI freeze while it flushes LMDB). Copy: 'many recommended', no em-dash 2026-06-19 16:02:17 -04:00
jwinterm 487875ee9e wowlet: local/remote node toggle in Settings -> Network. Checkbox 'Run your own Wownero node (much recommended)' + doge-y copy on privacy/network-health; toggling live-starts/stops the embedded wownerod and reconnects (autoConnect honours runLocalNode: local when on, chosen remote when off); remote list greys out while the built-in node is active 2026-06-19 14:53:42 -04:00
jwinterm 527bcfae57 wowlet: wownero loose-string sweep + P0 send fix. Bump monero submodule -> gui@1ed9d64c (drops feather's monero-checkpoint check_rct_distribution() that made every send throw 'Output distribution size too small'). feather-src: local-node probe + wizard port 18081->34568 (Utils.cpp getDefaultRpcPort, PageNetwork.ui); confirmationsRequired + lock display 10->4 = wownero spendable age (TransactionRow, TxInfoDialog, BalanceDialog, SendWidget); amount precision 12->11 (config, SettingsDialog); tx-pool backlog x2->x5 (5-min blocks); revuo + CCS off default plugins 2026-06-19 14:10:58 -04:00
jwinterm 8686e9bfe8 fix: vanishing balance — RestoreHeightLookup used monero block time (120s/720-per-day) to extrapolate the date->height table past 2023, computing restore heights ~400k blocks INTO THE FUTURE for 2026 wallets. Restore height > chain tip => wallet skips output-scan on every real block => received funds never recorded (pool scan unaffected, hence pool-shows-then-vanishes). Use wownero 300s/288-per-day. Also: block explorers -> explore.wownero.com / explore.wowne.ro 2026-06-19 10:08:46 -04:00
jwinterm 35628cc5d8 wowlet: mining tab uptime — anchor start-time on mining transition, emit HH:MM:SS via uptimeChanged (was never emitted → stuck at '-') 2026-06-19 08:30:28 -04:00
jwinterm 0544837cff fix: white mining tab — remove vestigial 'import QtQuick.Controls' (eagerly registers Calendar singleton → QtQuick.Templates plugin missing → whole QML fails to load). Also make QML bundling complete: blanket-copy QtQuick/QtQml trees + ldd-resolve plugin .so lib deps into usr/lib, guard against re-adding Controls 2026-06-19 07:41:03 -04:00
jwinterm feeafbfdce wowlet: broadcast txs over Tor via wownerod --tx-proxy (gated on HAS_TOR_BIN; Config::broadcastOverTor default on) — hides tx origin IP, complements embedded-node receive privacy; activates when Tor is bundled (depends build) 2026-06-18 20:34:14 -04:00
jwinterm bf2d4e39bf wowlet: fix white mining tab — AppImage now bundles QtQuick QML modules (apt qml6-module-*, QML_SOURCES_PATHS for linuxdeploy-plugin-qt) + tls backend for HTTPS prices; QML cleanup (variant→var, child-id ref) 2026-06-18 20:22:01 -04:00
jwinterm 75fba57fc5 wowlet: About dialog — codeberg.org/wownero/wowlet, Telegram (t.me/wownero), Matrix (#wownero-gen:wowne.ro) 2026-06-18 20:00:44 -04:00
jwinterm 1aa34f0d75 wowlet: fix mining-tab white screen (root anchors.fill→size), visible radio selectors (wow.qss :/wow/→:/dark/), wizard+window titles, debrand live strings (tray/tor/webcam), About+website URLs→wownero, config dir →wowlet (also fixes stale Monero wallet dir) 2026-06-18 19:50:55 -04:00
jwinterm 421f57832c wowlet: fix mining-tab QQuickItem connect; wizard overhaul — skip first-run node-picker (embedded node default), disable feather-server websocket 2026-06-18 19:13:18 -04:00
jwinterm 341be7f7e4 fix: mining methods are on WalletManager not Wallet — delegate + setDaemonAddress to embedded node (fixes red builds) 2026-06-18 18:59:27 -04:00
jwinterm e0c06d6526 wowlet: pixel-art mining tab — port mining.qml (Qt6) + 25 assets, MiningWidget/MiningBackend hosting QQuickWidget, wired to embedded-node solo miner (hashrate/sync feedback); adds Qt6 Quick 2026-06-18 18:51:05 -04:00
jwinterm ccd53f59af wowlet: branding sweep — XMR→WOW, title/dir, .ui+wizard text Feather→wowlet/Monero→Wownero, flip+recolor sidebar (M→W, pink/yellow) 2026-06-18 18:27:28 -04:00
jwinterm 640a478b1b wowlet: solo-mining toggle — Wallet startMining/stopMining (RandomWOW via embedded node) + Wallet-menu action 2026-06-18 17:06:06 -04:00
jwinterm 5206dbdf8a ci: package wowlet as a portable Linux AppImage (linuxdeploy + qt; bundles Qt6, node already embedded) 2026-06-18 16:47:37 -04:00
jwinterm 3e9743a9c4 wowlet: embed wownerod (WOWNEROD_DIR, mirrors Feather's Tor embedding) — single self-contained binary; DaemonManager unpacks it 2026-06-18 11:16:13 -04:00
jwinterm d03fe4994d wowlet: wallet connects to the embedded local node by default (Nodes::autoConnect) 2026-06-18 08:28:15 -04:00
jwinterm e9ecb63a9b wowlet: embedded wownerod DaemonManager (modeled on TorManager) — spawn/monitor/graceful-stop, run-own-node default 2026-06-18 08:23:02 -04:00
jwinterm 22553065e3 wowlet: wownero mainnet restore heights (correct wallet restore scan start) 2026-06-18 08:01:59 -04:00
jwinterm c343ffcc55 wowlet: WOW/USD price feed from neroswap (HTTP poll); fix fiat conversion to use WOW not XMR 2026-06-18 07:45:54 -04:00
jwinterm 6df43ad49b wowlet: add wownero (wow.qss) skin, default to it 2026-06-18 07:30:02 -04:00
jwinterm 8f548b0d82 wowlet: app icon (wowlet logo) + wownero default nodes 2026-06-18 07:26:46 -04:00
jwinterm 84d7476d5c wowlet: rebrand identity + wownero coin constants (name=wowlet, 11 decimals, ring 22/mixin 21) 2026-06-18 07:09:38 -04:00
tobtohtandhosiet 9b17ffd1f7 depends: zxing-cpp: update to 3.0.2
Co-authored-by: hosiet <073plan@gmail.com>
2026-04-20 12:23:56 +02:00
tobtoht 49300c08db about: remove twitter 2026-02-05 18:57:26 +01:00
jermanutsandGitHub 1fe85a81f0 Fix: Update ledger links 2026-01-26 14:30:53 +01:00
oblivionsage d248417f2c 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.

Found with AddressSanitizer during fuzzing.
2025-11-13 01:52:38 +01:00
tobtoht fa6d0fc830 update nodes 2025-11-12 15:32:45 +01:00
tobtoht 4ad4709fb5 Revert "plugins: remove Crowdfunding and Bounties"
partial revert, keep CCS for now
2025-11-12 15:25:16 +01:00
tobtoht f5c920b3dd cmake: fix macos build 2025-11-11 15:13:19 +01:00
tobtoht a7f2ea5efb config: cleanup 2025-08-11 15:03:32 +02:00
tobtoht 5b36d44ed2 plugins: remove Crowdfunding and Bounties 2025-08-11 14:26:22 +02:00
tobtoht 5f239d80b4 main: remove donations 2025-08-03 19:27:12 +02:00
наб 010bf8e23b 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.
2025-06-17 18:39:50 +02:00
tobtohtandGitHub 1436461d0e Merge pull request #257 from HardenedSteel/patch-1
nodes.json: Add nodes from stormycloud
2025-06-17 12:11:53 +00:00
HardenedSteel 227fcf725a nodes.json: Add nodes from stormycloud 2025-05-18 01:02:24 +03:00