Giter Club home page Giter Club logo

envoy's Introduction

Envoy

Envoy is a companion app for the Passport hardware wallet. To learn more visit foundation.xyz/envoy

Building

To build Envoy you will need:

After you've set up the two dependencies building is easy. For an Android build download NDK 24.0.8215888 and run:

ANDROID_SDK_ROOT=~/Android/Sdk ./build_ffi_android.sh
flutter build apk

For iOS:

brew install automake libtool
./build_ffi_ios.sh
flutter build ipa

Docker

If you so prefer it is also possible to build Envoy for Android within a Docker container. Using just run:

just docker-build-android

the .apk and .aab files will be in the releases folder.

There are many other useful recipes in the justfile. If you are running an X11 based Linux distro you can even run Envoy on your desktop:

just docker-run

Contributing

Contributors are more than welcome. Feel free to submit a PR or an issue on this very repo.

envoy's People

Contributors

dariyoo99 avatar dependabot[bot] avatar foundationken avatar icota avatar invertedx avatar jacksper13 avatar mixslav avatar sethforprivacy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

envoy's Issues

Denomination error on send screen

Platform:

  • iOS
  • Android

App Version:

  • Envoy Version: 1.40

Issue Description:

Current Behavior:
Show details on send screen shows sats denomination even if amount expressed in BTC

Expected Behavior:
BTC ₿ to be shown when selected

Steps to Reproduce:

  1. Accounts, Settings, Ensure "View amount in Sats" is unselected
  2. Send transaction, select address, amount and confirm
  3. Click "show details" next to amount to send
  4. See that BTC amount is expressed in sats

Screenshots/Screen Recordings:

trim.9D4AA0D3-BA65-41EA-B245-47E170CD8AF7.MOV

Logs:

Not provided

Additional Information:

N/A

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Related Issues:

None

Security Tab Issues

logs 2.txt

Platform:

  • iOS

App Version:

The app version can be found under the Settings>About menu.

  • Envoy Version: [e.g., 1.4.0]

Device Details:

iOS:

  • Device: [iPhone 15 Pro Max]
  • iOS Version: [e.g., iOS 17.1.1]

Issue Description:

Current Behavior:
Screen turns grey and becomes inoperable when switching from personal node to Foundation node.(security tab)

Expected Behavior:
Should be able to navigate options without having to restart app

Steps to Reproduce:

Screenshots/Screen Recordings:

[If applicable, add screenshots or screen recordings to help explain the issue.]

Logs:

[

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Related Issues:

[If you found any similar or related issues, provide links to them here.]https://github.com/Foundation-Devices/envoy/assets/117760614/54cf3fda-468f-4c96-8ac8-154a9fa92d6d

Reproducible Builds

What mobile OS are you using?

Android

Please provide details on the device you experienced the bug on

Hi, i'm Keraliss from walletscrutiny, i tried to build your app from the dockerfile provided in the repository, but it resulted in this error -

BUILD FAILED in 26m 49s
Running Gradle task 'assembleRelease'...                         1609.5s
Gradle task assembleRelease failed with exit code 1
+ '[' '!' -f /tmp/test_com.foundationdevices.envoy/build/app/outputs/flutter-apk/app-release.apk ']'
+ echo 'Error: APK file not found at /tmp/test_com.foundationdevices.envoy/build/app/outputs/flutter-apk/app-release.apk'
Error: APK file not found at /tmp/test_com.foundationdevices.envoy/build/app/outputs/flutter-apk/app-release.apk

Description

As the build from provided dockerfile failed, we created our own dockerfile based on the one provided. This is the dockerfile

# Use Ubuntu 22.04 as the base image
FROM ubuntu:22.04

# Set environment variables
ENV TZ=America/New_York
ENV ANDROID_SDK_ROOT=/root/Android/sdk
ENV PATH="$PATH:/root/Android/sdk/platform-tools:/root/Android/sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin:/root/flutter/bin:/root/.cargo/bin"
ENV DEBIAN_FRONTEND=noninteractive

# Install necessary packages
RUN apt-get update && apt-get upgrade -y && \
    apt-get install -y --no-install-recommends \
    postgresql curl build-essential libssl-dev pkg-config libpq-dev git unzip xz-utils zip \
    libglu1-mesa openjdk-8-jdk openjdk-17-jdk wget python2 autoconf clang cmake ninja-build \
    libgtk-3-0 libgtk-3-dev v4l2loopback-dkms v4l2loopback-utils libzbar-dev libzbar0 \
    libzbargtk-dev libjsoncpp-dev libsecret-1-dev libsecret-1-0 ffmpeg xvfb xdotool x11-utils \
    libstdc++-12-dev llvm-14 libsdl2-dev libclang1-14 libtool sudo libusb-1.0-0-dev \
    python3-virtualenv xorg xdg-user-dirs xterm tesseract-ocr ca-certificates openssl && \
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Update SSL certificates
RUN update-ca-certificates

# Install Android SDK Command-line Tools
RUN update-java-alternatives --set /usr/lib/jvm/java-1.8.0-openjdk-amd64 && \
    mkdir -p /root/Android/sdk /root/.android && \
    touch /root/.android/repositories.cfg && \
    wget -O sdk-tools.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip && \
    unzip sdk-tools.zip -d /root/Android/sdk && rm sdk-tools.zip

# Install required Android components
RUN yes | /root/Android/sdk/tools/bin/sdkmanager --licenses && \
    /root/Android/sdk/tools/bin/sdkmanager "build-tools;30.0.3" "platforms;android-30" \
    "platform-tools" "cmdline-tools;latest" "ndk;25.2.9519653"

# Install Flutter SDK
RUN git clone https://github.com/flutter/flutter.git /root/flutter && \
    flutter channel stable && \
    flutter upgrade && \
    flutter config --enable-linux-desktop && \
    flutter precache && \
    flutter doctor

# Configure Cargo to use git-fetch-with-cli and add crates.io mirror
RUN mkdir -p /root/.cargo && \
    echo '[net]' > /root/.cargo/config.toml && \
    echo 'git-fetch-with-cli = true' >> /root/.cargo/config.toml && \
    echo '[source.crates-io]' >> /root/.cargo/config.toml && \
    echo 'replace-with = "tuna"' >> /root/.cargo/config.toml && \
    echo '[source.tuna]' >> /root/.cargo/config.toml && \
    echo 'registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"' >> /root/.cargo/config.toml

# Install Rust
RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.69.0 -y && \
    rustup target add aarch64-linux-android

# Clone the repository and set working directory
RUN git clone https://github.com/Foundation-Devices/envoy.git /root/repo
WORKDIR /root/repo

# Copy the build script
COPY build_ffi_android.sh /root/repo/
RUN chmod +x /root/repo/build_ffi_android.sh

# Create a new script to run the build and keep the container running
RUN echo '#!/bin/bash' > /root/build_and_keep_running.sh && \
    echo 'cd /root/repo' >> /root/build_and_keep_running.sh && \
    echo 'pkill -f cargo' >> /root/build_and_keep_running.sh && \
    echo 'rm -f /root/.cargo/.package-cache' >> /root/build_and_keep_running.sh && \
    echo './build_ffi_android.sh || {' >> /root/build_and_keep_running.sh && \
    echo '    echo "Build failed, attempting to clean and rebuild..."' >> /root/build_and_keep_running.sh && \
    echo '    cargo clean' >> /root/build_and_keep_running.sh && \
    echo '    cargo build --target=aarch64-linux-android' >> /root/build_and_keep_running.sh && \
    echo '    cargo build --target=aarch64-linux-android --release' >> /root/build_and_keep_running.sh && \
    echo '    flutter pub get' >> /root/build_and_keep_running.sh && \
    echo '    flutter build apk --release' >> /root/build_and_keep_running.sh && \
    echo '}' >> /root/build_and_keep_running.sh && \
    echo 'echo "Build process completed. Checking for APK..."' >> /root/build_and_keep_running.sh && \
    echo 'find /root/repo -name "*.apk"' >> /root/build_and_keep_running.sh && \
    echo 'echo "Versions of tools:"' >> /root/build_and_keep_running.sh && \
    echo 'cargo --version' >> /root/build_and_keep_running.sh && \
    echo 'rustc --version' >> /root/build_and_keep_running.sh && \
    echo 'flutter --version' >> /root/build_and_keep_running.sh && \
    echo 'tail -f /dev/null' >> /root/build_and_keep_running.sh && \
    chmod +x /root/build_and_keep_running.sh

# Set the new script as the CMD
CMD ["/root/build_and_keep_running.sh"]

And this is the com.foundationdevices.envoy.build_ffi_android.sh file

#!/bin/bash
set -e

# Function to log messages
log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
}

