Compare commits
17 Commits
1.3.13
...
thanks-but
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
903047f13b | ||
|
|
48be234af4 | ||
|
|
8d8bcf2a7e | ||
| dae23300fe | |||
| 9e401febea | |||
| cd4b279703 | |||
| a3a2d97b9a | |||
| 802050259c | |||
| efd7d50a84 | |||
| 39c389cda8 | |||
| 93fdcaf7ff | |||
| ad419efa0d | |||
| ce45ddb2bd | |||
| 7d306bd204 | |||
| 9713313a40 | |||
|
|
ffa7bac319 | ||
| e0e0a0a183 |
@@ -1 +1 @@
|
|||||||
18.19.0
|
20.18.1
|
||||||
|
|||||||
14
BUILDING.md
14
BUILDING.md
@@ -333,11 +333,11 @@ The `serve` functionality provides a local HTTP server for testing production bu
|
|||||||
- If there are DB changes: before updating the test server, open browser(s) with
|
- If there are DB changes: before updating the test server, open browser(s) with
|
||||||
current version to test DB migrations.
|
current version to test DB migrations.
|
||||||
|
|
||||||
- Update the ClickUp tasks & CHANGELOG.md & the version in package.json, run
|
- Update the ClickUp tasks & CHANGELOG.md & the version in package.json, run:
|
||||||
`npm install`.
|
`npm install`.
|
||||||
|
|
||||||
- Run a build to make sure package-lock version is updated, linting works, etc:
|
- Run a build to make sure linting works, etc:
|
||||||
`npm install && npm run build:web`
|
`npm run build:web`
|
||||||
|
|
||||||
- Commit everything (since the commit hash is used the app).
|
- Commit everything (since the commit hash is used the app).
|
||||||
|
|
||||||
@@ -346,7 +346,7 @@ current version to test DB migrations.
|
|||||||
|
|
||||||
- Tag with the new version,
|
- Tag with the new version,
|
||||||
[online](https://gitea.anomalistdesign.com/trent_larson/crowd-funder-for-time-pwa/releases) or
|
[online](https://gitea.anomalistdesign.com/trent_larson/crowd-funder-for-time-pwa/releases) or
|
||||||
`git tag 1.0.2 && git push origin 1.0.2`.
|
`git tag 1.3.13 && git push origin 1.3.13`.
|
||||||
|
|
||||||
- For test, build the app:
|
- For test, build the app:
|
||||||
|
|
||||||
@@ -1140,7 +1140,7 @@ export GEM_PATH=$shortened_path
|
|||||||
##### 1. Bump the version in package.json & CHANGELOG.md for `MARKETING_VERSION`, then `grep CURRENT_PROJECT_VERSION ios/App/App.xcodeproj/project.pbxproj` and add 1 for the numbered version here:
|
##### 1. Bump the version in package.json & CHANGELOG.md for `MARKETING_VERSION`, then `grep CURRENT_PROJECT_VERSION ios/App/App.xcodeproj/project.pbxproj` and add 1 for the numbered version here:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ios/App && xcrun agvtool new-version 67 && perl -p -i -e "s/MARKETING_VERSION = .*;/MARKETING_VERSION = 1.3.12;/g" App.xcodeproj/project.pbxproj && cd -
|
cd ios/App && xcrun agvtool new-version 68 && perl -p -i -e "s/MARKETING_VERSION = .*;/MARKETING_VERSION = 1.4.2;/g" App.xcodeproj/project.pbxproj && cd -
|
||||||
# Unfortunately this edits Info.plist directly.
|
# Unfortunately this edits Info.plist directly.
|
||||||
#xcrun agvtool new-marketing-version 0.4.5
|
#xcrun agvtool new-marketing-version 0.4.5
|
||||||
```
|
```
|
||||||
@@ -1419,8 +1419,8 @@ The recommended way to build for Android is using the automated build script:
|
|||||||
##### 1. Bump the version in package.json, then update these versions & run:
|
##### 1. Bump the version in package.json, then update these versions & run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
perl -p -i -e 's/versionCode .*/versionCode 67/g' android/app/build.gradle
|
perl -p -i -e 's/versionCode .*/versionCode 68/g' android/app/build.gradle
|
||||||
perl -p -i -e 's/versionName .*/versionName "1.3.12"/g' android/app/build.gradle
|
perl -p -i -e 's/versionName .*/versionName "1.4.2"/g' android/app/build.gradle
|
||||||
```
|
```
|
||||||
|
|
||||||
##### 2. Build
|
##### 2. Build
|
||||||
|
|||||||
@@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
|
||||||
|
## [1.4.2] - 2026.05.24
|
||||||
|
### Changed
|
||||||
|
- Support 16 KB page sizes
|
||||||
|
|
||||||
|
|
||||||
## [1.3.13] - 2026.04.05
|
## [1.3.13] - 2026.04.05
|
||||||
### Added
|
### Added
|
||||||
- Ability to select project that the current one fulfills
|
- Ability to select project that the current one fulfills
|
||||||
|
|||||||
@@ -29,16 +29,16 @@ android {
|
|||||||
compileSdk rootProject.ext.compileSdkVersion
|
compileSdk rootProject.ext.compileSdkVersion
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_17
|
sourceCompatibility JavaVersion.VERSION_21
|
||||||
targetCompatibility JavaVersion.VERSION_17
|
targetCompatibility JavaVersion.VERSION_21
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "app.timesafari.app"
|
applicationId "app.timesafari.app"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 67
|
versionCode 68
|
||||||
versionName "1.3.12"
|
versionName "1.4.2"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||||
@@ -72,13 +72,14 @@ android {
|
|||||||
}
|
}
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
jniLibs {
|
jniLibs {
|
||||||
|
// Required for 16 KB page-size support: keep native libs uncompressed and
|
||||||
|
// page-aligned inside the APK (default on AGP 8.x with minSdk 23+, set
|
||||||
|
// explicitly so it does not regress).
|
||||||
|
useLegacyPackaging = false
|
||||||
pickFirsts += ['**/lib/x86_64/libbarhopper_v3.so', '**/lib/x86_64/libimage_processing_util_jni.so', '**/lib/x86_64/libsqlcipher.so']
|
pickFirsts += ['**/lib/x86_64/libbarhopper_v3.so', '**/lib/x86_64/libimage_processing_util_jni.so', '**/lib/x86_64/libsqlcipher.so']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configure for 16 KB page size compatibility
|
|
||||||
|
|
||||||
|
|
||||||
// Enable bundle builds (without which it doesn't work right for bundleDebug vs bundleRelease)
|
// Enable bundle builds (without which it doesn't work right for bundleDebug vs bundleRelease)
|
||||||
bundle {
|
bundle {
|
||||||
language {
|
language {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_17
|
sourceCompatibility JavaVersion.VERSION_21
|
||||||
targetCompatibility JavaVersion.VERSION_17
|
targetCompatibility JavaVersion.VERSION_21
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"appId": "app.timesafari",
|
"appId": "app.timesafari",
|
||||||
"appName": "TimeSafari",
|
"appName": "Giftopia",
|
||||||
"webDir": "dist",
|
"webDir": "dist",
|
||||||
"server": {
|
"server": {
|
||||||
"cleartext": true
|
"cleartext": true
|
||||||
@@ -34,12 +34,12 @@
|
|||||||
"iosIsEncryption": false,
|
"iosIsEncryption": false,
|
||||||
"iosBiometric": {
|
"iosBiometric": {
|
||||||
"biometricAuth": false,
|
"biometricAuth": false,
|
||||||
"biometricTitle": "Biometric login for TimeSafari"
|
"biometricTitle": "Biometric login for Giftopia"
|
||||||
},
|
},
|
||||||
"androidIsEncryption": false,
|
"androidIsEncryption": false,
|
||||||
"androidBiometric": {
|
"androidBiometric": {
|
||||||
"biometricAuth": false,
|
"biometricAuth": false,
|
||||||
"biometricTitle": "Biometric login for TimeSafari"
|
"biometricTitle": "Biometric login for Giftopia"
|
||||||
},
|
},
|
||||||
"electronIsEncryption": false
|
"electronIsEncryption": false
|
||||||
},
|
},
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
},
|
},
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
"appId": "app.timesafari",
|
"appId": "app.timesafari",
|
||||||
"productName": "TimeSafari",
|
"productName": "Giftopia",
|
||||||
"directories": {
|
"directories": {
|
||||||
"output": "dist-electron-packages"
|
"output": "dist-electron-packages"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
ext {
|
ext {
|
||||||
androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.6.1'
|
androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.7.0'
|
||||||
cordovaAndroidVersion = project.hasProperty('cordovaAndroidVersion') ? rootProject.ext.cordovaAndroidVersion : '10.1.1'
|
cordovaAndroidVersion = project.hasProperty('cordovaAndroidVersion') ? rootProject.ext.cordovaAndroidVersion : '10.1.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:8.2.1'
|
classpath 'com.android.tools.build:gradle:8.7.2'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17,10 +17,10 @@ apply plugin: 'com.android.library'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
namespace "capacitor.cordova.android.plugins"
|
namespace "capacitor.cordova.android.plugins"
|
||||||
compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34
|
compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 35
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
|
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 23
|
||||||
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34
|
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 35
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
}
|
}
|
||||||
@@ -28,8 +28,8 @@ android {
|
|||||||
abortOnError false
|
abortOnError false
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_17
|
sourceCompatibility JavaVersion.VERSION_21
|
||||||
targetCompatibility JavaVersion.VERSION_17
|
targetCompatibility JavaVersion.VERSION_21
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
|
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
|
||||||
ext {
|
ext {
|
||||||
cdvMinSdkVersion = project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
|
cdvMinSdkVersion = project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 23
|
||||||
// Plugin gradle extensions can append to this to have code run at the end.
|
// Plugin gradle extensions can append to this to have code run at the end.
|
||||||
cdvPluginPostBuildExtras = []
|
cdvPluginPostBuildExtras = []
|
||||||
cordovaConfig = [:]
|
cordovaConfig = [:]
|
||||||
|
|||||||
@@ -13,4 +13,11 @@ ext {
|
|||||||
androidxJunitVersion = '1.1.5'
|
androidxJunitVersion = '1.1.5'
|
||||||
androidxEspressoCoreVersion = '3.5.1'
|
androidxEspressoCoreVersion = '3.5.1'
|
||||||
cordovaAndroidVersion = '10.1.1'
|
cordovaAndroidVersion = '10.1.1'
|
||||||
|
|
||||||
|
// Pin CameraX to 1.4.2: first stable line shipping a 16 KB page-size-aligned
|
||||||
|
// libimage_processing_util_jni.so. The barcode-scanning plugin still defaults to 1.1.0.
|
||||||
|
androidxCameraCamera2Version = '1.4.2'
|
||||||
|
androidxCameraCoreVersion = '1.4.2'
|
||||||
|
androidxCameraLifecycleVersion = '1.4.2'
|
||||||
|
androidxCameraViewVersion = '1.4.2'
|
||||||
}
|
}
|
||||||
3
ios/.gitignore
vendored
3
ios/.gitignore
vendored
@@ -17,6 +17,7 @@ App/App/config.xml
|
|||||||
App/App.xcodeproj/xcuserdata/*.xcuserdatad/
|
App/App.xcodeproj/xcuserdata/*.xcuserdatad/
|
||||||
App/App.xcodeproj/*.xcuserstate
|
App/App.xcodeproj/*.xcuserstate
|
||||||
|
|
||||||
# Generated Icons from capacitor-assets (also Contents.json which is confusing; see BUILDING.md)
|
# Generated by capacitor-assets at build time (not in repo). Fresh clones lack these
|
||||||
|
# folders; scripts/common.sh ensure_ios_capacitor_asset_directories creates them before generate.
|
||||||
App/App/Assets.xcassets/AppIcon.appiconset
|
App/App/Assets.xcassets/AppIcon.appiconset
|
||||||
App/App/Assets.xcassets/Splash.imageset
|
App/App/Assets.xcassets/Splash.imageset
|
||||||
|
|||||||
@@ -452,7 +452,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
@@ -508,7 +508,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SWIFT_COMPILATION_MODE = wholemodule;
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
@@ -524,18 +524,18 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
|
CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 67;
|
CURRENT_PROJECT_VERSION = 68;
|
||||||
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
||||||
ENABLE_APP_SANDBOX = NO;
|
ENABLE_APP_SANDBOX = NO;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
INFOPLIST_FILE = App/Info.plist;
|
INFOPLIST_FILE = App/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = Giftopia;
|
INFOPLIST_KEY_CFBundleDisplayName = Giftopia;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.5;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3.12;
|
MARKETING_VERSION = 1.4.2;
|
||||||
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
|
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari;
|
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -553,18 +553,18 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
|
CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 67;
|
CURRENT_PROJECT_VERSION = 68;
|
||||||
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
||||||
ENABLE_APP_SANDBOX = NO;
|
ENABLE_APP_SANDBOX = NO;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
INFOPLIST_FILE = App/Info.plist;
|
INFOPLIST_FILE = App/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = Giftopia;
|
INFOPLIST_KEY_CFBundleDisplayName = Giftopia;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 15.5;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3.12;
|
MARKETING_VERSION = 1.4.2;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari;
|
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
|
||||||
@@ -582,7 +582,7 @@
|
|||||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = TimeSafariShareExtension/TimeSafariShareExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = TimeSafariShareExtension/TimeSafariShareExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 67;
|
CURRENT_PROJECT_VERSION = 68;
|
||||||
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -596,7 +596,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||||
MARKETING_VERSION = 1.3.12;
|
MARKETING_VERSION = 1.4.2;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari.TimeSafariShareExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari.TimeSafariShareExtension;
|
||||||
@@ -620,7 +620,7 @@
|
|||||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = TimeSafariShareExtension/TimeSafariShareExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = TimeSafariShareExtension/TimeSafariShareExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 67;
|
CURRENT_PROJECT_VERSION = 68;
|
||||||
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -634,7 +634,7 @@
|
|||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
||||||
MARKETING_VERSION = 1.3.12;
|
MARKETING_VERSION = 1.4.2;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari.TimeSafariShareExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari.TimeSafariShareExtension;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers'
|
require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers'
|
||||||
|
|
||||||
platform :ios, '13.0'
|
platform :ios, '15.5'
|
||||||
use_frameworks!
|
use_frameworks!
|
||||||
|
|
||||||
# workaround to avoid Xcode caching of Pods that requires
|
# workaround to avoid Xcode caching of Pods that requires
|
||||||
@@ -30,9 +30,4 @@ end
|
|||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
assertDeploymentTarget(installer)
|
assertDeploymentTarget(installer)
|
||||||
installer.pods_project.targets.each do |target|
|
|
||||||
target.build_configurations.each do |config|
|
|
||||||
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,94 +1,84 @@
|
|||||||
PODS:
|
PODS:
|
||||||
- Capacitor (6.2.1):
|
- Capacitor (7.6.4):
|
||||||
- CapacitorCordova
|
- CapacitorCordova
|
||||||
- CapacitorApp (6.0.2):
|
- CapacitorApp (7.1.2):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorCamera (6.1.2):
|
- CapacitorCamera (7.0.5):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorClipboard (6.0.2):
|
- CapacitorClipboard (7.0.4):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorCommunitySqlite (6.0.2):
|
- CapacitorCommunitySqlite (7.0.3):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- SQLCipher
|
- SQLCipher
|
||||||
- ZIPFoundation
|
- ZIPFoundation
|
||||||
- CapacitorCordova (6.2.1)
|
- CapacitorCordova (7.6.4)
|
||||||
- CapacitorFilesystem (6.0.3):
|
- CapacitorFilesystem (7.1.8):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorMlkitBarcodeScanning (6.2.0):
|
- IONFilesystemLib (~> 1.1.1)
|
||||||
|
- CapacitorMlkitBarcodeScanning (7.5.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- GoogleMLKit/BarcodeScanning (= 5.0.0)
|
- GoogleMLKit/BarcodeScanning (= 7.0.0)
|
||||||
- CapacitorShare (6.0.3):
|
- CapacitorShare (7.0.4):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapacitorStatusBar (6.0.2):
|
- CapacitorStatusBar (7.0.6):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- CapawesomeCapacitorFilePicker (6.2.0):
|
- CapawesomeCapacitorFilePicker (7.2.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- GoogleDataTransport (9.4.1):
|
- GoogleDataTransport (10.1.0):
|
||||||
- GoogleUtilities/Environment (~> 7.7)
|
- nanopb (~> 3.30910.0)
|
||||||
- nanopb (< 2.30911.0, >= 2.30908.0)
|
- PromisesObjC (~> 2.4)
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
- GoogleMLKit/BarcodeScanning (7.0.0):
|
||||||
- GoogleMLKit/BarcodeScanning (5.0.0):
|
|
||||||
- GoogleMLKit/MLKitCore
|
- GoogleMLKit/MLKitCore
|
||||||
- MLKitBarcodeScanning (~> 4.0.0)
|
- MLKitBarcodeScanning (~> 6.0.0)
|
||||||
- GoogleMLKit/MLKitCore (5.0.0):
|
- GoogleMLKit/MLKitCore (7.0.0):
|
||||||
- MLKitCommon (~> 10.0.0)
|
- MLKitCommon (~> 12.0.0)
|
||||||
- GoogleToolboxForMac/DebugUtils (2.3.2):
|
- GoogleToolboxForMac/Defines (4.2.1)
|
||||||
- GoogleToolboxForMac/Defines (= 2.3.2)
|
- GoogleToolboxForMac/Logger (4.2.1):
|
||||||
- GoogleToolboxForMac/Defines (2.3.2)
|
- GoogleToolboxForMac/Defines (= 4.2.1)
|
||||||
- GoogleToolboxForMac/Logger (2.3.2):
|
- "GoogleToolboxForMac/NSData+zlib (4.2.1)":
|
||||||
- GoogleToolboxForMac/Defines (= 2.3.2)
|
- GoogleToolboxForMac/Defines (= 4.2.1)
|
||||||
- "GoogleToolboxForMac/NSData+zlib (2.3.2)":
|
- GoogleUtilities/Environment (8.1.0):
|
||||||
- GoogleToolboxForMac/Defines (= 2.3.2)
|
|
||||||
- "GoogleToolboxForMac/NSDictionary+URLArguments (2.3.2)":
|
|
||||||
- GoogleToolboxForMac/DebugUtils (= 2.3.2)
|
|
||||||
- GoogleToolboxForMac/Defines (= 2.3.2)
|
|
||||||
- "GoogleToolboxForMac/NSString+URLArguments (= 2.3.2)"
|
|
||||||
- "GoogleToolboxForMac/NSString+URLArguments (2.3.2)"
|
|
||||||
- GoogleUtilities/Environment (7.13.3):
|
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
- GoogleUtilities/Logger (8.1.0):
|
||||||
- GoogleUtilities/Logger (7.13.3):
|
|
||||||
- GoogleUtilities/Environment
|
- GoogleUtilities/Environment
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Privacy (7.13.3)
|
- GoogleUtilities/Privacy (8.1.0)
|
||||||
- GoogleUtilities/UserDefaults (7.13.3):
|
- GoogleUtilities/UserDefaults (8.1.0):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilitiesComponents (1.1.0):
|
|
||||||
- GoogleUtilities/Logger
|
|
||||||
- GTMSessionFetcher/Core (3.5.0)
|
- GTMSessionFetcher/Core (3.5.0)
|
||||||
- MLImage (1.0.0-beta5)
|
- IONFilesystemLib (1.1.2)
|
||||||
- MLKitBarcodeScanning (4.0.0):
|
- MLImage (1.0.0-beta6)
|
||||||
- MLKitCommon (~> 10.0)
|
- MLKitBarcodeScanning (6.0.0):
|
||||||
- MLKitVision (~> 6.0)
|
- MLKitCommon (~> 12.0)
|
||||||
- MLKitCommon (10.0.0):
|
- MLKitVision (~> 8.0)
|
||||||
- GoogleDataTransport (~> 9.0)
|
- MLKitCommon (12.0.0):
|
||||||
- GoogleToolboxForMac/Logger (~> 2.1)
|
- GoogleDataTransport (~> 10.0)
|
||||||
- "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
|
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
|
||||||
- "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)"
|
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
|
||||||
- GoogleUtilities/UserDefaults (~> 7.0)
|
- GoogleUtilities/Logger (~> 8.0)
|
||||||
- GoogleUtilitiesComponents (~> 1.0)
|
- GoogleUtilities/UserDefaults (~> 8.0)
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 1.1)
|
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
|
||||||
- MLKitVision (6.0.0):
|
- MLKitVision (8.0.0):
|
||||||
- GoogleToolboxForMac/Logger (~> 2.1)
|
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
|
||||||
- "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
|
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 1.1)
|
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
|
||||||
- MLImage (= 1.0.0-beta5)
|
- MLImage (= 1.0.0-beta6)
|
||||||
- MLKitCommon (~> 10.0)
|
- MLKitCommon (~> 12.0)
|
||||||
- nanopb (2.30910.0):
|
- nanopb (3.30910.0):
|
||||||
- nanopb/decode (= 2.30910.0)
|
- nanopb/decode (= 3.30910.0)
|
||||||
- nanopb/encode (= 2.30910.0)
|
- nanopb/encode (= 3.30910.0)
|
||||||
- nanopb/decode (2.30910.0)
|
- nanopb/decode (3.30910.0)
|
||||||
- nanopb/encode (2.30910.0)
|
- nanopb/encode (3.30910.0)
|
||||||
- PromisesObjC (2.4.0)
|
- PromisesObjC (2.4.0)
|
||||||
- SQLCipher (4.9.0):
|
- SQLCipher (4.10.0):
|
||||||
- SQLCipher/standard (= 4.9.0)
|
- SQLCipher/standard (= 4.10.0)
|
||||||
- SQLCipher/common (4.9.0)
|
- SQLCipher/common (4.10.0)
|
||||||
- SQLCipher/standard (4.9.0):
|
- SQLCipher/standard (4.10.0):
|
||||||
- SQLCipher/common
|
- SQLCipher/common
|
||||||
- TimesafariDailyNotificationPlugin (2.0.0):
|
- TimesafariDailyNotificationPlugin (2.0.0):
|
||||||
- Capacitor
|
- Capacitor
|
||||||
- ZIPFoundation (0.9.19)
|
- ZIPFoundation (0.9.20)
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- "Capacitor (from `../../node_modules/@capacitor/ios`)"
|
- "Capacitor (from `../../node_modules/@capacitor/ios`)"
|
||||||
@@ -110,8 +100,8 @@ SPEC REPOS:
|
|||||||
- GoogleMLKit
|
- GoogleMLKit
|
||||||
- GoogleToolboxForMac
|
- GoogleToolboxForMac
|
||||||
- GoogleUtilities
|
- GoogleUtilities
|
||||||
- GoogleUtilitiesComponents
|
|
||||||
- GTMSessionFetcher
|
- GTMSessionFetcher
|
||||||
|
- IONFilesystemLib
|
||||||
- MLImage
|
- MLImage
|
||||||
- MLKitBarcodeScanning
|
- MLKitBarcodeScanning
|
||||||
- MLKitCommon
|
- MLKitCommon
|
||||||
@@ -148,33 +138,33 @@ EXTERNAL SOURCES:
|
|||||||
:path: "../../node_modules/@timesafari/daily-notification-plugin"
|
:path: "../../node_modules/@timesafari/daily-notification-plugin"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
Capacitor: c95400d761e376be9da6be5a05f226c0e865cebf
|
Capacitor: 69dc07ebc6bd064747c5e76922f97e4862d9cc23
|
||||||
CapacitorApp: e1e6b7d05e444d593ca16fd6d76f2b7c48b5aea7
|
CapacitorApp: f01a913211780e0718dae9750442c3e23f96e106
|
||||||
CapacitorCamera: 9bc7b005d0e6f1d5f525b8137045b60cffffce79
|
CapacitorCamera: 9e952270be355797f769aa835bb7643a96c871fe
|
||||||
CapacitorClipboard: 4443c3cdb7c77b1533dfe3ff0f9f7756aa8579df
|
CapacitorClipboard: d1f123674cf413125db816a45e8f70e8770972fc
|
||||||
CapacitorCommunitySqlite: 0299d20f4b00c2e6aa485a1d8932656753937b9b
|
CapacitorCommunitySqlite: 4813d82ad33001e612a39d313cb5d28066cbafda
|
||||||
CapacitorCordova: 8d93e14982f440181be7304aa9559ca631d77fff
|
CapacitorCordova: e343e95a672ff73e21a77a80257b52fb609b47d5
|
||||||
CapacitorFilesystem: 59270a63c60836248812671aa3b15df673fbaf74
|
CapacitorFilesystem: c63fc54df41e5a6761785a7f3c49dc696c22e296
|
||||||
CapacitorMlkitBarcodeScanning: 7652be9c7922f39203a361de735d340ae37e134e
|
CapacitorMlkitBarcodeScanning: afd6fc431b550026a2c052e11ab2b71c7ae30011
|
||||||
CapacitorShare: d2a742baec21c8f3b92b361a2fbd2401cdd8288e
|
CapacitorShare: 25f7fc5dd0e4edbde5d6801c6de5d14a8b450a41
|
||||||
CapacitorStatusBar: b16799a26320ffa52f6c8b01737d5a95bbb8f3eb
|
CapacitorStatusBar: 416e9e53fd6397e668d4a181cd2131617d949bd6
|
||||||
CapawesomeCapacitorFilePicker: c40822f0a39f86855321943c7829d52bca7f01bd
|
CapawesomeCapacitorFilePicker: 0f4a913a00e39dd77213449f0d917e92f35a5ca9
|
||||||
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
||||||
GoogleMLKit: 90ba06e028795a50261f29500d238d6061538711
|
GoogleMLKit: eff9e23ec1d90ea4157a1ee2e32a4f610c5b3318
|
||||||
GoogleToolboxForMac: 8bef7c7c5cf7291c687cf5354f39f9db6399ad34
|
GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8
|
||||||
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
|
||||||
GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe
|
|
||||||
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
||||||
MLImage: 1824212150da33ef225fbd3dc49f184cf611046c
|
IONFilesystemLib: 21a63377696b2d8fab5632ecfb7d2ac67bddb68a
|
||||||
MLKitBarcodeScanning: 9cb0ec5ec65bbb5db31de4eba0a3289626beab4e
|
MLImage: 0ad1c5f50edd027672d8b26b0fee78a8b4a0fc56
|
||||||
MLKitCommon: afcd11b6c0735066a0dde8b4bf2331f6197cbca2
|
MLKitBarcodeScanning: 0a3064da0a7f49ac24ceb3cb46a5bc67496facd2
|
||||||
MLKitVision: 90922bca854014a856f8b649d1f1f04f63fd9c79
|
MLKitCommon: 07c2c33ae5640e5380beaaa6e4b9c249a205542d
|
||||||
nanopb: 438bc412db1928dac798aa6fd75726007be04262
|
MLKitVision: 45e79d68845a2de77e2dd4d7f07947f0ed157b0e
|
||||||
|
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
SQLCipher: 31878d8ebd27e5c96db0b7cb695c96e9f8ad77da
|
SQLCipher: eb79c64049cb002b4e9fcb30edb7979bf4706dfc
|
||||||
TimesafariDailyNotificationPlugin: 3c12e8c39fc27f689f56cf4e57230a8c28611fcc
|
TimesafariDailyNotificationPlugin: 3c12e8c39fc27f689f56cf4e57230a8c28611fcc
|
||||||
ZIPFoundation: b8c29ea7ae353b309bc810586181fd073cb3312c
|
ZIPFoundation: dfd3d681c4053ff7e2f7350bc4e53b5dba3f5351
|
||||||
|
|
||||||
PODFILE CHECKSUM: 6d92bfa46c6c2d31d19b8c0c38f56a8ae9fd222f
|
PODFILE CHECKSUM: 87c07d03f36ef38ab0c873802aee1ce9b5d34448
|
||||||
|
|
||||||
COCOAPODS: 1.16.2
|
COCOAPODS: 1.16.2
|
||||||
|
|||||||
7511
package-lock.json
generated
7511
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
31
package.json
31
package.json
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
"name": "giftopia",
|
"name": "giftopia",
|
||||||
"version": "1.3.13",
|
"version": "1.4.2",
|
||||||
"description": "Giftopia App",
|
"description": "Giftopia App",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Gift Economies Team"
|
"name": "Gift Economies Team"
|
||||||
@@ -28,7 +29,7 @@
|
|||||||
"auto-run:electron": "./scripts/auto-run.sh --platform=electron",
|
"auto-run:electron": "./scripts/auto-run.sh --platform=electron",
|
||||||
"build:capacitor": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build --mode capacitor --config vite.config.capacitor.mts",
|
"build:capacitor": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build --mode capacitor --config vite.config.capacitor.mts",
|
||||||
"build:capacitor:sync": "npm run build:capacitor && npx cap sync && node scripts/restore-local-plugins.js",
|
"build:capacitor:sync": "npm run build:capacitor && npx cap sync && node scripts/restore-local-plugins.js",
|
||||||
"build:native": "vite build && npx cap sync && node scripts/restore-local-plugins.js && npx capacitor-assets generate",
|
"build:native": "vite build && npx cap sync && node scripts/restore-local-plugins.js && bash -c 'source scripts/common.sh && ensure_ios_capacitor_asset_directories' && npx capacitor-assets generate",
|
||||||
"assets:config": "npx tsx scripts/assets-config.ts",
|
"assets:config": "npx tsx scripts/assets-config.ts",
|
||||||
"assets:validate": "npx tsx scripts/assets-validator.ts",
|
"assets:validate": "npx tsx scripts/assets-validator.ts",
|
||||||
"assets:validate:android": "./scripts/build-android.sh --assets-only",
|
"assets:validate:android": "./scripts/build-android.sh --assets-only",
|
||||||
@@ -138,19 +139,19 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@capacitor-community/electron": "^5.0.1",
|
"@capacitor-community/electron": "^5.0.1",
|
||||||
"@capacitor-community/sqlite": "6.0.2",
|
"@capacitor-community/sqlite": "^7.0.3",
|
||||||
"@capacitor-mlkit/barcode-scanning": "^6.0.0",
|
"@capacitor-mlkit/barcode-scanning": "^7.5.0",
|
||||||
"@capacitor/android": "^6.2.0",
|
"@capacitor/android": "^7.6.4",
|
||||||
"@capacitor/app": "^6.0.0",
|
"@capacitor/app": "^7.1.0",
|
||||||
"@capacitor/camera": "^6.0.0",
|
"@capacitor/camera": "^7.0.5",
|
||||||
"@capacitor/cli": "^6.2.0",
|
"@capacitor/cli": "^7.6.4",
|
||||||
"@capacitor/clipboard": "^6.0.2",
|
"@capacitor/clipboard": "^7.0.4",
|
||||||
"@capacitor/core": "^6.2.0",
|
"@capacitor/core": "^7.6.4",
|
||||||
"@capacitor/filesystem": "^6.0.0",
|
"@capacitor/filesystem": "^7.1.8",
|
||||||
"@capacitor/ios": "^6.2.0",
|
"@capacitor/ios": "^7.6.4",
|
||||||
"@capacitor/share": "^6.0.3",
|
"@capacitor/share": "^7.0.4",
|
||||||
"@capacitor/status-bar": "^6.0.2",
|
"@capacitor/status-bar": "^7.0.6",
|
||||||
"@capawesome/capacitor-file-picker": "^6.2.0",
|
"@capawesome/capacitor-file-picker": "^7.2.0",
|
||||||
"@dicebear/collection": "^5.4.1",
|
"@dicebear/collection": "^5.4.1",
|
||||||
"@dicebear/core": "^5.4.1",
|
"@dicebear/core": "^5.4.1",
|
||||||
"@ethersproject/hdnode": "^5.7.0",
|
"@ethersproject/hdnode": "^5.7.0",
|
||||||
|
|||||||
@@ -222,8 +222,9 @@ build_ios_app() {
|
|||||||
|
|
||||||
if [ "$BUILD_TYPE" = "debug" ]; then
|
if [ "$BUILD_TYPE" = "debug" ]; then
|
||||||
build_config="Debug"
|
build_config="Debug"
|
||||||
# Any Simulator — avoids hardcoding a device name (e.g. iPhone 15 Pro) that may not exist in newer Xcode runtimes
|
# Use device SDK — prebuilt MLKit frameworks (MLImage, MLKitBarcodeScanning) ship
|
||||||
destination="generic/platform=iOS Simulator"
|
# iOS device slices only and cannot link against the iOS Simulator SDK.
|
||||||
|
destination="generic/platform=iOS"
|
||||||
else
|
else
|
||||||
build_config="Release"
|
build_config="Release"
|
||||||
destination="platform=iOS,id=auto"
|
destination="platform=iOS,id=auto"
|
||||||
@@ -233,10 +234,16 @@ build_ios_app() {
|
|||||||
|
|
||||||
cd ios/App
|
cd ios/App
|
||||||
|
|
||||||
|
# Prevent pkgx-managed libs (e.g. zlib) from leaking into the iOS SDK linker.
|
||||||
|
unset LIBRARY_PATH
|
||||||
|
unset DYLD_LIBRARY_PATH
|
||||||
|
unset DYLD_FALLBACK_LIBRARY_PATH
|
||||||
|
|
||||||
# Build the app:
|
# Build the app:
|
||||||
# -quiet: skip the huge export VAR dump (compiler warnings still show unless suppressed below).
|
# -quiet: skip the huge export VAR dump (compiler warnings still show unless suppressed below).
|
||||||
# SWIFT_SUPPRESS_WARNINGS / GCC_WARN_INHIBIT_ALL_WARNINGS: quiet CLI output from Pods + plugins;
|
# SWIFT_SUPPRESS_WARNINGS / GCC_WARN_INHIBIT_ALL_WARNINGS: quiet CLI output from Pods + plugins;
|
||||||
# build in Xcode for full diagnostics. Real errors still fail the build.
|
# build in Xcode for full diagnostics. Real errors still fail the build.
|
||||||
|
local build_exit=0
|
||||||
xcodebuild -quiet \
|
xcodebuild -quiet \
|
||||||
-workspace App.xcworkspace \
|
-workspace App.xcworkspace \
|
||||||
-scheme "$scheme" \
|
-scheme "$scheme" \
|
||||||
@@ -247,10 +254,14 @@ build_ios_app() {
|
|||||||
CODE_SIGNING_REQUIRED=NO \
|
CODE_SIGNING_REQUIRED=NO \
|
||||||
CODE_SIGNING_ALLOWED=NO \
|
CODE_SIGNING_ALLOWED=NO \
|
||||||
SWIFT_SUPPRESS_WARNINGS=YES \
|
SWIFT_SUPPRESS_WARNINGS=YES \
|
||||||
GCC_WARN_INHIBIT_ALL_WARNINGS=YES
|
GCC_WARN_INHIBIT_ALL_WARNINGS=YES || build_exit=$?
|
||||||
|
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
||||||
|
if [ $build_exit -ne 0 ]; then
|
||||||
|
return $build_exit
|
||||||
|
fi
|
||||||
|
|
||||||
log_success "iOS app built successfully"
|
log_success "iOS app built successfully"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -413,6 +424,7 @@ fi
|
|||||||
# Handle assets-only mode
|
# Handle assets-only mode
|
||||||
if [ "$ASSETS_ONLY" = true ]; then
|
if [ "$ASSETS_ONLY" = true ]; then
|
||||||
log_info "Assets-only mode: generating assets"
|
log_info "Assets-only mode: generating assets"
|
||||||
|
ensure_ios_capacitor_asset_directories
|
||||||
safe_execute "Generating assets" "npx capacitor-assets generate --ios" || exit 7
|
safe_execute "Generating assets" "npx capacitor-assets generate --ios" || exit 7
|
||||||
log_success "Assets generation completed successfully!"
|
log_success "Assets generation completed successfully!"
|
||||||
exit 0
|
exit 0
|
||||||
@@ -562,6 +574,7 @@ safe_execute "Installing CocoaPods dependencies" "run_pod_install_with_workaroun
|
|||||||
safe_execute "Syncing with Capacitor" "run_cap_sync_with_workaround" || exit 6
|
safe_execute "Syncing with Capacitor" "run_cap_sync_with_workaround" || exit 6
|
||||||
|
|
||||||
# Step 7: Generate assets
|
# Step 7: Generate assets
|
||||||
|
ensure_ios_capacitor_asset_directories
|
||||||
safe_execute "Generating assets" "npx capacitor-assets generate --ios" || exit 7
|
safe_execute "Generating assets" "npx capacitor-assets generate --ios" || exit 7
|
||||||
|
|
||||||
# Step 8: Build iOS app
|
# Step 8: Build iOS app
|
||||||
|
|||||||
@@ -337,6 +337,27 @@ parse_args() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# iOS: capacitor-assets writes into AppIcon.appiconset and Splash.imageset under
|
||||||
|
# Assets.xcassets. Those paths are gitignored (generated). On a fresh clone the
|
||||||
|
# folders and Contents.json are missing; the tool opens Contents.json before writing
|
||||||
|
# PNGs, so we create minimal asset-catalog stubs when absent.
|
||||||
|
ensure_ios_capacitor_asset_directories() {
|
||||||
|
local base="ios/App/App/Assets.xcassets"
|
||||||
|
if [ ! -d "$base" ]; then
|
||||||
|
log_warn "Missing $base — cannot prepare iOS asset directories"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
mkdir -p "$base/AppIcon.appiconset" "$base/Splash.imageset"
|
||||||
|
local minimal_contents='{"images":[],"info":{"author":"xcode","version":1}}'
|
||||||
|
if [ ! -f "$base/AppIcon.appiconset/Contents.json" ]; then
|
||||||
|
printf '%s\n' "$minimal_contents" > "$base/AppIcon.appiconset/Contents.json"
|
||||||
|
fi
|
||||||
|
if [ ! -f "$base/Splash.imageset/Contents.json" ]; then
|
||||||
|
printf '%s\n' "$minimal_contents" > "$base/Splash.imageset/Contents.json"
|
||||||
|
fi
|
||||||
|
log_debug "Ensured iOS capacitor-assets output directories exist"
|
||||||
|
}
|
||||||
|
|
||||||
# Export functions for use in child scripts
|
# Export functions for use in child scripts
|
||||||
export -f log_info log_success log_warn log_error log_debug log_step
|
export -f log_info log_success log_warn log_error log_debug log_step
|
||||||
export -f measure_time print_header print_footer
|
export -f measure_time print_header print_footer
|
||||||
@@ -345,3 +366,4 @@ export -f safe_execute check_venv get_git_hash
|
|||||||
export -f clean_build_artifacts validate_env_vars
|
export -f clean_build_artifacts validate_env_vars
|
||||||
export -f setup_build_env setup_app_directories load_env_file print_env_vars
|
export -f setup_build_env setup_app_directories load_env_file print_env_vars
|
||||||
export -f print_usage parse_args
|
export -f print_usage parse_args
|
||||||
|
export -f ensure_ios_capacitor_asset_directories
|
||||||
@@ -8,14 +8,14 @@ notifications for conflicted entities * - Template streamlined with computed CSS
|
|||||||
properties * * @author Matthew Raymer */
|
properties * * @author Matthew Raymer */
|
||||||
<template>
|
<template>
|
||||||
<div id="sectionGiftedGiver">
|
<div id="sectionGiftedGiver">
|
||||||
<label class="block font-bold mb-1">
|
<label class="block font-semibold text-lg capitalize text-center">
|
||||||
{{ stepLabel }}
|
{{ stepLabel }}
|
||||||
</label>
|
</label>
|
||||||
<!-- Toggle link for entity type selection -->
|
<!-- Toggle link for entity type selection -->
|
||||||
<div class="text-right mb-4">
|
<div class="text-center mb-4">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="text-sm text-blue-600 hover:text-blue-800 underline font-medium"
|
class="text-xs text-blue-600 hover:underline uppercase"
|
||||||
@click="handleToggleEntityType"
|
@click="handleToggleEntityType"
|
||||||
>
|
>
|
||||||
{{ toggleLinkText }}
|
{{ toggleLinkText }}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
@click="disabled ? notifyLocked() : addGroup()"
|
@click="disabled ? notifyLocked() : addGroup()"
|
||||||
>
|
>
|
||||||
<font-awesome icon="plus" class="text-sm" />
|
<font-awesome icon="plus" class="text-sm" />
|
||||||
New Group
|
New Do-Not-Pair Group
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
export enum AppString {
|
export enum AppString {
|
||||||
// This is used in titles and verbiage inside the app.
|
// This is used in titles and verbiage inside the app.
|
||||||
// There is also an app name without spaces, for packaging in the package.json file used in the manifest.
|
// There is also an app name without spaces, for packaging in the package.json file used in the manifest.
|
||||||
APP_NAME = "Time Safari",
|
APP_NAME = "Giftopia",
|
||||||
APP_NAME_NO_SPACES = "TimeSafari",
|
APP_NAME_NO_SPACES = APP_NAME,
|
||||||
|
|
||||||
PROD_ENDORSER_API_SERVER = "https://api.endorser.ch",
|
PROD_ENDORSER_API_SERVER = "https://api.endorser.ch",
|
||||||
TEST_ENDORSER_API_SERVER = "https://test-api.endorser.ch",
|
TEST_ENDORSER_API_SERVER = "https://test-api.endorser.ch",
|
||||||
|
|||||||
@@ -123,10 +123,10 @@ export class CapacitorQRScanner implements QRScannerService {
|
|||||||
|
|
||||||
// Add listener for barcode scans
|
// Add listener for barcode scans
|
||||||
const handle = await BarcodeScanner.addListener(
|
const handle = await BarcodeScanner.addListener(
|
||||||
"barcodeScanned",
|
"barcodesScanned",
|
||||||
(result) => {
|
(result) => {
|
||||||
if (this.scanListener && result.barcode?.rawValue) {
|
if (this.scanListener && result.barcodes?.[0]?.rawValue) {
|
||||||
this.scanListener.onScan(result.barcode.rawValue);
|
this.scanListener.onScan(result.barcodes[0].rawValue);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2116,6 +2116,10 @@ export default class AccountViewView extends Vue {
|
|||||||
hasLocation: result.includeLocation,
|
hasLocation: result.includeLocation,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (response.data.userMessage) {
|
||||||
|
this.notify.info(response.data.userMessage);
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
logger.debug("[AccountViewView] No profile data found in response:", {
|
logger.debug("[AccountViewView] No profile data found in response:", {
|
||||||
@@ -2123,6 +2127,10 @@ export default class AccountViewView extends Vue {
|
|||||||
hasData: !!response.data,
|
hasData: !!response.data,
|
||||||
hasDataData: !!(response.data && response.data.data),
|
hasDataData: !!(response.data && response.data.data),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (response.data?.userMessage) {
|
||||||
|
this.notify.info(response.data.userMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -2229,6 +2237,10 @@ export default class AccountViewView extends Vue {
|
|||||||
status: response.status,
|
status: response.status,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (response.data?.userMessage) {
|
||||||
|
this.notify.info(response.data.userMessage);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (error: unknown) {
|
} catch (error: unknown) {
|
||||||
// Handle specific HTTP status codes cleanly to suppress console spam
|
// Handle specific HTTP status codes cleanly to suppress console spam
|
||||||
@@ -2345,6 +2357,10 @@ export default class AccountViewView extends Vue {
|
|||||||
status: response.status,
|
status: response.status,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (response.data?.userMessage) {
|
||||||
|
this.notify.info(response.data.userMessage);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (error: unknown) {
|
} catch (error: unknown) {
|
||||||
// Handle specific HTTP status codes cleanly to suppress console spam
|
// Handle specific HTTP status codes cleanly to suppress console spam
|
||||||
|
|||||||
@@ -87,7 +87,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p class="mt-4">
|
<div class="mt-4">
|
||||||
<!--
|
<!--
|
||||||
This section is for Twilio's A2P Campaign requirements.
|
This section is for Twilio's A2P Campaign requirements.
|
||||||
They say: Ensure it includes the program name, description, message/data rates, message frequency, support contact info, and opt-out instructions (HELP and STOP in bold).
|
They say: Ensure it includes the program name, description, message/data rates, message frequency, support contact info, and opt-out instructions (HELP and STOP in bold).
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
along with the explicit signed permission to use it for searches.
|
along with the explicit signed permission to use it for searches.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- eslint-enable -->
|
<!-- eslint-enable -->
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -109,12 +109,14 @@ Raymer * @version 1.0.0 */
|
|||||||
|
|
||||||
<div v-if="isUserRegistered" id="sectionRecordSomethingGiven">
|
<div v-if="isUserRegistered" id="sectionRecordSomethingGiven">
|
||||||
<!-- Record Quick-Action -->
|
<!-- Record Quick-Action -->
|
||||||
<div class="mb-6">
|
<div
|
||||||
<div class="flex gap-2 items-center mb-2">
|
class="bg-slate-100 border border-slate-300 rounded-md px-4 py-2.5 mb-4"
|
||||||
|
>
|
||||||
|
<div class="flex gap-2 justify-between items-center ps-8">
|
||||||
<!-- Thank button - always visible and unchanged -->
|
<!-- Thank button - always visible and unchanged -->
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="text-center text-base uppercase bg-gradient-to-b from-green-400 to-green-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white flex items-center justify-center gap-2 px-4 py-3 rounded-full"
|
class="text-center text-xl uppercase font-bold bg-gradient-to-b from-green-400 to-green-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white flex items-center justify-center gap-2 mx-auto px-6 py-2 rounded-lg"
|
||||||
@click="openPersonDialog()"
|
@click="openPersonDialog()"
|
||||||
>
|
>
|
||||||
<font-awesome icon="plus" />
|
<font-awesome icon="plus" />
|
||||||
@@ -122,25 +124,29 @@ Raymer * @version 1.0.0 */
|
|||||||
</button>
|
</button>
|
||||||
<!-- Plus button - appears when scrolled, positioned over house-chimney icon -->
|
<!-- Plus button - appears when scrolled, positioned over house-chimney icon -->
|
||||||
<transition
|
<transition
|
||||||
enter-active-class="transition-all duration-1000 ease-out"
|
enter-active-class="transition-all duration-500 ease-out"
|
||||||
leave-active-class="transition-all duration-1000 ease-in"
|
leave-active-class="transition-all duration-500 ease-in"
|
||||||
enter-from-class="scale-0"
|
enter-from-class="opacity-0"
|
||||||
enter-to-class="scale-100"
|
enter-to-class="opacity-100"
|
||||||
leave-from-class="scale-100"
|
leave-from-class="opacity-100"
|
||||||
leave-to-class="scale-0"
|
leave-to-class="opacity-0"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-if="isScrolled"
|
||||||
|
class="bg-gradient-to-t from-white to-transparent fixed inset-x-0 bottom-[calc(4.75rem+max(env(safe-area-inset-bottom),var(--safe-area-inset-bottom,0px)))] px-4 pb-3 w-full z-[49]"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
v-if="isScrolled"
|
|
||||||
type="button"
|
type="button"
|
||||||
class="fixed bottom-10 p-4 w-14 h-14 z-50 text-center bg-gradient-to-b from-green-400 to-green-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white rounded-full flex items-center justify-center"
|
class="text-center text-xl uppercase font-bold bg-gradient-to-b from-green-400 to-green-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white flex items-center justify-center gap-2 mx-auto px-6 py-2 rounded-lg drop-shadow-[0_0_10px_rgba(255,255,255,1)]"
|
||||||
:style="getButtonPosition()"
|
|
||||||
@click="openPersonDialog()"
|
@click="openPersonDialog()"
|
||||||
>
|
>
|
||||||
<font-awesome icon="plus" />
|
<font-awesome icon="plus" />
|
||||||
|
<span>Thank</span>
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
<button
|
<button
|
||||||
class="block ms-auto text-sm text-center text-white bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] p-1.5 rounded-full"
|
class="block text-sm text-center text-white bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] p-1.5 rounded-full"
|
||||||
@click="openGiftedPrompts()"
|
@click="openGiftedPrompts()"
|
||||||
>
|
>
|
||||||
<font-awesome
|
<font-awesome
|
||||||
@@ -559,7 +565,7 @@ export default class HomeView extends Vue {
|
|||||||
const scrollTop = appElement
|
const scrollTop = appElement
|
||||||
? appElement.scrollTop
|
? appElement.scrollTop
|
||||||
: window.pageYOffset || document.documentElement.scrollTop || 0;
|
: window.pageYOffset || document.documentElement.scrollTop || 0;
|
||||||
const shouldBeScrolled = scrollTop > 100;
|
const shouldBeScrolled = scrollTop > 120;
|
||||||
if (this.isScrolled !== shouldBeScrolled) {
|
if (this.isScrolled !== shouldBeScrolled) {
|
||||||
this.isScrolled = shouldBeScrolled;
|
this.isScrolled = shouldBeScrolled;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -366,7 +366,8 @@
|
|||||||
Do Not Pair Together
|
Do Not Pair Together
|
||||||
</h4>
|
</h4>
|
||||||
<p class="text-xs text-gray-500 mb-2">
|
<p class="text-xs text-gray-500 mb-2">
|
||||||
People in the same group will not be matched with each other.
|
People in the same do-not-pair group will not be matched with each
|
||||||
|
other.
|
||||||
</p>
|
</p>
|
||||||
<p v-if="hasActiveMatches" class="text-xs text-amber-600 mb-2">
|
<p v-if="hasActiveMatches" class="text-xs text-amber-600 mb-2">
|
||||||
Erase matches to change restrictions.
|
Erase matches to change restrictions.
|
||||||
|
|||||||
@@ -130,11 +130,13 @@ test('Add contact, record gift, confirm gift', async ({ page }) => {
|
|||||||
|
|
||||||
// Refresh home view and check gift
|
// Refresh home view and check gift
|
||||||
await page.goto('./');
|
await page.goto('./');
|
||||||
|
// Wait for async data (e.g. "new offers" banner) to finish loading so the layout
|
||||||
|
// is stable before clicking — otherwise a layout shift can redirect the click.
|
||||||
|
await page.waitForLoadState('networkidle');
|
||||||
|
|
||||||
// Firefox complains on load the initial feed here when we use the test server.
|
const item = page.locator('li').filter({ hasText: finalTitle }).locator('[data-testid="circle-info-link"]');
|
||||||
// It may be similar to the CORS problem below.
|
await expect(item).toBeVisible();
|
||||||
const item = await page.locator('li:first-child').filter({ hasText: finalTitle });
|
await item.click();
|
||||||
await item.locator('[data-testid="circle-info-link"]').click();
|
|
||||||
await expect(page.getByRole('heading', { name: 'Verifiable Claim Details' })).toBeVisible();
|
await expect(page.getByRole('heading', { name: 'Verifiable Claim Details' })).toBeVisible();
|
||||||
await expect(page.getByText(finalTitle, { exact: true })).toBeVisible();
|
await expect(page.getByText(finalTitle, { exact: true })).toBeVisible();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user