Skip to content

Commit

Permalink
v1.17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mytonwalletorg committed Dec 21, 2023
1 parent 49b8cd3 commit adde2ee
Show file tree
Hide file tree
Showing 651 changed files with 49,784 additions and 5,794 deletions.
7 changes: 5 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
NODE_ENV=development

TONHTTPAPI_MAINNET_URL=https://tonhttpapi.mytonwallet.org/jsonRPC
TONHTTPAPI_MAINNET_URL=https://tonhttpapi.mytonwallet.org/api/v2/jsonRPC
TONHTTPAPI_MAINNET_API_KEY=
TONHTTPAPI_TESTNET_URL=https://tonhttpapi-testnet.mytonwallet.org/jsonRPC
TONHTTPAPI_TESTNET_URL=https://tonhttpapi-testnet.mytonwallet.org/api/v2/jsonRPC
TONHTTPAPI_TESTNET_API_KEY=
TONINDEXER_MAINNET_URL=https://tonhttpapi.mytonwallet.org/api/v3
TONINDEXER_TESTNET_URL=https://tonhttpapi-testnet.mytonwallet.org/api/v3
TONAPIIO_MAINNET_URL=https://tonapiio.mytonwallet.org
TONAPIIO_TESTNET_URL=https://tonapiio-testnet.mytonwallet.org
PROXY_HOSTS="tonproxy.io:38080 tonproxy.io:38081 tonproxy.io:38082"
BRILLIANT_API_BASE_URL=
STAKING_POOLS=
CSP_CONNECT_SRC_EXTRA_URL=
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
dev
public
mobile

src/lib/big.js/
src/lib/rlottie/rlottie-wasm.js
src/lib/aes-js/index.js
src/lib/noble-ed25519/index.js
src/lib/dexie/
jest.config.js
playwright.config.ts
postcss.config.js
Expand All @@ -15,3 +17,4 @@ trash
deploy

dist
dist-electron
1 change: 1 addition & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@
"^react",
"^ton",
"^tonweb(/.*|$)",
"^qr-code-styling(/.*|$)",
"^@?\\w",
"dist(/.*|$)",
"^(\\.+/)+(lib/teact)(/.*|$)",
Expand Down
187 changes: 160 additions & 27 deletions .github/workflows/package-and-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ on:
push:
branches:
- master
- mobile-release

concurrency:
group: ${{ github.ref }}
cancel-in-progress: true

env:
APP_NAME: MyTonWallet
Expand All @@ -22,6 +27,7 @@ jobs:
electron-release:
name: Build, package and publish Electron
runs-on: macos-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down Expand Up @@ -59,6 +65,10 @@ jobs:
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k actions $KEY_CHAIN
security find-identity -v -p codesigning $KEY_CHAIN
- name: Get branch name for current workflow run
id: branch-name
uses: tj-actions/branch-names@v7

- name: Build, package and publish
env:
TONHTTPAPI_MAINNET_URL: ${{ vars.TONHTTPAPI_MAINNET_URL }}
Expand All @@ -74,6 +84,8 @@ jobs:

PUBLISH_REPO: ${{ vars.PUBLISH_REPO }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
BASE_URL: ${{ vars.BASE_URL }}
IS_PREVIEW: ${{ steps.branch-name.outputs.current_branch != 'master' }}
run: |
if [ -z "$PUBLISH_REPO" ]; then
npm run electron:package:staging
Expand Down Expand Up @@ -109,6 +121,7 @@ jobs:
name: Sign and re-publish Windows package
needs: electron-release
runs-on: windows-latest
timeout-minutes: 10
if: vars.PUBLISH_REPO != ''
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
Expand Down Expand Up @@ -200,6 +213,7 @@ jobs:
extensions-package:
name: Build and package extensions
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down Expand Up @@ -257,6 +271,7 @@ jobs:
name: Publish extensions
needs: extensions-package
runs-on: ubuntu-latest
timeout-minutes: 5
if: vars.PUBLISH_REPO != ''
steps:
- name: Checkout
Expand Down Expand Up @@ -292,33 +307,33 @@ jobs:
with:
name: ${{ env.FIREFOX_FILE_NAME }}

# - name: Publish to Firefox addons
# env:
# WEB_EXT_API_KEY: ${{ secrets.FIREFOX_API_KEY }}
# WEB_EXT_API_SECRET: ${{ secrets.FIREFOX_API_SECRET }}
# # App env
# TONHTTPAPI_MAINNET_URL: ${{ vars.TONHTTPAPI_MAINNET_URL }}
# TONAPIIO_MAINNET_URL: ${{ vars.TONAPIIO_MAINNET_URL }}
# TONHTTPAPI_TESTNET_URL: ${{ vars.TONHTTPAPI_TESTNET_URL }}
# TONAPIIO_TESTNET_URL: ${{ vars.TONAPIIO_TESTNET_URL }}
# PROXY_HOSTS: ${{ vars.PROXY_HOSTS }}
# STAKING_POOLS: ${{ vars.STAKING_POOLS }}
# if: ${{ env.WEB_EXT_API_KEY != '' }}
# run: |
# npm i jsonwebtoken@9 web-ext-submit@7
# UNZIP_DIR=/tmp/${{ env.APP_NAME }}-firefox
# mkdir $UNZIP_DIR
# unzip ${{ env.FIREFOX_FILE_NAME }} -d $UNZIP_DIR
# web-ext-submit --source-dir=$UNZIP_DIR/dist
# echo "APP_NAME=\"${APP_NAME}\"
# TONHTTPAPI_MAINNET_URL=\"${TONHTTPAPI_MAINNET_URL}\"
# TONHTTPAPI_TESTNET_URL=\"${TONHTTPAPI_TESTNET_URL}\"
# TONAPIIO_MAINNET_URL=\"${TONAPIIO_MAINNET_URL}\"
# TONAPIIO_TESTNET_URL=\"${TONAPIIO_TESTNET_URL}\"
# PROXY_HOSTS=\"${PROXY_HOSTS}\"
# STAKING_POOLS=\"${STAKING_POOLS}\"" >.env
# bash deploy/firefox_pack_sources.sh
# node deploy/firefoxPatchVersion.js
- name: Publish to Firefox addons
env:
WEB_EXT_API_KEY: ${{ secrets.FIREFOX_API_KEY }}
WEB_EXT_API_SECRET: ${{ secrets.FIREFOX_API_SECRET }}
# App env
TONHTTPAPI_MAINNET_URL: ${{ vars.TONHTTPAPI_MAINNET_URL }}
TONAPIIO_MAINNET_URL: ${{ vars.TONAPIIO_MAINNET_URL }}
TONHTTPAPI_TESTNET_URL: ${{ vars.TONHTTPAPI_TESTNET_URL }}
TONAPIIO_TESTNET_URL: ${{ vars.TONAPIIO_TESTNET_URL }}
PROXY_HOSTS: ${{ vars.PROXY_HOSTS }}
STAKING_POOLS: ${{ vars.STAKING_POOLS }}
if: ${{ env.WEB_EXT_API_KEY != '' }}
run: |
npm i jsonwebtoken@9 web-ext-submit@7
UNZIP_DIR=/tmp/${{ env.APP_NAME }}-firefox
mkdir $UNZIP_DIR
unzip ${{ env.FIREFOX_FILE_NAME }} -d $UNZIP_DIR
web-ext-submit --source-dir=$UNZIP_DIR/dist
echo "APP_NAME=\"${APP_NAME}\"
TONHTTPAPI_MAINNET_URL=\"${TONHTTPAPI_MAINNET_URL}\"
TONHTTPAPI_TESTNET_URL=\"${TONHTTPAPI_TESTNET_URL}\"
TONAPIIO_MAINNET_URL=\"${TONAPIIO_MAINNET_URL}\"
TONAPIIO_TESTNET_URL=\"${TONAPIIO_TESTNET_URL}\"
PROXY_HOSTS=\"${PROXY_HOSTS}\"
STAKING_POOLS=\"${STAKING_POOLS}\"" >.env
bash deploy/firefox_pack_sources.sh
node deploy/firefoxPatchVersion.js
calculate-hash:
name: Calculate sha256 hashes
Expand All @@ -343,3 +358,121 @@ jobs:
with:
name: ${{ env.HASH_FILENAME }}
path: ${{ env.HASH_FILENAME }}

mobile-release:
name: Build, package and publish mobile apps
runs-on: macos-latest
timeout-minutes: 30
if: vars.PUBLISH_REPO == '' && github.event_name != 'workflow_dispatch'
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Use Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x

- name: Cache node modules
id: npm-cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-build-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci

- name: Build and sync mobile projects
env:
TONHTTPAPI_MAINNET_URL: ${{ vars.TONHTTPAPI_MAINNET_URL }}
TONAPIIO_MAINNET_URL: ${{ vars.TONAPIIO_MAINNET_URL }}
TONHTTPAPI_TESTNET_URL: ${{ vars.TONHTTPAPI_TESTNET_URL }}
TONAPIIO_TESTNET_URL: ${{ vars.TONAPIIO_TESTNET_URL }}
PROXY_HOSTS: ${{ vars.PROXY_HOSTS }}
STAKING_POOLS: ${{ vars.STAKING_POOLS }}
PUBLISH_REPO: ${{ vars.PUBLISH_REPO }}
run: |
if [ "$GITHUB_REF_NAME" == "mobile-release" ]; then
npm run mobile:build:production
else
npm run mobile:build:staging
fi
- name: Use Ruby and install dependencies
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2
bundler-cache: true
working-directory: mobile

- name: Install the Apple certificate and provisioning profile
env:
IOS_CERTIFICATE_BASE64: ${{ secrets.IOS_CERTIFICATE_BASE64 }}
IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
IOS_PROVISION_PROFILE_BASE64: ${{ secrets.IOS_PROVISION_PROFILE_BASE64 }}
IOS_KEYCHAIN_PASSWORD: ${{ secrets.IOS_KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$IOS_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
echo -n "$IOS_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
# create temporary keychain
security create-keychain -p "$IOS_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$IOS_KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$IOS_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
- name: "iOS: Package and publish"
env:
IOS_AUTH_KEY_BASE64: ${{ secrets.IOS_AUTH_KEY_BASE64 }}
run: |
cd mobile/ios/App
echo -n "$IOS_AUTH_KEY_BASE64" | base64 --decode -o ./AuthKey.p8
if [ "$GITHUB_REF_NAME" == "mobile-release" ]; then
bundle exec fastlane release
else
bundle exec fastlane beta
fi
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle

- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: "Android: Package and publish"
env:
ANDROID_API_KEY_BASE64: ${{ secrets.ANDROID_API_KEY_BASE64 }}
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
run: |
cd mobile/android
echo -n "$ANDROID_API_KEY_BASE64" | base64 --decode -o ./api-key.json
echo -n "$ANDROID_KEYSTORE_BASE64" | base64 --decode -o ./android.keystore
if [ "$GITHUB_REF_NAME" == "mobile-release" ]; then
bundle exec fastlane release
else
bundle exec fastlane beta
fi
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- name: Install
run: npm ci
- name: Build
run: npm run build:production; cp ./public/statoscope-build-statistics.json ./statoscope-reference.json
run: npm run build:production; mv ./public/statoscope-build-statistics.json ./statoscope-reference.json
- uses: actions/upload-artifact@v3
with:
name: statoscope-reference
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/statoscope.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
path: ./
continue-on-error: true
- name: Prepare statoscope input
run: cp public/statoscope-build-statistics.json input.json; mv statoscope-reference.json reference.json
run: mv public/statoscope-build-statistics.json input.json; mv statoscope-reference.json reference.json
- name: Validate
run: npm run statoscope:validate-diff
- name: Query stats
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ trash/
coverage/
src/i18n/en.json
notarization-error.log
.patch-version
4 changes: 3 additions & 1 deletion .stylelintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
"ignoreFiles": [
"dist/*.css",
"src/styles/brilliant-icons.css",
"coverage/**"
"coverage/**",
"dist-electron/*.css",
"mobile/**/public/*.css"
],
"plugins": [
"stylelint-declaration-block-no-ignored-properties",
Expand Down
36 changes: 36 additions & 0 deletions capacitor.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import type { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
appId: 'org.mytonwallet.app',
appName: 'MyTonWallet',
webDir: 'dist',
server: {
androidScheme: 'https',
hostname: 'mytonwallet.local',
},
android: {
path: 'mobile/android',
includePlugins: [
'@capacitor-mlkit/barcode-scanning',
'@capacitor/app',
'@capacitor/dialog',
'@capacitor/haptics',
'@capacitor/status-bar',
'@capgo/capacitor-native-biometric',
'@mauricewegner/capacitor-navigation-bar',
'capacitor-plugin-safe-area',
'native-bottom-sheet',
],
},
ios: {
path: 'mobile/ios',
scheme: 'MyTonWallet',
},
plugins: {
SplashScreen: {
launchAutoHide: false,
},
},
};

export default config;
Empty file added changelogs/.gitkeep
Empty file.
1 change: 1 addition & 0 deletions changelogs/1.17.0.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Some hotfixes
21 changes: 21 additions & 0 deletions deploy/update_version.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const path = require('path');
const fs = require('fs');

const ROOT_PATH = `${path.dirname(__filename)}/..`;
const PATCH_VERSION_PATH = `${ROOT_PATH}/.patch-version`;
const PACKAGE_JSON_PATH = `${ROOT_PATH}/package.json`;
const VERSION_TXT_PATH = `${ROOT_PATH}/public/version.txt`;

// This patch value is used to override the one from package.json
const currentPatch = fs.existsSync(PATCH_VERSION_PATH) ? Number(fs.readFileSync(PATCH_VERSION_PATH, 'utf-8')) : -1;
const packageJsonContent = fs.readFileSync(PACKAGE_JSON_PATH, 'utf-8');
const currentVersion = JSON.parse(packageJsonContent).version;
const [major, minor] = currentVersion.split('.');

const newPatch = currentPatch + 1;
const newVersion = [major, minor, newPatch].join('.');
const newPackageJsonContent = packageJsonContent.replace(`"version": "${currentVersion}"`, `"version": "${newVersion}"`);

fs.writeFileSync(PATCH_VERSION_PATH, String(newPatch), 'utf-8');
fs.writeFileSync(PACKAGE_JSON_PATH, newPackageJsonContent, 'utf-8');
fs.writeFileSync(VERSION_TXT_PATH, newVersion, 'utf-8');
6 changes: 6 additions & 0 deletions mobile/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
source "https://rubygems.org"

gem "fastlane"

plugins_path = File.join(File.dirname(__FILE__), 'android', 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)
Loading

0 comments on commit adde2ee

Please sign in to comment.