# Build Rust libraries
log_message "Starting Rust build for aarch64-linux-android"
cargo +1.69.0 build --target=aarch64-linux-android
cargo +1.69.0 build --target=aarch64-linux-android --release

# Get Flutter dependencies
log_message "Getting Flutter dependencies"
flutter pub get

# Build the APK
log_message "Building APK"
flutter build apk --release

# Check if APK was built successfully
APK_PATH="/root/repo/build/app/outputs/flutter-apk/app-release.apk"
if [ -f "$APK_PATH" ]; then
    log_message "Build completed successfully. APK is at $APK_PATH"
else
    log_message "ERROR: APK not found at $APK_PATH"
    exit 1
fi

# Print versions for debugging
log_message "Tool versions:"
cargo --version
rustc --version
flutter --version

Please provide the steps that you've used to reproduce the issue

Docker Build and Run Commands:

docker build -t envoy_wallet -f envoy.dockerfile .

the build was successful

Successfully built 67097ce5b7b9
Successfully tagged envoy_wallet:latest

Then we tried to run the container

docker run -d --name envoy_build_container_new envoy_wallet

And got this

Error building OpenSSL:
   Command: cd "/root/repo/target/aarch64-linux-android/release/build/openssl-sys-9f47e4e5d09d2dda/out/openssl-build/build/src" && MAKEFLAGS="-j --jobserver-fds=6,7 --jobserver-auth=6,7" "make" "build_libs"
   Exit status: exit status: 2


   , /root/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/openssl-src-300.2.1+3.2.0/src/lib.rs:611:9
   note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
   Resolving dependencies... (23.0s)
   Note: intl is pinned to version 0.19.0 by flutter_localizations from the flutter SDK.
   See https://dart.dev/go/sdk-version-pinning for details.


   Because envoy depends on flutter_localizations from sdk which depends on intl 0.19.0, intl 0.19.0 is required.
   So, because envoy depends on intl ^0.18.0, version solving failed.
   Resolving dependencies... (4.8s)
   Note: intl is pinned to version 0.19.0 by flutter_localizations from the flutter SDK.
   See https://dart.dev/go/sdk-version-pinning for details.


   Because envoy depends on flutter_localizations from sdk which depends on intl 0.19.0, intl 0.19.0 is required.
   So, because envoy depends on intl ^0.18.0, version solving failed.
   Build process completed. Checking for APK...
   Versions of tools:
   cargo 1.69.0 (6e9a83356 2023-04-12)
   rustc 1.69.0 (84c898d65 2023-04-16)
   Flutter 3.24.0 • channel stable • https://github.com/flutter/flutter.git
   Framework • revision 80c2e84975 (8 days ago) • 2024-07-30 23:06:49 +0700
   Engine • revision b8800d88be
   Tools • Dart 3.5.0 • DevTools 2.37.2

If applicable, add screenshots or screen recordings to help explain the issue.

No response

If applicable, add logs to help us diagnose the issue.

No response

Anything else?

Issues Encountered:

  1. OpenSSL Build Failure:
    The build process for OpenSSL failed with the following error:

    Error building OpenSSL:
    Command: cd "/root/repo/target/aarch64-linux-android/release/build/openssl-sys-9f47e4e5d09d2dda/out/openssl-build/build/src" && MAKEFLAGS="-j --jobserver-fds=6,7 --jobserver-auth=6,7" "make" "build_libs"
    Exit status: exit status: 2
    

    This indicates potential issues with missing tools or incorrect configuration for building OpenSSL.

  2. Flutter Dependency Conflict:
    There is a version conflict with the intl package. The project specifies intl ^0.18.0, but the Flutter SDK requires intl 0.19.0 due to dependencies like flutter_localizations. This conflict prevents the successful build of the APK. The specific error encountered was:

    Error resolving dependencies:
    Because envoy depends on flutter_localizations from sdk which depends on intl 0.19.0, intl 0.19.0 is required.
    So, because envoy depends on intl ^0.18.0, version solving failed.
    

    Attempts to resolve this by updating the intl version in the pubspec.yaml file led to further issues:

    Error: Version solving failed because every version of webfeed from git depends on intl ^0.18.0 and envoy depends on intl ^0.19.0.
    

Can anyone suggest on how to fix this?

Impact of the issue

None

If you found any similar or related issues, provide links to them here.

n/a

Add to F-Droid Repository

Describe the new feature or improvement you would like to see in the Envoy mobile app.

Are there any plans to add this project to the F-Droid repo? Such a move would serve many purposes:

  1. Make your software more easily accessible and updated by those who don't use Play Services - including those who don't trust it for critical/sensitive software.
  2. Open up the app to better review and scrutiny from new sections of the open source community. Sunlight is the best disinfectant!
  3. Further enhance the trust you've built over the years.
  4. Invite new contributors to your project.

As I understand it, their team is even able to help you get your project featured on their ecosystem: https://gitlab.com/fdroid/rfp

Explain the specific use case or scenario where this feature would be valuable to users.

