Codex Bot b1091a05e4
build / Build Linux (lite) (push) Successful in 2m25s
build / Build Linux (mining) (push) Successful in 2m31s
build / Build Windows (lite) (push) Successful in 19m1s
build / Build Windows (mining) (push) Successful in 19m11s
Confirm xmrig startup before reporting failure
2026-04-20 23:58:46 +02:00
2026-04-18 11:19:08 +02:00
2026-04-06 21:27:40 +02:00
2026-04-18 11:16:33 +02:00

Peya Wallet (Flutter desktop MVP)

Requirements

  • Flutter stable (Linux desktop enabled)
  • monero_c submodule for the Dart package in ./monero_c
  • Runtime binaries can come either from:
    • local monero_c builds, or
    • staged release assets in ./third_party/monero_c and ./external/daemon

Run

flutter pub get
flutter run -d linux

The Flutter tool generates linux/flutter/ephemeral and plugin registrant files during the first build. If your Flutter toolchain prefers a fresh runner scaffold, run: flutter create --platforms=linux .

Wallet backend (FFI)

The app loads a native library at runtime:

  • Default name: libwallet2_api_c.so (also tries libpeya_libwallet2_api_c.so, peya_libwallet2_api_c.so)
  • Search paths (Linux): ./lib, ./third_party/monero_c/linux, monero_c/peya_libwallet2_api_c/build/x86_64-linux-gnu, monero_c/peya_libwallet2_api_c/build, monero_c, native/build, native

Override the path:

PEYA_LIBWALLET=/absolute/path/to/libwallet2_api_c.so flutter run -d linux

Native wrapper (optional)

A C-ABI wrapper stub is provided in native/:

  • native/include/wallet_wrapper.h
  • native/src/wallet_wrapper.c
  • native/CMakeLists.txt

Build it (Linux):

cmake -S native -B native/build
cmake --build native/build

Update wallet_wrapper.c to call the Peya/Monero C/C++ APIs from monero_c and link them in native/CMakeLists.txt.

CI runtime staging

The wallet build workflow now stages runtime dependencies from releases:

  • tiamak/monero_c release assets for libwallet2_api_c
  • tiamak/Peya release assets for peyad

The staging script writes them to:

  • third_party/monero_c/linux or third_party/monero_c/windows
  • external/daemon

Tray + background sync

  • Enable Minimize to tray in Settings.
  • Closing the window hides the app instead of quitting.
  • Tray menu: Show/Hide, Sync now, Quit.

Notes:

  • Some Linux window managers may not allow full close interception; in that case the app may quit on close.

Auto-sync

Configure in Settings:

  • Auto sync toggle
  • Interval: 30s / 1m / 5m / 15m

Sync runs in background and skips overlapping ticks.

Config storage

User data is stored under the application support directory, with separate subdirectories for config and wallets:

  • config/config.json
  • wallets/

Example on Linux:

  • ~/.local/share/peyawallet/config/config.json
  • ~/.local/share/peyawallet/wallets/

Example on Windows:

  • %APPDATA%\peyawallet\config\config.json
  • %APPDATA%\peyawallet\wallets\

Local node blockchain data is intentionally left in Peya's native daemon directory so CLI and GUI can share the same chainstate:

  • Linux: ~/.peya/
  • Windows: %APPDATA%\peya\ (or C:\ProgramData\peya\ when the daemon runs elevated/as a service)

Optional explorer integration:

  • set PEYA_EXPLORER_TX_URL to a tx URL template, for example https://example.invalid/tx/{txid}
  • when unset, clicking a txid copies it instead of opening an external explorer

Translations (i18n)

ARB files:

  • lib/l10n/app_en.arb
  • lib/l10n/app_pl.arb

Add a new language by creating another ARB and rebuilding.

FFI bindings (ffigen)

Bindings are seeded in lib/native/wallet_wrapper_bindings.dart. To regenerate from native/include/wallet_wrapper.h:

dart run ffigen
S
Description
No description provided
Readme 1.5 MiB
Languages
Dart 94.4%
CMake 2.6%
C++ 2.1%
C 0.9%