No response

Ideas for implementation

No response

Screenshots/Design

No response

Additional Context

No response

Can't Connect to Fulcrum Server on LAN when "Improved Privacy" is Enabled

Platform:

  • iOS
  • Android

App Version:

  • Envoy Version: 1.4.0

Device Details:

iOS:

  • Device: iPhone SE 2022
  • iOS Version: iOS 17.1.2

Issue Description:

Current Behavior:
When you enable "Improved Privacy" under the "Privacy" tab you are no longer able to connect to personal Fulcrum servers using LAN addresses.

Expected Behavior:
Connecting to a personal Fulcrum server over LAN should still work. Choosing "Improved Privacy" doesn't imply that your connection to your Fulcrum server must use an onion address

Steps to Reproduce:

  1. Host a Fulcrum server on your LAN
  2. Open Envoy
  3. Click "Privacy"
  4. Under "Privacy Mode" select "Improved Privacy"
  5. Under "Node" select "Personal Node"
  6. Enter tcp://$YOUR_IP_ADDRESS:50001
  7. Notice how an error is presented

Screenshots/Screen Recordings:

Screenshot 2023-12-21 at 17 09 20
Screenshot 2023-12-21 at 17 09 36

Logs:

The logs didn't show any errors

Additional Information:

I didn't test on Android. The screenshots show I have my VPN connected but I tested it without the VPN connected and it didn't fix the problem

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Intro video delayed playback

The intro video that talks about how magic backup works has a delay in the beginning. It's hard to describe but it seems as though the audio comes on in the middle of the narrator's sentence. As if the first word or syllable is cut off.

Lock image uses incorrect aspect ratio on iPhone SE 2022

Platform:

  • iOS
  • Android

App Version:

  • Envoy Version: 1.4.0

Device Details:

iOS:

  • Device: iPhone SE 2022
  • iOS Version: iOS 17.1.2

Issue Description:

Current Behavior:
When "Unlock with biometrics or PIN" is enabled under "Privacy", opening the app will show a fullscreen logo with white bars on both sides when using an iPhone SE 2022 which uses a different aspect ratio than the image being displayed.

Expected Behavior:
The fullscreen logo should fill the screen, no white bars should be visible.

Steps to Reproduce:

  1. Open Envoy on an iPhone SE 2022
  2. Click the "Privacy" tab at the bottom of the app
  3. Enable "Unlock with biometrics or PIN"
  4. Close the app
  5. Open the app but don't enter the PIN or tap the fingerprint sensor
  6. Notice how the fullscreen logo is displaying white bars on boths sides of the phone

Screenshots/Screen Recordings:

Screenshot 2023-12-21 at 17 16 15

Additional Information

I didn't test this on Android.

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Activity Screen

Platform:

  • [ x] iOS
  • Android

App Version:

The app version can be found under the Settings>About menu.

  • Envoy Version: [1.4.0]

Device Details:

iOS:

  • Device: [iphone 15 Max Pro]
  • iOS Version: [iOS 17.1.1]

Issue Description:

Current Behavior:
[Activity screen is blank. Only shows one transaction]

Expected Behavior:
[see a history of all activitiesimage]

Steps to Reproduce:

  1. [First Step]
  2. [Second Step]
  3. [Third Step]
  4. [Additional Steps, if necessary]

Screenshots/Screen Recordings:

[If applicable, add screenshots or screen recordings to help explain the issue.]

Logs:

[If applicable, add logs to help us diagnose the issue.]

To share your logs, head to Settings > Advanced > View Envoy Logs. From here you can save the logs as a file and add to the issue.

Additional Information:

[Add any other relevant information here, such as if Tor was in use, network conditions, etc.]

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Related Issues:

[If you found any similar or related issues, provide links to them here.]

Completed TXs show as pending in wallet tab but completed in activity tab (persists for days)

What mobile OS are you using?

iOS

Please provide details on the device you experienced the bug on

iOS XR version
17.4.1

Description

When I've got an outgoing tx, it will say "in progress" on the account tab even though in activity tab it shows it's been sent 3-11 days ago. Mempool.space will of course confirm what activity tab says, that it's sent.

Please provide the steps that you've used to reproduce the issue

  1. Send a tx
  2. Obsessively refresh (BTW we should be able to manually refresh rather than wait 60 sec upon opening wallet for auto-refresh)
  3. repeat 2
  4. Go to mempool.space, find out it's sent
  5. Go to wallet and verify that it says pending
  6. Go to activity tab, says pending
  7. Go to activity tab a bit later, says sent, but in wallet still says pending.

If applicable, add screenshots or screen recordings to help explain the issue.

IMAGE 2024-05-02 14:22:57
In the above image, it clearly shows that the tx is considered pending in spite of having 200+ confirmations

IMAGE 2024-05-02 14:23:44
In activity it will say sent though.

All of these screenshots were Apr 26 around 1PM, logs show a problem syncing.

If applicable, add logs to help us diagnose the issue.

logs.txt


Time : 2024-04-26T13:19:02.796331
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:19:02.793134
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:19:02.770908
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:47.778078
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:47.766972
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:47.764152
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:32.807269
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:32.792889
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:32.789577
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:17.775153
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:17.767169
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:17.764411
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:10.597619
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:10.590791
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:10.570617
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:09.532537
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:09.507527
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:18:09.500913
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:17.805111
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:17.787505
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:17.778746
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:02.793067
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:02.776787
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:17:02.770445
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:47.794229
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:47.777509
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:47.769317
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:32.794185
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None


Time : 2024-04-26T13:16:32.777638
Category : wallet
Message : Couldn't sync: Exception: Couldn't sync
Library : None
Exception : None
Stack Trace : None

Anything else?

Using VPN always, never TOR, never my own node but Foundations.
In China

Impact of the issue

{"label"=>"Medium: Moderate issue affecting usability."}

If you found any similar or related issues, provide links to them here.

NA

Bounce animation + manual refresh

Describe the new feature or improvement you would like to see in the Envoy mobile app.

So currently when I open a wallet in Envoy, if I swipe down to force a refresh, nothing happens.
I'd like for when I swipe down, a kind of bouncing animation plays that visually indicates a refresh has been initiated. This would then refresh price and state of current txs, check mempool etc.

Explain the specific use case or scenario where this feature would be valuable to users.

For example, let's say a user notices that the price of Bitcoin has appreciated SIGNIFICANTLY since they last opened envoy. And they have a rough idea of what the fiat was last time they were in the app. They then open the app simply to see what is the current fiat value (one could argue that bitcoiners should NOT do this, but that's beside the point, maybe they're trying to make a large purchase of something priced in fiat and need to know if they can afford it yet) but when they open the app, it seems suspiciously like the old value. So they think, no sweat, I'll force a refresh... But no animation, nothing happens. They then leave their phone open for 60-120 seconds until envoy automatically decides to ping the relevant APIs and determines what the fiat value of your sats are.
Now that UX of leaving your phone unlocked and open while envoy figures out your balance passively is not great IMO.

A second thing that has been a negative UX has been Envoy not really being fast about finding incoming txs in the mempool and telling me about them, or when I'm sending txs, letting me know when it's been confirmed in a timely manner. Being able to quickly swipe down or press a little circular arrow (refresh icon) at will would help with this too.

Ideas for implementation

No additional ideas other than what's above.

Screenshots/Design

Sorry, none.

Additional Context

NA

Can't Connect to Fulcrum Server using TLS

Platform:

  • iOS
  • Android

App Version:

  • Envoy Version: 1.4.0

Device Details:

iOS:

  • Device: iPhone SE 2022
  • iOS Version: iOS 17.1.2

Issue Description:

Current Behavior:
When trying to connect to a personal Fulcrum server using a LAN address it seems I'm unable to connect to my node using TLS, however plain TCP works fine. My Fulcrum server is using a self-signed certificate which could be the likely culprit

Expected Behavior:
Connecting to a personal Fulcrum server using TLS should work. If the server uses a self-signed certificate an option should be provided to allow it.

Steps to Reproduce:

  1. Host a Fulcrum server on your LAN
  2. Open Envoy
  3. Click "Privacy"
  4. Under "Node", set the drop down to "Personal Node"
  5. Enter ssl://$YOUR_LAN_IP:50002
  6. Notice how an error is presented

Screenshots/Screen Recordings:

Screenshot 2023-12-21 at 17 10 09
Screenshot 2023-12-21 at 17 09 36

Logs:

The logs didn't show any errors

Additional Information:

I didn't test Android. The app was set to "Better Performance". The server is confirmed working over Wi-Fi with Sparrow, Blue Wallet, Nunchuk and other wallets. Only Envoy can't connect via TLS. I did have my VPN turned on in the screenshots but I tested with it turned off and it makes no difference.

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Related Issues:

Send Payjoin

I want to buy more Passport devices with my Passport on the Foundation BTCPay store using payjoin from Envoy.

Based on a similar PR in DIBA, a wasm wallet, this should be around a 250 line change using the payjoin crate including tests.

I guess this change may also require additional bip21 parsing with dart, though the payjoin crate includes it.

Swipe not intuitive

Platform:

iOS

App Version:

Envoy Version: 1.4.0

Device Details:

iOS:

  • Device: iPhone XR
  • iOS Version: iOS 17.1.1

Issue Description:

Current Behavior:
When I'm in the ACCOUNTS menu I can swipe left and right to hide or unhide the balance. Works perfectly. But if I click into the account suddenly it's really buggy. Basically the hit box where you can swipe is only on the bottom left. It took me a while to figure this out. I thought maybe I just wasn't able to toggle the view once inside the account. But I could every now and then. Eventually I just realized that the dimensions for the area for swiping was really tiny.

Expected Behavior:
I expected to be able to hide and unhide the balance before or after clicking to open an account. Specifically when I open the account.

Steps to Reproduce:

  1. Go to accounts
  2. Click on an account
  3. Attempt to hide and unhide balance using top right or middle. (hint. It doesn't work)
  4. Now try to hide and unhide balance from bottom left section. (hint. It works)

Screenshots/Screen Recordings:

Uploading FILE 2023-11-27 20:52:24.mp4…

Logs:

logs.txt

Additional Information:

Using VPN, no TOR, not connected to my own node.

Impact:

Low: Minor issue with minimal impact on usability.

BRL fiat conversion

Description:

Add BRL fiat conversion.

Use Case:

Add BRL fiat conversion.

Implementation Ideas:

Add BRL fiat conversion.

Screenshots/Designs:

Additional Context:

Personal Node Connection Status doesn't Update when Changing Privacy Mode

What mobile OS are you using?

Android

Please provide details on the device you experienced the bug on

Android:

  • Device: Google Pixel 8
  • Version: 14

Description

Current Behaviour:
If you change the "Privacy mode" option from "Better Performance" to "Improve Privacy" and you set a personal node, if that personal node is unable to connect you'll see an error message stating "Couldn't reach node." If you then switch back to "Better Performance" the message doesn't change. You have to modify the personal node address to get the app to retry the connection and report success

Expected Behaviour:
When changing "Privacy Mode" the app should retry the connection to your currently selected node and update any connection/error strings

Please provide the steps that you've used to reproduce the issue

  1. Install the app
  2. Finish the onboarding flow
  3. Tap the "Privacy" tab
  4. Set "Privacy mode" to "Better Performance"
  5. Change the "Node" setting to "Improved Privacy"
  6. Enter the address of an electrum node on clearnet
  7. Wait until you get a failure message stating "Couldn't reach node"
  8. Tap "Better Performance"
  9. Notice how the error message is still visible and nothing changes
  10. Modify the node field to an incorrect value and then a correct value
  11. Notice how the error message disappears and is replaced by a successful connection message

If applicable, add screenshots or screen recordings to help explain the issue.

No response

If applicable, add logs to help us diagnose the issue.

No response

Anything else?

I just wanted to log this in case you thought it was a UX issue you wanted to know about and fix.

Impact of the issue

{"label"=>"Low: Minor issue with minimal impact on usability."}

If you found any similar or related issues, provide links to them here.

N/A

Doesn't load in

What mobile OS are you using?

iOS

Please provide details on the device you experienced the bug on

XR

Description

Opening the app (1.6) it won't move past the loading menu with the Envoy logo. I usually have it set to use my face to open it, but this doesn't initiate. Even with face unlock disabled, it still won't open.

Please provide the steps that you've used to reproduce the issue

  1. Phone has face unlock enabled.

  2. Update to 1.6

  3. Open envoy.

  4. Opens to Envoy logo and hangs

  5. Go to previous stable build

  6. Disable face unlock

  7. update to 1.6

  8. Open envoy.

  9. Opens to Envoy logo and hangs

If applicable, add screenshots or screen recordings to help explain the issue.

No response

If applicable, add logs to help us diagnose the issue.

NA

Anything else?

No TOR, no private node

Impact of the issue

{"label"=>"High: Major issue severely impacting usability or app stability."}

If you found any similar or related issues, provide links to them here.

NA

Detail window not showing up for last UTXO (first two worked fine) when filters applied

Platform:

  • [Y] iOS

App Version:

The app version can be found under the Settings>About menu.

  • Envoy Version: [1.4.0]

Device Details:

iOS:

  • Device: [iPhone XR]
  • iOS Version: [iOS 17.1.1]

Issue Description:

Current Behavior:
[When I click on the UTXO to add a note, the screen goes grey. This only happens if I've applied filters (specifically, only received and oldest first) in the activity tab (not the tag tab). Then I toggle to tag tab and try to open the last UTXO and it's greyed out (the other UTXOs showed the details.]

Expected Behavior:
[It should show the details such as tx id, address etc.]

Steps to Reproduce:

  1. [Go to wallet in envoy. balance visible or not.]
  2. [Then put a filter on activity. Received + oldest]
  3. [Toggle to tag menu]
  4. [open list of "coins", aka utxos and go to last one and click on it.]
  5. [Should be greyed out]

Screenshots/Screen Recordings:

https://github.com/Foundation-Devices/envoy/assets/133897608/cf4f8833-8478-4547-bc07-228e28668780
photo_2023-11-22 22 49 12
photo_2023-11-22 22 49 07

Logs:

logs.txt

Additional Information:

No Tor, clearnet + VPN

Impact:

  • [Y] Low: Minor issue with minimal impact on usability.

Related Issues:

[NA]

Issue with Privacy Settings Text Not Updating Correctly in Envoy 1.6.0 Spanish Version

What mobile OS are you using?

Android

Please provide details on the device you experienced the bug on

Android: Device Pixel 8 (Android version: 14) Firmware: GrapheneOS

Description

In version 1.6.0 of Envoy, I encountered an issue on the initial screen when selecting the option to configure Passport. Upon progressing to the next screen, which presents the welcome message and the choice between configuring Passport or Envoy wallet, choosing to configure Passport leads to another screen (as demonstrated in the video) where there's an option to select your privacy type (with or without Tor). When using the app in Spanish, and attempting to choose between the two privacy options, the description for the better privacy option (Tor ON) does not update correctly.

Despite selecting the better privacy option, the text remains unchanged (although the color of the word 'disabled' does change) and incorrectly suggests that "Envoy's connection will be more stable with Tor disabled, recommended for new users" for both options. This is misleading, as selecting better performance does correctly indicate Tor is disabled by default (which is correct), but selecting better privacy should update the text to reflect "activated" instead of "disabled", and the description should state that the connection will be LESS stable, in addition to indicating Tor is ACTIVATED instead of disabled.

Steps to reproduce the issue:

1. Set your device language to Spanish.
2. Download Envoy version 1.6.0 (or earlier).
3. On the startup screen, select (Configure Passport).
4. Choose privacy and observe how the text does not change when selecting better performance or better privacy.

Please provide the steps that you've used to reproduce the issue

1. Set your device language to Spanish.
2. Download Envoy version 1.6.0 (or earlier).
3. On the startup screen, select (Configure Passport).
4. Choose privacy and observe how the text does not change when selecting better performance or better privacy.

If applicable, add screenshots or screen recordings to help explain the issue.

video_2024-02-24_13-15-53.mp4

photo_2024-02-24_13-18-36
photo_2024-02-24_13-18-32

If applicable, add logs to help us diagnose the issue.

No response

Anything else?

No response

Impact of the issue

{"label"=>"Low: Minor issue with minimal impact on usability."}

If you found any similar or related issues, provide links to them here.

Failure to build app (APK/AAB) from source

What mobile OS are you using?

Android

Please provide details on the device you experienced the bug on

No response

Description

I am trying to build the app from source as part of walletscrutiny.com's reproducibility tests. I checked out the latest release tag (v1.6.2) and tried out all the different approached outlined in the README, but failed to compile the code.

BUILDING MANUALLY

  1. I already had Flutter and Rust installed on my system.

Flutter version:

$ flutter --version
Flutter 3.22.0 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 5dcb86f68f (5 weeks ago) • 2024-05-09 07:39:20 -0500
Engine • revision f6344b75dc
Tools • Dart 3.4.0 • DevTools 2.34.3

Rust version:

$ rustc --version
rustc 1.69.0 (84c898d65 2023-04-16)
  1. Ran the three command listed on the README:
$ ANDROID_SDK_ROOT=~/Android/Sdk

$ ./build_ffi_android.sh
info: syncing channel updates for '1.69.0-x86_64-unknown-linux-gnu'

  1.69.0-x86_64-unknown-linux-gnu unchanged - rustc 1.69.0 (84c898d65 2023-04-16)

info: checking for self-update
info: component 'rust-std' for target 'aarch64-linux-android' is up to date
    Finished dev [unoptimized + debuginfo] target(s) in 0.17s
    Finished release [optimized + debuginfo] target(s) in 0.18s

$ flutter build apk
Resolving dependencies... (7.7s)
Note: intl is pinned to version 0.19.0 by flutter_localizations from the flutter SDK.
See https://dart.dev/go/sdk-version-pinning for details.

Because envoy depends on flutter_localizations from sdk which depends on intl 0.19.0, intl 0.19.0 is required.
So, because envoy depends on intl ^0.18.0, version solving failed.

As you can see this approach fails because of some version mismatch.

BUILDING USING DOCKER AND JUST

It fails because of some permission related issues with the steps in the Dockerfile

$ just docker-build-android;
docker build -t envoy .
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
STEP 1/24: FROM ubuntu:22.04
STEP 2/24: MAINTAINER Igor Cota <[email protected]>
--> Using cache dde49f7e7557ff4f1a4aeaf24b55535231f613bf0610c313619a0250f204e7c8
--> dde49f7e755
STEP 3/24: WORKDIR /root
--> Using cache 9380d410c5bc857facfb1c812b6dbaa91d54f10f2c5131668ae846a60c985dab
--> 9380d410c5b
STEP 4/24: ENV TZ=America/New_York
--> Using cache 46062c1a5d10e8f4ea9ee1b96280a70633937d481f603255bd8936f43c4872de
--> 46062c1a5d1
STEP 5/24: ARG DEBIAN_FRONTEND=noninteractive
--> Using cache 85957e39db9df2487d454108006fec955bf6d0914579d6bb34f0984292d99a2c
--> 85957e39db9
STEP 6/24: RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends     postgresql     curl     build-essential     libssl-dev     pkg-config     libpq-dev     git     unzip     xz-utils     zip     libglu1-mesa     openjdk-8-jdk     openjdk-11-jdk     wget     python2     autoconf     clang     cmake     ninja-build     libgtk-3-0     libgtk-3-dev     v4l2loopback-dkms     v4l2loopback-utils     libzbar-dev     libzbar0     libzbargtk-dev     libjsoncpp-dev     libsecret-1-dev     libsecret-1-0     ffmpeg     xvfb     xdotool     x11-utils     libstdc++-12-dev     llvm-14     libsdl2-dev     libclang1-14     libtool     sudo     libusb-1.0-0-dev     python3-virtualenv     xorg     xdg-user-dirs     xterm tesseract-ocr     && apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
--> Using cache f39ee781d8c95bde240c1ee792454316c6037532bcff2c29d7c56416e2307f1f
--> f39ee781d8c
STEP 7/24: RUN update-java-alternatives --set /usr/lib/jvm/java-1.8.0-openjdk-amd64
--> Using cache d65f198697b9f74ede82ec82fc8274f9622db4993313251e6da3533a8aa98e96
--> d65f198697b
STEP 8/24: RUN mkdir -p Android/sdk
--> Using cache 3d1fa9c6b01b6e0535b9675783b21fd5924578a189ff1ed5ff06f6083ceb238f
--> 3d1fa9c6b01
STEP 9/24: ENV ANDROID_SDK_ROOT /root/Android/sdk
--> Using cache 55e9940d9c44b85348cef3d5388b01f917bf1a565e1af3a314e9f8fd2868b801
--> 55e9940d9c4
STEP 10/24: RUN mkdir -p .android && touch .android/repositories.cfg && wget -O sdk-tools.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip && unzip sdk-tools.zip && rm sdk-tools.zip
--> Using cache 0d7bf8adf48f284a2334bd0a0921c4fe9b593fa754b9d8b8c5720527cbcbb8ac
--> 0d7bf8adf48
STEP 11/24: RUN mv tools Android/sdk/tools
--> Using cache e1b5e35eef6495bd954c87ef38fb4f576162e92273fd0b24916118149998930d
--> e1b5e35eef6
STEP 12/24: RUN cd Android/sdk/tools/bin && yes | ./sdkmanager --licenses && ./sdkmanager "build-tools;30.0.2" "platform-tools" "cmdline-tools;latest" "ndk;24.0.8215888"
--> Using cache 66b06c2408b742d8505c6858e9c0f7d09b19a4cd88705222e54815090db91905
--> 66b06c2408b
STEP 13/24: ENV PATH "$PATH:/root/Android/sdk/platform-tools"
--> Using cache e2b94bad574a6ccf9d35ec17f95b89c8a920f59e726a15acc5efb1dbd6e69deb
--> e2b94bad574
STEP 14/24: RUN update-java-alternatives --set /usr/lib/jvm/java-1.11.0-openjdk-amd64
--> Using cache ac6ec070c33560e03f0ad21de937c13adf8f584d3ecc0af52394224e0ca4788f
--> ac6ec070c33
STEP 15/24: RUN git clone https://github.com/flutter/flutter.git
--> Using cache 3aa2a838b1310eba91b320acf32e8bd220df8e977e24ec4eb58af7eaf92f5c20
--> 3aa2a838b13
STEP 16/24: ENV PATH "$PATH:/root/flutter/bin"
--> Using cache daa1d5d750dde3c3512dfa172a2011fe46280c507cf099bf465c7db44e89cc80
--> daa1d5d750d
STEP 17/24: RUN flutter channel stable && cd flutter && git checkout 3.16.3 && flutter config --enable-linux-desktop
   Woah! You appear to be trying to run flutter as root.
   We strongly recommend running the flutter tool without superuser privileges.
  /
📎
Downloading Linux x64 Dart SDK from Flutter engine 1cdbebee19012cee6cfaf67a434e3a6fcbc4682b...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  202M  100  202M    0     0  14.5M      0  0:00:13  0:00:13 --:--:-- 16.9M
Building flutter tool...
Resolving dependencies...
Downloading packages...
Got dependencies.
Downloading Material fonts...                                      358ms
Downloading Gradle Wrapper...                                       16ms
/usr/bin/tar: gradle/wrapper/gradle-wrapper.properties: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradle/wrapper/gradle-wrapper.jar: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradle/wrapper: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradle: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradlew: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradlew.bat: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: NOTICE: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: Exiting with failure status due to previous errors
Downloading Gradle Wrapper...                                       15ms
/usr/bin/tar: gradle/wrapper/gradle-wrapper.properties: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradle/wrapper/gradle-wrapper.jar: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradle/wrapper: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradle: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradlew: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: gradlew.bat: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: NOTICE: Cannot change ownership to uid 397546, gid 5000: Invalid argument
/usr/bin/tar: Exiting with failure status due to previous errors
Flutter could not download and/or extract https://storage.googleapis.com/flutter_infra_release/gradle-wrapper/fd5c1f2c013565a3bea56ada6df9d2b8e96d56aa/gradle-wrapper.tgz. Ensure you have network connectivity and all of the required dependencies listed at flutter.dev/setup.
The original exception was: ProcessException: The command failed with exit code 2
  Command: tar -xzf /root/flutter/bin/cache/downloads/storage.googleapis.com/flutter_infra_release/gradle-wrapper/fd5c1f2c013565a3bea56ada6df9d2b8e96d56aa/gradle-wrapper.tgz -C /root/flutter/bin/cache/artifacts/gradle_wrapper.
Error: error building at STEP "RUN flutter channel stable && cd flutter && git checkout 3.16.3 && flutter config --enable-linux-desktop": error while running runtime: exit status 1
error: Recipe `docker-build` failed on line 9 with exit code 125

MY OWN APPROACH

  1. I modified the Dockerfile to fix some of the file permission related issues
# SPDX-FileCopyrightText: 2022 Foundation Devices Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later

FROM ubuntu:22.04

MAINTAINER Igor Cota <[email protected]>

# Create a non-root user
RUN useradd -m -s /bin/bash flutteruser

WORKDIR /home/flutteruser

ENV TZ=America/New_York
ARG DEBIAN_FRONTEND=noninteractive

# Update all packages on the build host and install only necessary packages for building and clear cache as root
RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
    postgresql \
    curl \
    build-essential \
    libssl-dev \
    pkg-config \
    libpq-dev \
    git \
    unzip \
    xz-utils \
    zip \
    libglu1-mesa \
    openjdk-8-jdk \
    openjdk-11-jdk \
    wget \
    python2 \
    autoconf \
    clang \
    cmake \
    ninja-build \
    libgtk-3-0 \
    libgtk-3-dev \
    v4l2loopback-dkms \
    v4l2loopback-utils \
    libzbar-dev \
    libzbar0 \
    libzbargtk-dev \
    libjsoncpp-dev \
    libsecret-1-dev \
    libsecret-1-0 \
    ffmpeg \
    xvfb \
    xdotool \
    x11-utils \
    libstdc++-12-dev \
    llvm-14 \
    libsdl2-dev \
    libclang1-14 \
    libtool \
    sudo \
    libusb-1.0-0-dev \
    python3-virtualenv \
    xorg \
    xdg-user-dirs \
    xterm tesseract-ocr \
    && apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Install Android SDK as root
RUN update-java-alternatives --set /usr/lib/jvm/java-1.8.0-openjdk-amd64
RUN mkdir -p /home/flutteruser/Android/sdk
ENV ANDROID_SDK_ROOT /home/flutteruser/Android/sdk
RUN mkdir -p /home/flutteruser/.android && touch /home/flutteruser/.android/repositories.cfg && wget -O /home/flutteruser/sdk-tools.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip && unzip /home/flutteruser/sdk-tools.zip -d /home/flutteruser && rm /home/flutteruser/sdk-tools.zip
RUN mv /home/flutteruser/tools /home/flutteruser/Android/sdk/tools
RUN cd /home/flutteruser/Android/sdk/tools/bin && yes | ./sdkmanager --licenses && ./sdkmanager "build-tools;30.0.2" "platform-tools" "cmdline-tools;latest" "ndk;24.0.8215888"
ENV PATH "$PATH:/home/flutteruser/Android/sdk/platform-tools"

# Set ownership of the SDK to the non-root user
RUN chown -R flutteruser:flutteruser /home/flutteruser/Android
RUN update-java-alternatives --set /usr/lib/jvm/java-1.11.0-openjdk-amd64

# Create the pub-cache directory and set permissions
RUN mkdir -p /pub-cache && chown -R flutteruser:flutteruser /pub-cache

# Switch to non-root user
USER flutteruser

# Install Flutter SDK as non-root user
RUN git clone https://github.com/flutter/flutter.git
ENV PATH "$PATH:/home/flutteruser/flutter/bin"
RUN flutter channel stable && cd flutter && git checkout 3.16.3 && flutter config --enable-linux-desktop

# Install Rust
RUN curl https://sh.rustup.rs -sSf | \
    sh -s -- --default-toolchain stable -y

ENV PATH=/home/flutteruser/.cargo/bin:$PATH

# Keep Dart cache directory outside of home
ENV PUB_CACHE=/pub-cache

# Copy our files
COPY --chown=flutteruser:flutteruser . .

# Build
ENV ANDROID_SDK_ROOT=/home/flutteruser/Android/sdk
ENV CARGO_BUILD_JOBS=4
RUN chmod +x build_ffi_android.sh && ./build_ffi_android.sh
  1. . I ran just docker-build-android. It failed at the last step (executing build_ffi_android.sh), with this error:
STEP 28/28: RUN chmod +x build_ffi_android.sh && ./build_ffi_android.sh
--> Using cache 5f1e8ab5b1c59814f55e60faeaa65661b073ffa9ba315fa46ccaceda4e9bdbc9
COMMIT envoy
--> 5f1e8ab5b1c
Successfully tagged localhost/envoy:latest
5f1e8ab5b1c59814f55e60faeaa65661b073ffa9ba315fa46ccaceda4e9bdbc9
mkdir -p release && docker run --mount type=bind,source="$(pwd)"/release,target=/release -t envoy /bin/bash -c "flutter build apk --release -P nosign && flutter build appbundle --release -P nosign && cp /root/build/app/outputs/flutter-apk/app-release.apk /release && cp /root/build/app/outputs/bundle/release/app-release.aab /release"
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Downloading package sky_engine...                                  622ms
Downloading flutter_patched_sdk tools...                           497ms
Downloading flutter_patched_sdk_product tools...                   675ms
Downloading linux-x64 tools...                                      3.9s
Downloading linux-x64/font-subset tools...                         302ms
Downloading android-arm-profile/linux-x64 tools...                 522ms
Downloading android-arm-release/linux-x64 tools...                 520ms
Downloading android-arm64-profile/linux-x64 tools...               578ms
Downloading android-arm64-release/linux-x64 tools...               524ms
Downloading android-x64-profile/linux-x64 tools...                 539ms
Downloading android-x64-release/linux-x64 tools...                 508ms
Resolving dependencies... (30.0s)
  _fe_analyzer_shared 64.0.0 (70.0.0 available)
  analyzer 6.2.0 (6.5.2 available)
  animations 2.0.10 (2.0.11 available)
  archive 3.4.9 (3.6.1 available)
  args 2.4.2 (2.5.0 available)
  build_daemon 4.0.1 (4.0.2 available)
  build_resolvers 2.4.1 (2.4.2 available)
  build_runner 2.4.7 (2.4.11 available)
  build_runner_core 7.2.11 (7.3.1 available)
  built_value 8.8.1 (8.9.2 available)
  cbor 4.1.0 (6.2.0 available)
  cli_util 0.4.0 (0.4.1 available)
  code_builder 4.8.0 (4.10.0 available)
  coverage 1.6.4 (1.8.0 available)
  cross_file 0.3.3+8 (0.3.4+1 available)
  csslib 0.17.3 (1.0.0 available)
  cupertino_icons 1.0.6 (1.0.8 available)
  custom_lint 0.5.7 (0.6.4 available)
  custom_lint_builder 0.5.7 (0.6.4 available)
  custom_lint_core 0.5.7 (0.6.3 available)
  dart_style 2.3.4 (2.3.6 available)
  dots_indicator 2.1.2 (3.0.0 available)
  ffi 2.1.0 (2.1.2 available)
  file 6.1.4 (7.0.0 available)
  file_picker 5.5.0 (8.0.4 available)
  file_saver 0.1.1 (0.2.13 available)
  flutter_plugin_android_lifecycle 2.0.17 (2.0.20 available)
  flutter_riverpod 2.4.9 (2.5.1 available)
  flutter_secure_storage 5.1.2 (9.2.2 available)
  flutter_secure_storage_linux 1.2.0 (1.2.1 available)
  flutter_secure_storage_macos 1.1.2 (3.1.2 available)
  flutter_secure_storage_platform_interface 1.0.2 (1.1.2 available)
  flutter_secure_storage_web 1.1.2 (1.2.1 available)
  flutter_secure_storage_windows 1.1.3 (3.1.2 available)
  flutter_svg 1.1.6 (2.0.10+1 available)
  freezed 2.4.5 (2.5.3 available)
  frontend_server_client 3.2.0 (4.0.0 available)
  go_router 10.2.0 (14.1.4 available)
  google_fonts 6.1.0 (6.2.1 available)
  hotreloader 4.1.0 (4.2.0 available)
  http 1.1.2 (1.2.1 available)
  intl 0.18.1 (0.19.0 available)
  intl_utils 2.8.6 (2.8.7 available)
  js 0.6.7 (0.7.1 available)
  json_annotation 4.8.1 (4.9.0 available)
  json_serializable 6.7.1 (6.8.0 available)
  local_auth 2.1.7 (2.2.0 available)
  local_auth_android 1.0.36 (1.0.39 available)
  local_auth_ios 1.1.5 (1.1.7 available)
  local_auth_platform_interface 1.0.8 (1.0.10 available)
  matcher 0.12.16 (0.12.16+1 available)
  material_color_utilities 0.5.0 (0.12.0 available)
  meta 1.10.0 (1.15.0 available)
  mime 1.0.4 (1.0.5 available)
  mockito 5.4.3 (5.4.4 available)
  package_info_plus 4.2.0 (8.0.0 available)
  package_info_plus_platform_interface 2.0.1 (3.0.0 available)
  path 1.8.3 (1.9.0 available)
  path_provider 2.1.1 (2.1.3 available)
  path_provider_android 2.2.1 (2.2.5 available)
  path_provider_foundation 2.3.1 (2.4.0 available)
  path_provider_platform_interface 2.1.1 (2.1.2 available)
  permission_handler 9.2.0 (11.3.1 available)
  permission_handler_android 9.0.2+1 (12.0.6 available)
  permission_handler_apple 9.1.4 (9.4.5 available)
  permission_handler_platform_interface 3.12.0 (4.2.1 available)
  permission_handler_windows 0.1.3 (0.2.1 available)
  platform 3.1.2 (3.1.5 available)
  plugin_platform_interface 2.1.7 (2.1.8 available)
  pointycastle 3.7.3 (3.9.1 available)
  process 4.2.4 (5.0.2 available)
  pubspec_parse 1.2.3 (1.3.0 available)
  rive 0.11.17 (0.13.7 available)
  rive_common 0.2.7 (0.4.9 available)
  riverpod 2.4.9 (2.5.1 available)
  riverpod_analyzer_utils 0.5.0 (0.5.3 available)
  riverpod_lint 2.3.7 (2.3.12 available)
  screenshot 2.1.0 (3.0.0 available)
  sembast 3.5.0+1 (3.7.1+2 available)
  share_plus 7.2.1 (9.0.0 available)
  share_plus_platform_interface 3.3.1 (4.0.0 available)
  shared_preferences 2.2.2 (2.2.3 available)
  shared_preferences_android 2.2.1 (2.2.3 available)
  shared_preferences_foundation 2.3.4 (2.4.0 available)
  shared_preferences_platform_interface 2.3.1 (2.3.2 available)
  shared_preferences_web 2.2.2 (2.3.0 available)
  shelf_web_socket 1.0.4 (2.0.0 available)
  source_gen 1.4.0 (1.5.0 available)
  synchronized 3.1.0 (3.1.0+1 available)
  test 1.24.9 (1.25.7 available)
  test_api 0.6.1 (0.7.2 available)
  test_core 0.5.9 (0.6.4 available)
  timeago 3.6.0 (3.6.1 available)
  url_launcher 6.2.2 (6.3.0 available)
  url_launcher_android 6.2.0 (6.3.3 available)
  url_launcher_ios 6.2.1 (6.3.0 available)
  url_launcher_macos 3.1.0 (3.2.0 available)
  url_launcher_platform_interface 2.2.0 (2.3.2 available)
  url_launcher_web 2.2.2 (2.3.1 available)
  url_launcher_windows 3.1.0 (3.1.1 available)
  uuid 3.0.7 (4.4.0 available)
  vm_service 11.10.0 (14.2.3 available)
  wakelock_plus 1.1.4 (1.2.5 available)
  wakelock_plus_platform_interface 1.1.0 (1.2.1 available)
! watcher 1.1.0 (overridden)
  web 0.3.0 (0.5.1 available)
  web_socket_channel 2.4.0 (3.0.0 available)
  webdriver 3.0.2 (3.0.3 available)
  win32 5.1.1 (5.5.1 available)
  xdg_directories 1.0.3 (1.0.4 available)
Got dependencies!
109 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.

Warning: Failed to download any source lists!
Warning: IO exception while downloading manifest:
java.nio.file.NoSuchFileException: /home/flutteruser/.android/cache/sdkbin-1_b7518f9e-repository2-3_xml
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
	at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
	at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:478)
	at java.base/java.nio.file.Files.newOutputStream(Files.java:220)
	at com.android.sdklib.repository.legacy.FileOp.newFileOutputStream(FileOp.java:150)
	at com.android.sdklib.repository.legacy.FileOp.newFileOutputStream(FileOp.java:132)
	at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.downloadAndCache(DownloadCache.java:651)
	at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.openCachedUrl(DownloadCache.java:545)
	at com.android.sdklib.repository.legacy.LegacyDownloader.downloadAndStream(LegacyDownloader.java:82)
	at com.android.repository.impl.downloader.LocalFileAwareDownloader.downloadAndStream(LocalFileAwareDownloader.java:51)
	at com.android.repository.impl.manager.RemoteRepoLoaderImpl.lambda$fetchPackages$0(RemoteRepoLoaderImpl.java:138)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Warning: IO exception while downloading manifest:
java.nio.file.NoSuchFileException: /home/flutteruser/.android/cache/sdkbin-1_b743781d-repository2-2_xml
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
	at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
	at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:478)
	at java.base/java.nio.file.Files.newOutputStream(Files.java:220)
	at com.android.sdklib.repository.legacy.FileOp.newFileOutputStream(FileOp.java:150)
	at com.android.sdklib.repository.legacy.FileOp.newFileOutputStream(FileOp.java:132)
	at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.downloadAndCache(DownloadCache.java:651)
	at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.openCachedUrl(DownloadCache.java:545)
	at com.android.sdklib.repository.legacy.LegacyDownloader.downloadAndStream(LegacyDownloader.java:82)
	at com.android.repository.impl.downloader.LocalFileAwareDownloader.downloadAndStream(LocalFileAwareDownloader.java:51)
	at com.android.repository.impl.manager.RemoteRepoLoaderImpl.lambda$fetchPackages$0(RemoteRepoLoaderImpl.java:138)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Warning: Still waiting for package manifests to be fetched remotely.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':rive_common'.
> NDK not configured. Download it with SDK manager. Preferred NDK version is '23.1.7779620'. 

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3m 24s
Running Gradle task 'assembleRelease'...                          205.0s
Gradle task assembleRelease failed with exit code 1
error: Recipe `docker-build-android` failed on line 17 with exit code 1

Please provide the steps that you've used to reproduce the issue

No response

If applicable, add screenshots or screen recordings to help explain the issue.

No response

If applicable, add logs to help us diagnose the issue.

No response

Anything else?

No response

Impact of the issue

None

If you found any similar or related issues, provide links to them here.

Duplicate rows in Activity screen when redeeming Azteco voucher

Platform:

  • iOS
  • Android

App Version:

The app version can be found under the Settings>About menu.

  • Envoy Version: [e.g., 1.4.0]

1.4.0 beta

iOS:

  • Device: [iPhone 15 Pro]
  • iOS Version: [iOS 17.1.2]

Issue Description:

Current Behavior:
Duplicate entries showing up for an Azteco redemption.

Expected Behavior:
Should only show the 1 row for the unconfirmed transaction after redemption.

Steps to Reproduce:

  1. Redeem Azteco voucher on latest 1.4.0 beta
  2. Should see it in the Activity screen (as in the screenshot provided)

Screenshots/Screen Recordings:

image

Logs:

Additional Information:

Using my own node, Fulcrum v1.8.1 via Ronindojo local IP

Impact:

  • Low: Minor issue with minimal impact on usability.
  • Medium: Moderate issue affecting usability.
  • High: Major issue severely impacting usability or app stability.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.