Compare commits
79 Commits
v0.7.0
...
release-pl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bab80110f0 | ||
| 4e53481cdf | |||
| 116eb18693 | |||
| bbdc71c72f | |||
| cf2388db2b | |||
|
|
9fdee69cb9 | ||
| 4a0832a359 | |||
| 88e153b96f | |||
| cf9135e069 | |||
| db7cc6ffab | |||
| ec689d2940 | |||
| 00241b8ace | |||
| eb4d8d3c50 | |||
| ddf0c365a1 | |||
| eafc267e92 | |||
| 291d8c3bb5 | |||
|
|
903fd823d8 | ||
| bca375d701 | |||
| 28f8a269f8 | |||
| c944ec5140 | |||
| 550027e1bc | |||
| 41e8ac13a0 | |||
| d8802690c0 | |||
| 60b16aad30 | |||
| 689e4d6cad | |||
| db3bbc0f17 | |||
|
|
504da80c09 | ||
| 0c575eaa26 | |||
| 38b5d8b464 | |||
| ef2bc851de | |||
|
|
448d85834b | ||
| 7b5f9c1518 | |||
| 67581d04f0 | |||
| be83067fb7 | |||
| ea4590f0ed | |||
|
|
721f32e1ea | ||
| 36a74b39e1 | |||
| 08159faec2 | |||
| 346bfb9d92 | |||
|
|
0b9cda92ca | ||
| 9f45b2344e | |||
|
|
4ae96c37d1 | ||
| 852e9c47f3 | |||
|
|
769bf74400 | ||
| 132d9e33a6 | |||
|
|
7ff161f1c5 | ||
| 7ea2901867 | |||
|
|
7a849d5d36 | ||
| b1d7eccd82 | |||
|
|
0f999750f1 | ||
| 6d2173f08d | |||
|
|
768e78ace9 | ||
| d41d2b81be | |||
| 1f09e9d5aa | |||
|
|
1bb5b85b3e | ||
| 3e4051a846 | |||
|
|
24baeda80f | ||
| 9d4c8327b0 | |||
|
|
42125f89eb | ||
| 7d0c7932ea | |||
| 6f9f40a061 | |||
| 41bec3b656 | |||
| 8ba765e3be | |||
|
|
6cdb74a391 | ||
| eb797dd0e8 | |||
| 7243e43bbb | |||
| 82966695b4 | |||
| 322b3e29fa | |||
| 634ac0be6b | |||
|
|
2852e3ecf5 | ||
| 179c6d781c | |||
| daac6f56fd | |||
| a447fe1c8a | |||
| d73fa03a25 | |||
|
|
cb7133fcd7 | ||
| 64af382f10 | |||
| a535c6b49a | |||
| c15ad85d67 | |||
| d474663d44 |
@@ -1 +1 @@
|
||||
3.41.4
|
||||
3.41.7
|
||||
|
||||
94
.github/workflows/release.yml
vendored
@@ -11,7 +11,20 @@ permissions:
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
setup:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
flutter-version: ${{ steps.read.outputs.version }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .flutter-version
|
||||
sparse-checkout-cone-mode: false
|
||||
- id: read
|
||||
run: echo "version=$(cat .flutter-version | tr -d '[:space:]')" >> "$GITHUB_OUTPUT"
|
||||
|
||||
lint:
|
||||
needs: setup
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -21,7 +34,7 @@ jobs:
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
flutter-version: ${{ needs.setup.outputs.flutter-version }}
|
||||
cache: true
|
||||
|
||||
- name: Cache pub dependencies
|
||||
@@ -35,9 +48,6 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: flutter pub get
|
||||
|
||||
- name: Stub .env
|
||||
run: cp .env.example .env
|
||||
|
||||
- name: Verify formatting
|
||||
run: dart format --output=none --set-exit-if-changed .
|
||||
|
||||
@@ -45,6 +55,7 @@ jobs:
|
||||
run: flutter analyze --no-fatal-infos
|
||||
|
||||
test:
|
||||
needs: setup
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -54,7 +65,7 @@ jobs:
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
flutter-version: ${{ needs.setup.outputs.flutter-version }}
|
||||
cache: true
|
||||
|
||||
- name: Cache pub dependencies
|
||||
@@ -68,12 +79,8 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: flutter pub get
|
||||
|
||||
- name: Stub .env
|
||||
run: cp .env.example .env
|
||||
|
||||
- name: Run tests
|
||||
run: flutter test --coverage --dart-define-from-file=.env
|
||||
|
||||
run: flutter test --coverage
|
||||
- name: Upload coverage
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
@@ -86,30 +93,37 @@ jobs:
|
||||
uses: chenasraf/workflows/.github/workflows/release-please-fastlane-changelog.yml@master
|
||||
with:
|
||||
release-type: dart
|
||||
fastlane-changelog-dirs: |
|
||||
fastlane/metadata/android/en-US/changelogs
|
||||
fastlane/metadata/ios/en-US/changelogs
|
||||
scopes: |
|
||||
ios: fastlane/metadata/ios/en-US/changelogs
|
||||
macos: fastlane/metadata/macos/en-US/changelogs
|
||||
desktop: fastlane/metadata/macos/en-US/changelogs
|
||||
apple: |
|
||||
fastlane/metadata/ios/en-US/changelogs
|
||||
fastlane/metadata/macos/en-US/changelogs
|
||||
android: fastlane/metadata/android/en-US/changelogs
|
||||
|
||||
build-android:
|
||||
needs: release-please
|
||||
needs: [setup, release-please]
|
||||
if: ${{ needs.release-please.outputs.release_created }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ needs.release-please.outputs.tag_name }}
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
cache: 'gradle'
|
||||
distribution: "temurin"
|
||||
java-version: "17"
|
||||
cache: "gradle"
|
||||
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
flutter-version: ${{ needs.setup.outputs.flutter-version }}
|
||||
cache: true
|
||||
|
||||
- name: Cache pub dependencies
|
||||
@@ -123,8 +137,8 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: flutter pub get
|
||||
|
||||
- name: Create .env
|
||||
run: cp .env.example .env
|
||||
- name: Remove JNI build-id for reproducible builds
|
||||
run: sed -i -e 's/-Wl,/-Wl,--build-id=none,/' $PUB_CACHE/hosted/pub.dev/jni-*/src/CMakeLists.txt
|
||||
|
||||
- name: Decode keystore
|
||||
run: echo ${{ secrets.ANDROID_KEYSTORE_BASE64 }} | base64 -d > android/app/upload-keystore.jks
|
||||
@@ -138,23 +152,35 @@ jobs:
|
||||
storeFile=upload-keystore.jks
|
||||
EOF
|
||||
|
||||
- name: Build APK
|
||||
run: flutter build apk --release --obfuscate --split-debug-info=build/debug-info-apk --dart-define-from-file=.env
|
||||
- name: Print signing key SHA-256
|
||||
run: |
|
||||
keytool -list -v -keystore android/app/upload-keystore.jks \
|
||||
-alias ${{ secrets.ANDROID_KEY_ALIAS }} \
|
||||
-storepass ${{ secrets.ANDROID_STORE_PASSWORD }} \
|
||||
2>/dev/null | grep "SHA256:" | awk '{print $2}'
|
||||
|
||||
- name: Build split APKs
|
||||
run: flutter build apk --release --split-per-abi
|
||||
|
||||
- name: Build App Bundle
|
||||
run: flutter build appbundle --release --obfuscate --split-debug-info=build/debug-info-aab --dart-define-from-file=.env
|
||||
|
||||
run: flutter build appbundle --release --obfuscate --split-debug-info=build/debug-info-aab
|
||||
- name: Rename artifacts
|
||||
run: |
|
||||
mv build/app/outputs/flutter-apk/app-release.apk build/app/outputs/flutter-apk/pantry-${{ needs.release-please.outputs.version }}.apk
|
||||
mv build/app/outputs/bundle/release/app-release.aab build/app/outputs/bundle/release/pantry-${{ needs.release-please.outputs.version }}.aab
|
||||
VERSION=${{ needs.release-please.outputs.version }}
|
||||
APK_DIR=build/app/outputs/flutter-apk
|
||||
mv ${APK_DIR}/app-armeabi-v7a-release.apk ${APK_DIR}/pantry-${VERSION}-armeabi-v7a.apk
|
||||
mv ${APK_DIR}/app-arm64-v8a-release.apk ${APK_DIR}/pantry-${VERSION}-arm64-v8a.apk
|
||||
mv ${APK_DIR}/app-x86_64-release.apk ${APK_DIR}/pantry-${VERSION}-x86_64.apk
|
||||
mv build/app/outputs/bundle/release/app-release.aab build/app/outputs/bundle/release/pantry-${VERSION}.aab
|
||||
|
||||
- name: Upload APK to release
|
||||
- name: Upload APKs to release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: ${{ needs.release-please.outputs.tag_name }}
|
||||
files: |
|
||||
build/app/outputs/flutter-apk/pantry-${{ needs.release-please.outputs.version }}.apk
|
||||
build/app/outputs/flutter-apk/pantry-${{ needs.release-please.outputs.version }}-armeabi-v7a.apk
|
||||
build/app/outputs/flutter-apk/pantry-${{ needs.release-please.outputs.version }}-arm64-v8a.apk
|
||||
build/app/outputs/flutter-apk/pantry-${{ needs.release-please.outputs.version }}-x86_64.apk
|
||||
|
||||
- name: Upload App Bundle to release
|
||||
uses: softprops/action-gh-release@v2
|
||||
@@ -164,18 +190,20 @@ jobs:
|
||||
build/app/outputs/bundle/release/pantry-${{ needs.release-please.outputs.version }}.aab
|
||||
|
||||
build-ios:
|
||||
needs: release-please
|
||||
needs: [setup, release-please]
|
||||
if: false # TEMPORARILY DISABLED — was: ${{ needs.release-please.outputs.release_created }}
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ needs.release-please.outputs.tag_name }}
|
||||
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
flutter-version: ${{ needs.setup.outputs.flutter-version }}
|
||||
cache: true
|
||||
|
||||
- name: Cache pub dependencies
|
||||
@@ -198,12 +226,8 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: flutter pub get
|
||||
|
||||
- name: Create .env
|
||||
run: cp .env.example .env
|
||||
|
||||
- name: Build iOS (no codesign)
|
||||
run: flutter build ios --release --no-codesign --obfuscate --split-debug-info=build/debug-info-ios --dart-define-from-file=.env
|
||||
|
||||
run: flutter build ios --release --no-codesign --obfuscate --split-debug-info=build/debug-info-ios
|
||||
- name: Create unsigned IPA
|
||||
run: |
|
||||
mkdir -p build/ios/ipa
|
||||
|
||||
5
.gitignore
vendored
@@ -47,6 +47,8 @@ app.*.map.json
|
||||
|
||||
# Environment
|
||||
.env
|
||||
.envrc
|
||||
/.flutter-flags.yml
|
||||
|
||||
# Android signing
|
||||
android/key.properties
|
||||
@@ -57,4 +59,5 @@ android/app/*.keystore
|
||||
fastlane/play-store-key.json
|
||||
fastlane/.image_hashes.json
|
||||
fastlane/report.xml
|
||||
/.envrc
|
||||
fastlane/Preview.html
|
||||
fastlane/metadata/ios/en-US/release_notes.txt
|
||||
|
||||
154
CHANGELOG.md
@@ -1,5 +1,159 @@
|
||||
# Changelog
|
||||
|
||||
## [0.13.1](https://github.com/chenasraf/pantry-flutter/compare/v0.13.0...v0.13.1) (2026-05-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **checklists:** auto-dismiss item check snackbar after 6 seconds ([4e53481](https://github.com/chenasraf/pantry-flutter/commit/4e53481cdfcdba1d75cebadffb023b6a92b3df75))
|
||||
* **macos:** esc to dismiss would ring bell and not work ([116eb18](https://github.com/chenasraf/pantry-flutter/commit/116eb18693137a0d8733c903d0f66a4e67f3210a))
|
||||
|
||||
## [0.13.0](https://github.com/chenasraf/pantry-flutter/compare/v0.12.0...v0.13.0) (2026-05-15)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add trash view ([eb4d8d3](https://github.com/chenasraf/pantry-flutter/commit/eb4d8d3c509e6fe1c6ef998caaa58f6bd9a55a53))
|
||||
* add undo action for checking items ([ddf0c36](https://github.com/chenasraf/pantry-flutter/commit/ddf0c365a1ea4fb27f66fc19a7c5ffd7d72f6de7))
|
||||
* improve ui for larger devices ([eafc267](https://github.com/chenasraf/pantry-flutter/commit/eafc267e92b275796e1edb746c3c3b9dc75925e7))
|
||||
* **ios:** open full file picker when running on macOS ([00241b8](https://github.com/chenasraf/pantry-flutter/commit/00241b8aceeda5175e0989f017031a94b6c53581))
|
||||
* **macos:** go back by using Esc key ([88e153b](https://github.com/chenasraf/pantry-flutter/commit/88e153b96f249f4a8d8f19465a31cde7aa3ac8e0))
|
||||
* switch between photos in photo view ([cf9135e](https://github.com/chenasraf/pantry-flutter/commit/cf9135e0695f70b8c8c658421306f6cda610b6b4))
|
||||
|
||||
## [0.12.0](https://github.com/chenasraf/pantry-flutter/compare/v0.11.0...v0.12.0) (2026-05-15)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add setting to show spacing between categories in checklist items ([689e4d6](https://github.com/chenasraf/pantry-flutter/commit/689e4d6cad89a84621b77e300198d12ac43131ff))
|
||||
* create new lists from the list selector ([41e8ac1](https://github.com/chenasraf/pantry-flutter/commit/41e8ac13a0ab78436bc2674220ed282f8410862d))
|
||||
* share photos, links, and text to Pantry from other apps ([60b16aa](https://github.com/chenasraf/pantry-flutter/commit/60b16aad309ec0f02b542c53a7bfafb9f9652da3))
|
||||
* take photos directly from the photo board ([d880269](https://github.com/chenasraf/pantry-flutter/commit/d8802690c0a3ab80346f84ea1df4b3774ba6e4ee))
|
||||
|
||||
## [0.11.0](https://github.com/chenasraf/pantry-flutter/compare/v0.10.1...v0.11.0) (2026-05-12)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add setting to require checkbox tap to complete checklist items ([ef2bc85](https://github.com/chenasraf/pantry-flutter/commit/ef2bc851deedc180dda51fbfb7378aef7145cf5f))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* preserve subpath for Nextcloud instances hosted on sub-paths ([0c575ea](https://github.com/chenasraf/pantry-flutter/commit/0c575eaa2601dc8c83c6b874f2d81b54a0f6bf01))
|
||||
|
||||
## [0.10.1](https://github.com/chenasraf/pantry-flutter/compare/v0.10.0...v0.10.1) (2026-04-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* make markdown links clickable ([7b5f9c1](https://github.com/chenasraf/pantry-flutter/commit/7b5f9c151845dde90275a8289b3114483d2b214d))
|
||||
|
||||
## [0.10.0](https://github.com/chenasraf/pantry-flutter/compare/v0.9.10...v0.10.0) (2026-04-21)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* update notes view & edit ui ([36a74b3](https://github.com/chenasraf/pantry-flutter/commit/36a74b39e1beb37fc2f1446f8d45945a22289c6b))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* bug where note grid would not clip correctly ([08159fa](https://github.com/chenasraf/pantry-flutter/commit/08159faec22422da983f23685c53b45088d74b2a))
|
||||
|
||||
## [0.9.10](https://github.com/chenasraf/pantry-flutter/compare/v0.9.9...v0.9.10) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* fix signing ([9f45b23](https://github.com/chenasraf/pantry-flutter/commit/9f45b2344ef87708d55889e8fb80f465808fb0c7))
|
||||
|
||||
## [0.9.9](https://github.com/chenasraf/pantry-flutter/compare/v0.9.8...v0.9.9) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* re-sign with stripping ([852e9c4](https://github.com/chenasraf/pantry-flutter/commit/852e9c47f3cf11145a72ed78b6415ecd0da2b111))
|
||||
|
||||
## [0.9.8](https://github.com/chenasraf/pantry-flutter/compare/v0.9.7...v0.9.8) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* strip deps metadata from build ([132d9e3](https://github.com/chenasraf/pantry-flutter/commit/132d9e33a6662554149a7941053594c6c7ab9043))
|
||||
|
||||
## [0.9.7](https://github.com/chenasraf/pantry-flutter/compare/v0.9.6...v0.9.7) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* disable deps metadata in apk ([7ea2901](https://github.com/chenasraf/pantry-flutter/commit/7ea2901867b25e2c4bcd46cd744af7b12656b6dd))
|
||||
|
||||
## [0.9.6](https://github.com/chenasraf/pantry-flutter/compare/v0.9.5...v0.9.6) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* remove zipalign ([b1d7ecc](https://github.com/chenasraf/pantry-flutter/commit/b1d7eccd822fcbac56683a4085a329784c71ca7f))
|
||||
|
||||
## [0.9.5](https://github.com/chenasraf/pantry-flutter/compare/v0.9.4...v0.9.5) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* zipalign ([6d2173f](https://github.com/chenasraf/pantry-flutter/commit/6d2173f08d72d8e188c9a4aabe044ff922d4b32f))
|
||||
|
||||
## [0.9.4](https://github.com/chenasraf/pantry-flutter/compare/v0.9.3...v0.9.4) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* remove apk obfuscation ([d41d2b8](https://github.com/chenasraf/pantry-flutter/commit/d41d2b81beb512384cb3c2978bebd201c3bf53a0))
|
||||
|
||||
## [0.9.3](https://github.com/chenasraf/pantry-flutter/compare/v0.9.2...v0.9.3) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* upgrade flutter version ([3e4051a](https://github.com/chenasraf/pantry-flutter/commit/3e4051a8462271543381496a9d60a22239b8d8da))
|
||||
|
||||
## [0.9.2](https://github.com/chenasraf/pantry-flutter/compare/v0.9.1...v0.9.2) (2026-04-19)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* reproducible build ([9d4c832](https://github.com/chenasraf/pantry-flutter/commit/9d4c8327b035eb0433d6d0a571af406ffca84f83))
|
||||
|
||||
## [0.9.1](https://github.com/chenasraf/pantry-flutter/compare/v0.9.0...v0.9.1) (2026-04-18)
|
||||
|
||||
|
||||
### Build System
|
||||
|
||||
* add abi split ([7d0c793](https://github.com/chenasraf/pantry-flutter/commit/7d0c7932ea9bf18d5ff391351f0058889abba5d8))
|
||||
|
||||
## [0.9.0](https://github.com/chenasraf/pantry-flutter/compare/v0.8.0...v0.9.0) (2026-04-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add search in lists ([eb797dd](https://github.com/chenasraf/pantry-flutter/commit/eb797dd0e87f7eb14576a3bdf7e77f9fe1c0cb09))
|
||||
* allow uploading list item image ([7243e43](https://github.com/chenasraf/pantry-flutter/commit/7243e43bbbfe8072327fc921ed2a4ffba228bd3f))
|
||||
|
||||
## [0.8.0](https://github.com/chenasraf/pantry-flutter/compare/v0.7.1...v0.8.0) (2026-04-16)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add more icons to categories ([179c6d7](https://github.com/chenasraf/pantry-flutter/commit/179c6d781c1342434608b9af88daa807795c9a46))
|
||||
* allow adding one-off list items ([a447fe1](https://github.com/chenasraf/pantry-flutter/commit/a447fe1c8a1d9de655c081015f287afeba75bee1))
|
||||
|
||||
## [0.7.1](https://github.com/chenasraf/pantry-flutter/compare/v0.7.0...v0.7.1) (2026-04-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* about urls not opening ([64af382](https://github.com/chenasraf/pantry-flutter/commit/64af382f10bd696f05a23d31ee8e04d746fc4b46))
|
||||
|
||||
## [0.7.0](https://github.com/chenasraf/pantry-flutter/compare/v0.6.0...v0.7.0) (2026-04-14)
|
||||
|
||||
|
||||
|
||||
75
Gemfile.lock
@@ -8,8 +8,8 @@ GEM
|
||||
artifactory (3.0.17)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.4.0)
|
||||
aws-partitions (1.1237.0)
|
||||
aws-sdk-core (3.244.0)
|
||||
aws-partitions (1.1246.0)
|
||||
aws-sdk-core (3.246.0)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
@@ -17,19 +17,19 @@ GEM
|
||||
bigdecimal
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
logger
|
||||
aws-sdk-kms (1.123.0)
|
||||
aws-sdk-kms (1.124.0)
|
||||
aws-sdk-core (~> 3, >= 3.244.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.219.0)
|
||||
aws-sdk-s3 (1.221.0)
|
||||
aws-sdk-core (~> 3, >= 3.244.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.12.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
base64 (0.2.0)
|
||||
base64 (0.3.0)
|
||||
benchmark (0.5.0)
|
||||
bigdecimal (4.1.1)
|
||||
bigdecimal (4.1.2)
|
||||
claide (1.1.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
@@ -72,14 +72,14 @@ GEM
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.4.1)
|
||||
fastlane (2.232.2)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
abbrev (~> 0.1.2)
|
||||
fastlane (2.234.0)
|
||||
CFPropertyList (>= 2.3, < 5.0.0)
|
||||
abbrev (~> 0.1)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
aws-sdk-s3 (~> 1.197)
|
||||
babosa (>= 1.0.3, < 2.0.0)
|
||||
base64 (~> 0.2.0)
|
||||
base64 (~> 0.2)
|
||||
benchmark (>= 0.1.0)
|
||||
bundler (>= 1.17.3, < 5.0.0)
|
||||
colored (~> 1.2)
|
||||
@@ -92,7 +92,7 @@ GEM
|
||||
faraday-cookie_jar (~> 0.0.6)
|
||||
faraday_middleware (~> 1.0)
|
||||
fastimage (>= 2.1.0, < 3.0.0)
|
||||
fastlane-sirp (>= 1.0.0)
|
||||
fastlane-sirp (>= 1.1.0)
|
||||
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||
google-apis-androidpublisher_v3 (~> 0.3)
|
||||
google-apis-playcustomapp_v1 (~> 0.1)
|
||||
@@ -105,9 +105,9 @@ GEM
|
||||
logger (>= 1.6, < 2.0)
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multipart-post (>= 2.0.0, < 3.0.0)
|
||||
mutex_m (~> 0.3.0)
|
||||
mutex_m (~> 0.3)
|
||||
naturally (~> 2.2)
|
||||
nkf (~> 0.2.0)
|
||||
nkf (~> 0.2)
|
||||
optparse (>= 0.1.1, < 1.0.0)
|
||||
ostruct (>= 0.1.0)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
@@ -122,10 +122,9 @@ GEM
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.4.1)
|
||||
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
|
||||
fastlane-sirp (1.0.0)
|
||||
sysrandom (~> 1.0)
|
||||
fastlane-sirp (1.1.0)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.98.0)
|
||||
google-apis-androidpublisher_v3 (0.100.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-apis-core (0.18.0)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
@@ -135,11 +134,11 @@ GEM
|
||||
mutex_m
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.a)
|
||||
google-apis-iamcredentials_v1 (0.26.0)
|
||||
google-apis-iamcredentials_v1 (0.27.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.17.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-apis-storage_v1 (0.61.0)
|
||||
google-apis-storage_v1 (0.62.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-cloud-core (1.8.0)
|
||||
google-cloud-env (>= 1.0, < 3.a)
|
||||
@@ -147,7 +146,7 @@ GEM
|
||||
google-cloud-env (2.1.1)
|
||||
faraday (>= 1.0, < 3.a)
|
||||
google-cloud-errors (1.6.0)
|
||||
google-cloud-storage (1.59.0)
|
||||
google-cloud-storage (1.60.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-core (>= 0.18, < 2)
|
||||
@@ -169,13 +168,13 @@ GEM
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
jmespath (1.6.2)
|
||||
json (2.19.3)
|
||||
json (2.19.5)
|
||||
jwt (2.10.2)
|
||||
base64
|
||||
logger (1.7.0)
|
||||
mini_magick (4.13.2)
|
||||
mini_mime (1.1.5)
|
||||
multi_json (1.19.1)
|
||||
multi_json (1.21.1)
|
||||
multipart-post (2.4.1)
|
||||
mutex_m (0.3.0)
|
||||
nanaimo (0.4.0)
|
||||
@@ -186,7 +185,7 @@ GEM
|
||||
ostruct (0.6.3)
|
||||
plist (3.7.2)
|
||||
public_suffix (7.0.5)
|
||||
rake (13.3.1)
|
||||
rake (13.4.2)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
@@ -205,7 +204,6 @@ GEM
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
naturally
|
||||
sysrandom (1.0.5)
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
@@ -243,15 +241,15 @@ CHECKSUMS
|
||||
artifactory (3.0.17) sha256=3023d5c964c31674090d655a516f38ca75665c15084140c08b7f2841131af263
|
||||
atomos (0.1.3) sha256=7d43b22f2454a36bace5532d30785b06de3711399cb1c6bf932573eda536789f
|
||||
aws-eventstream (1.4.0) sha256=116bf85c436200d1060811e6f5d2d40c88f65448f2125bc77ffce5121e6e183b
|
||||
aws-partitions (1.1237.0) sha256=9b82f529b69ad83a8e4c5e123038924ed5e8f59bd6064a293ef20efc63364841
|
||||
aws-sdk-core (3.244.0) sha256=3e458c078b0c5bdee95bc370c3a483374b3224cf730c1f9f0faf849a5d9a18ea
|
||||
aws-sdk-kms (1.123.0) sha256=d405f37e82f8fa32045ca8980be266c0b45b37aaf2012afe0254321a1e811f20
|
||||
aws-sdk-s3 (1.219.0) sha256=6a755d7377978525758b3c29185ca6a10128ce2b07555ca37c4549de10c2f1c7
|
||||
aws-partitions (1.1246.0) sha256=809cd7d38b7ba4ea651c9879248ecf9fd0f8289412e76f26478d2b37064faa1d
|
||||
aws-sdk-core (3.246.0) sha256=393864ec8948560e69fcccc2e4d256b40c7028eb98930608dd295279e3c4ddcc
|
||||
aws-sdk-kms (1.124.0) sha256=40d00ab706d7e49fd620270bd0dcb546f266295abdd49b54fec2611e2a41f37c
|
||||
aws-sdk-s3 (1.221.0) sha256=a05488eab2083a1e90b02e18479d8f65e401081d671b2d138992a2c5fef85491
|
||||
aws-sigv4 (1.12.1) sha256=6973ff95cb0fd0dc58ba26e90e9510a2219525d07620c8babeb70ef831826c00
|
||||
babosa (1.0.4) sha256=18dea450f595462ed7cb80595abd76b2e535db8c91b350f6c4b3d73986c5bc99
|
||||
base64 (0.2.0) sha256=0f25e9b21a02a0cc0cea8ef92b2041035d39350946e8789c562b2d1a3da01507
|
||||
base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
|
||||
benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c
|
||||
bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca
|
||||
bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
|
||||
claide (1.1.0) sha256=6d3c5c089dde904d96aa30e73306d0d4bd444b1accb9b3125ce14a3c0183f82e
|
||||
colored (1.2) sha256=9d82b47ac589ce7f6cab64b1f194a2009e9fd00c326a5357321f44afab2c1d2c
|
||||
colored2 (3.1.2) sha256=b13c2bd7eeae2cf7356a62501d398e72fde78780bd26aec6a979578293c28b4a
|
||||
@@ -277,29 +275,29 @@ CHECKSUMS
|
||||
faraday-retry (1.0.4) sha256=dc659233777fabf96c69c2ffe56c0a5d2c102af90321a42cc6c90157bcd716aa
|
||||
faraday_middleware (1.2.1) sha256=d45b78c8ee864c4783fbc276f845243d4a7918a67301c052647bacabec0529e9
|
||||
fastimage (2.4.1) sha256=c64bebd46b6fd8943ab70c1e6e85ff728f970f2e48f92ecd249b6bc3a540ad20
|
||||
fastlane (2.232.2) sha256=978689f60f0fc3d54699de86ef12be4eda9f5b52217c1798965257c390d2b112
|
||||
fastlane-sirp (1.0.0) sha256=66478f25bcd039ec02ccf65625373fca29646fa73d655eb533c915f106c5e641
|
||||
fastlane (2.234.0) sha256=b74835681ad9a8e9c0931a5727dad1bab433895ac534c864a1ed5749625d26e9
|
||||
fastlane-sirp (1.1.0) sha256=10bc94f9682efd8e1badfb31452a76dd8981f1f3a33717c765fde6d75b54d847
|
||||
gh_inspector (1.1.3) sha256=04cca7171b87164e053aa43147971d3b7f500fcb58177698886b48a9fc4a1939
|
||||
google-apis-androidpublisher_v3 (0.98.0) sha256=094fb952419c1131c16c4dfa66e0c96e6a2fa33adbe266f614b84b22cbc8c5cb
|
||||
google-apis-androidpublisher_v3 (0.100.0) sha256=7a82935bee985190e8fe23bf5e53df3a27d65dd084114bb71b846b617de16489
|
||||
google-apis-core (0.18.0) sha256=96b057816feeeab448139ed5b5c78eab7fc2a9d8958f0fbc8217dedffad054ee
|
||||
google-apis-iamcredentials_v1 (0.26.0) sha256=3ff70a10a1d6cddf2554e95b7c5df2c26afdeaeb64100048a355194da19e48a3
|
||||
google-apis-iamcredentials_v1 (0.27.0) sha256=9289f29968610754ef11d98b9ec627f0153f3e2616fef839aef096de529f6d1e
|
||||
google-apis-playcustomapp_v1 (0.17.0) sha256=d5bc90b705f3f862bab4998086449b0abe704ee1685a84821daa90ca7fa95a78
|
||||
google-apis-storage_v1 (0.61.0) sha256=b330e599b58e6a01533c189525398d6dbdbaf101ffb0c60145940b57e1c982e8
|
||||
google-apis-storage_v1 (0.62.0) sha256=f62467c36df53287fb0252ebb4da85f9e25d7b4c5809d045c2aab1fc307760c1
|
||||
google-cloud-core (1.8.0) sha256=e572edcbf189cfcab16590628a516cec3f4f63454b730e59f0b36575120281cf
|
||||
google-cloud-env (2.1.1) sha256=cf4bb8c7d517ee1ea692baedf06e0b56ce68007549d8d5a66481aa9f97f46999
|
||||
google-cloud-errors (1.6.0) sha256=1da8476dd706ad04b9d32e3c4b90d07d3463b37d6407cb56d41342ea7647d0a1
|
||||
google-cloud-storage (1.59.0) sha256=b8c9a5661d775d65ccb279bb1d6be07fd8152576eb0146c2026bd023c4b186b9
|
||||
google-cloud-storage (1.60.0) sha256=b21b752d37945d678a4533be5ef4303f15d33a964d8bc709c7c41c3600f650db
|
||||
googleauth (1.11.2) sha256=7e6bacaeed7aea3dd66dcea985266839816af6633e9f5983c3c2e0e40a44731e
|
||||
highline (2.0.3) sha256=2ddd5c127d4692721486f91737307236fe005352d12a4202e26c48614f719479
|
||||
http-cookie (1.0.8) sha256=b14fe0445cf24bf9ae098633e9b8d42e4c07c3c1f700672b09fbfe32ffd41aa6
|
||||
httpclient (2.9.0) sha256=4b645958e494b2f86c2f8a2f304c959baa273a310e77a2931ddb986d83e498c8
|
||||
jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1
|
||||
json (2.19.3) sha256=289b0bb53052a1fa8c34ab33cc750b659ba14a5c45f3fcf4b18762dc67c78646
|
||||
json (2.19.5) sha256=218a18553e4801d579ca7e0f5bc72bafd776d7397238a1fb4e74db5b0a812c59
|
||||
jwt (2.10.2) sha256=31e1ee46f7359883d5e622446969fe9c118c3da87a0b1dca765ce269c3a0c4f4
|
||||
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
|
||||
mini_magick (4.13.2) sha256=71d6258e0e8a3d04a9a0a09784d5d857b403a198a51dd4f882510435eb95ddd9
|
||||
mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
|
||||
multi_json (1.19.1) sha256=7aefeff8f2c854bf739931a238e4aea64592845e0c0395c8a7d2eea7fdd631b7
|
||||
multi_json (1.21.1) sha256=e6126a31808e3b4d19f483c775ceac34df190dffa62adfb63a165ee14ba68080
|
||||
multipart-post (2.4.1) sha256=9872d03a8e552020ca096adadbf5e3cb1cd1cdd6acd3c161136b8a5737cdb4a8
|
||||
mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751
|
||||
nanaimo (0.4.0) sha256=faf069551bab17f15169c1f74a1c73c220657e71b6e900919897a10d991d0723
|
||||
@@ -310,7 +308,7 @@ CHECKSUMS
|
||||
ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912
|
||||
plist (3.7.2) sha256=d37a4527cc1116064393df4b40e1dbbc94c65fa9ca2eec52edf9a13616718a42
|
||||
public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623
|
||||
rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
|
||||
rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
|
||||
representable (3.2.0) sha256=cc29bf7eebc31653586849371a43ffe36c60b54b0a6365b5f7d95ec34d1ebace
|
||||
retriable (3.4.1) sha256=fb3f114b7d492121c158c01f3d5152b5a615c5b70d5877d0bc08c7ec3725c3bc
|
||||
rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142
|
||||
@@ -320,7 +318,6 @@ CHECKSUMS
|
||||
security (0.1.5) sha256=3a977a0eca7706e804c96db0dd9619e0a94969fe3aac9680fcfc2bf9b8a833b7
|
||||
signet (0.21.0) sha256=d617e9fbf24928280d39dcfefba9a0372d1c38187ffffd0a9283957a10a8cd5b
|
||||
simctl (1.6.10) sha256=b99077f4d13ad81eace9f86bf5ba4df1b0b893a4d1b368bd3ed59b5b27f9236b
|
||||
sysrandom (1.0.5) sha256=5ac1ac3c2ec64ef76ac91018059f541b7e8f437fbda1ccddb4f2c56a9ccf1e75
|
||||
terminal-notifier (2.0.0) sha256=7a0d2b2212ab9835c07f4b2e22a94cff64149dba1eed203c04835f7991078cea
|
||||
terminal-table (3.0.2) sha256=f951b6af5f3e00203fb290a669e0a85c5dd5b051b3b023392ccfd67ba5abae91
|
||||
trailblazer-option (0.1.2) sha256=20e4f12ea4e1f718c8007e7944ca21a329eee4eed9e0fa5dde6e8ad8ac4344a3
|
||||
|
||||
115
Makefile
@@ -18,7 +18,6 @@ help:
|
||||
@echo ""
|
||||
@echo " Development:"
|
||||
@echo " run Run the app in debug mode"
|
||||
@echo " webapp-run Run the web app in default browser"
|
||||
@echo " format Format all Dart files"
|
||||
@echo " analyze Analyze all Dart files"
|
||||
@echo " check Check all files (format + analyze, no changes)"
|
||||
@@ -37,23 +36,30 @@ help:
|
||||
@echo " Building:"
|
||||
@echo " android-install Build APK and install on connected device"
|
||||
@echo " android-build-apk Build Android APK"
|
||||
@echo " android-build-apk-split Build Android split-per-ABI APKs"
|
||||
@echo " android-build-aab Build Android App Bundle"
|
||||
@echo " android-push Build APK and push to device via adb"
|
||||
@echo " ios-build Build iOS (no codesign)"
|
||||
@echo " web-build Build web app"
|
||||
@echo " macos-build Build macOS app (.app bundle, no codesign)"
|
||||
@echo " macos-build-pkg Build signed macOS .pkg for App Store"
|
||||
@echo " build-all Build all platforms"
|
||||
@echo ""
|
||||
@echo " Release:"
|
||||
@echo " android-release-apk Build APK and copy to build/release/"
|
||||
@echo " android-release-aab Build AAB and copy to build/release/"
|
||||
@echo " ios-release Build iOS and create unsigned IPA in build/release/"
|
||||
@echo " web-release Build web and create zip in build/release/"
|
||||
@echo " ios-release Build IPA and copy to build/release/"
|
||||
@echo " macos-release Build PKG and copy to build/release/"
|
||||
@echo " release-all Build and release all platforms"
|
||||
@echo ""
|
||||
@echo " Deploying:"
|
||||
@echo " android-deploy Build AAB and upload to Google Play (TRACK=internal|beta|production, STATUS=draft|completed)"
|
||||
@echo " android-promote Promote release between tracks (FROM=internal, TO=production, STATUS=draft|completed)"
|
||||
@echo " ios-deploy Build IPA and upload (DEST=testflight|appstore, default: testflight)"
|
||||
@echo " ios-submit Submit the existing App Store build for review (no upload)"
|
||||
@echo " macos-deploy Build PKG and upload (DEST=testflight|appstore, default: testflight)"
|
||||
@echo " macos-submit Submit the existing Mac App Store build for review (no upload)"
|
||||
@echo " deploy-production Build and deploy to production (Google Play + App Store)"
|
||||
@echo " deploy-beta Build and deploy to beta (Google Play beta + TestFlight)"
|
||||
|
||||
# Setup
|
||||
.PHONY: get
|
||||
@@ -82,12 +88,7 @@ i18n-watch:
|
||||
# Development
|
||||
.PHONY: run
|
||||
run:
|
||||
flutter run --dart-define-from-file=.env
|
||||
|
||||
.PHONY: webapp-run
|
||||
webapp-run:
|
||||
open http://localhost:5111 & flutter run -d web-server --web-port=5111 --dart-define-from-file=.env
|
||||
|
||||
flutter run
|
||||
.PHONY: format
|
||||
format:
|
||||
dart format .
|
||||
@@ -105,21 +106,23 @@ check:
|
||||
.PHONY: test
|
||||
test:
|
||||
ifdef FILES
|
||||
flutter test $(FILES) --dart-define-from-file=.env
|
||||
flutter test $(FILES)
|
||||
else
|
||||
flutter test --dart-define-from-file=.env
|
||||
flutter test
|
||||
endif
|
||||
|
||||
.PHONY: test-coverage
|
||||
test-coverage:
|
||||
flutter test --coverage --dart-define-from-file=.env
|
||||
flutter test --coverage
|
||||
@echo "Coverage report generated at coverage/lcov.info"
|
||||
|
||||
# Building
|
||||
.PHONY: android-build-apk
|
||||
android-build-apk:
|
||||
flutter build apk --release --obfuscate --split-debug-info=build/debug-info-apk --dart-define-from-file=.env
|
||||
|
||||
flutter build apk --release --obfuscate --split-debug-info=build/debug-info-apk
|
||||
.PHONY: android-build-apk-split
|
||||
android-build-apk-split:
|
||||
flutter build apk --release --split-per-abi --obfuscate --split-debug-info=build/debug-info-apk
|
||||
.PHONY: android-install
|
||||
android-install: android-build-apk
|
||||
flutter install
|
||||
@@ -131,22 +134,36 @@ android-push: android-build-apk
|
||||
|
||||
.PHONY: android-build-aab
|
||||
android-build-aab:
|
||||
flutter build appbundle --release --obfuscate --split-debug-info=build/debug-info-aab --dart-define-from-file=.env
|
||||
|
||||
flutter build appbundle --release --obfuscate --split-debug-info=build/debug-info-aab
|
||||
.PHONY: ios-build
|
||||
ios-build:
|
||||
flutter build ios --release --no-codesign --obfuscate --split-debug-info=build/debug-info-ios --dart-define-from-file=.env
|
||||
|
||||
flutter build ios --release --no-codesign --obfuscate --split-debug-info=build/debug-info-ios
|
||||
.PHONY: ios-build-ipa
|
||||
ios-build-ipa:
|
||||
flutter build ipa --release --obfuscate --split-debug-info=build/debug-info-ios --dart-define-from-file=.env --export-options-plist=ios/ExportOptions.plist
|
||||
|
||||
.PHONY: web-build
|
||||
web-build:
|
||||
flutter build web --release --dart-define-from-file=.env
|
||||
.PHONY: macos-build
|
||||
macos-build:
|
||||
flutter build macos --release --obfuscate --split-debug-info=build/debug-info-macos
|
||||
|
||||
.PHONY: macos-build-pkg
|
||||
macos-build-pkg:
|
||||
flutter build macos --config-only --obfuscate --split-debug-info=build/debug-info-macos
|
||||
rm -rf build/macos/Runner.xcarchive build/macos/pkg
|
||||
xcodebuild -workspace macos/Runner.xcworkspace \
|
||||
-scheme Runner \
|
||||
-configuration Release \
|
||||
-archivePath build/macos/Runner.xcarchive \
|
||||
-allowProvisioningUpdates \
|
||||
archive
|
||||
xcodebuild -exportArchive \
|
||||
-archivePath build/macos/Runner.xcarchive \
|
||||
-exportPath build/macos/pkg \
|
||||
-exportOptionsPlist macos/ExportOptions.plist \
|
||||
-allowProvisioningUpdates
|
||||
|
||||
.PHONY: build-all
|
||||
build-all: android-build-apk android-build-aab web-build
|
||||
build-all: android-build-apk android-build-aab
|
||||
|
||||
# Release (build + copy renamed artifacts to build/release/)
|
||||
.PHONY: android-release-apk
|
||||
@@ -162,11 +179,17 @@ android-release-aab: android-build-aab
|
||||
@echo "-> build/release/pantry-$(VERSION).aab"
|
||||
|
||||
.PHONY: ios-release
|
||||
ios-release: ios-build
|
||||
ios-release: ios-build-ipa
|
||||
mkdir -p build/release
|
||||
cp build/ios/ipa/*.ipa build/release/pantry-$(VERSION).ipa
|
||||
@echo "-> build/release/pantry-$(VERSION).ipa"
|
||||
|
||||
.PHONY: macos-release
|
||||
macos-release: macos-build-pkg
|
||||
mkdir -p build/release
|
||||
cp build/macos/pkg/*.pkg build/release/pantry-$(VERSION).pkg
|
||||
@echo "-> build/release/pantry-$(VERSION).pkg"
|
||||
|
||||
.PHONY: android-upload
|
||||
android-upload:
|
||||
@echo "$(or $(TRACK),beta)" | grep -qE '^(internal|alpha|beta|production)$$' || (echo "Error: Invalid TRACK '$(TRACK)'. Must be: internal, alpha, beta, production"; exit 1)
|
||||
@@ -198,14 +221,41 @@ ios-upload:
|
||||
.PHONY: ios-deploy
|
||||
ios-deploy: ios-build-ipa ios-upload
|
||||
|
||||
.PHONY: web-release
|
||||
web-release: web-build
|
||||
mkdir -p build/release
|
||||
cd build/web && zip -r ../release/pantry-$(VERSION)-web.zip .
|
||||
@echo "-> build/release/pantry-$(VERSION)-web.zip"
|
||||
.PHONY: ios-submit
|
||||
ios-submit:
|
||||
bundle exec fastlane ios submit
|
||||
|
||||
.PHONY: macos-upload
|
||||
macos-upload:
|
||||
@echo "$(or $(DEST),testflight)" | grep -qE '^(testflight|appstore)$$' || (echo "Error: Invalid DEST '$(DEST)'. Must be: testflight, appstore"; exit 1)
|
||||
@echo "Destination: $(or $(DEST),testflight)"
|
||||
@if [ "$(or $(DEST),testflight)" = "appstore" ]; then \
|
||||
bundle exec fastlane mac release; \
|
||||
else \
|
||||
bundle exec fastlane mac beta; \
|
||||
fi
|
||||
|
||||
.PHONY: macos-deploy
|
||||
macos-deploy: macos-build-pkg macos-upload
|
||||
|
||||
.PHONY: macos-submit
|
||||
macos-submit:
|
||||
bundle exec fastlane mac submit
|
||||
|
||||
.PHONY: release-all
|
||||
release-all: build-clean android-release-apk android-release-aab web-release
|
||||
release-all: android-release-apk android-release-aab
|
||||
|
||||
.PHONY: deploy-production
|
||||
deploy-production:
|
||||
$(MAKE) android-deploy TRACK=production STATUS=completed
|
||||
$(MAKE) ios-deploy DEST=appstore
|
||||
$(MAKE) macos-deploy DEST=appstore
|
||||
|
||||
.PHONY: deploy-beta
|
||||
deploy-beta:
|
||||
$(MAKE) android-deploy TRACK=beta STATUS=completed
|
||||
$(MAKE) ios-deploy DEST=testflight
|
||||
$(MAKE) macos-deploy DEST=testflight
|
||||
|
||||
# CocoaPods
|
||||
.PHONY: pods
|
||||
@@ -241,11 +291,12 @@ endif
|
||||
.PHONY: icons
|
||||
icons:
|
||||
mkdir -p assets/icon
|
||||
rsvg-convert -h 1024 assets/logo_icon.svg > assets/icon/icon.png
|
||||
rsvg-convert -w 1024 -h 1024 assets/logo_icon_squircle.svg > assets/icon/icon.png
|
||||
rsvg-convert -w 1024 -h 1024 assets/logo_icon_square.svg > assets/icon/icon_ios.png
|
||||
rsvg-convert -w 1024 -h 1024 assets/logo_icon_foreground.svg > assets/icon/icon_foreground.png
|
||||
rsvg-convert -w 1024 -h 1024 assets/logo_icon_macos.svg > assets/icon/icon_macos.png
|
||||
dart run flutter_launcher_icons
|
||||
cp assets/icon/icon_ios.png fastlane/metadata/android/en-US/images/icon.png
|
||||
rsvg-convert -w 512 -h 512 assets/logo_icon_squircle.svg > fastlane/metadata/android/en-US/images/icon.png
|
||||
|
||||
.PHONY: splash
|
||||
splash:
|
||||
|
||||
@@ -43,9 +43,9 @@ It may take a few minutes for your tester status to propagate.
|
||||
Download the latest APK from the
|
||||
[releases page](https://github.com/chenasraf/pantry-flutter/releases) and sideload onto your device.
|
||||
|
||||
### iOS
|
||||
### App Store (iOS)
|
||||
|
||||
[Coming soon — TestFlight]
|
||||
[Install from the App Store](https://apps.apple.com/us/app/pantry-for-nextcloud/id6762161619)
|
||||
|
||||
## Development
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ plugins {
|
||||
id("dev.flutter.flutter-gradle-plugin")
|
||||
}
|
||||
|
||||
import com.android.build.gradle.internal.api.ApkVariantOutputImpl
|
||||
import java.io.FileInputStream
|
||||
import java.util.Properties
|
||||
|
||||
@@ -48,7 +49,16 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
dependenciesInfo {
|
||||
includeInApk = false
|
||||
includeInBundle = false
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
applicationIdSuffix = ".debug"
|
||||
versionNameSuffix = "-dev"
|
||||
}
|
||||
release {
|
||||
signingConfig = if (signingConfigs.names.contains("release"))
|
||||
signingConfigs.getByName("release")
|
||||
@@ -58,6 +68,17 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
val abiCodes = mapOf("armeabi-v7a" to 1, "arm64-v8a" to 2, "x86_64" to 3)
|
||||
android.applicationVariants.configureEach {
|
||||
val variant = this
|
||||
variant.outputs.forEach { output ->
|
||||
val abiVersionCode = abiCodes[output.filters.find { it.filterType == "ABI" }?.identifier]
|
||||
if (abiVersionCode != null) {
|
||||
(output as ApkVariantOutputImpl).versionCodeOverride = variant.versionCode * 10 + abiVersionCode
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flutter {
|
||||
source = "../.."
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
<application android:label="Pantry Dev" tools:replace="android:label" />
|
||||
</manifest>
|
||||
|
||||
@@ -27,6 +27,21 @@
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="image/*" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="image/*" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="text/plain" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 5.8 KiB |
@@ -17,6 +17,24 @@ subprojects {
|
||||
}
|
||||
subprojects {
|
||||
project.evaluationDependsOn(":app")
|
||||
|
||||
// Force any Flutter plugin subproject (e.g. receive_sharing_intent)
|
||||
// that defaults to a different Kotlin jvmTarget to match this app's
|
||||
// Java/Kotlin compatibility, avoiding "Inconsistent JVM Target
|
||||
// Compatibility Between Java and Kotlin Tasks" build failures.
|
||||
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile>().configureEach {
|
||||
compilerOptions {
|
||||
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
plugins.withId("com.android.library") {
|
||||
extensions.configure<com.android.build.gradle.LibraryExtension>("android") {
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register<Delete>("clean") {
|
||||
|
||||
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 29 KiB |
BIN
assets/icon/icon_macos.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
39
assets/logo_icon_macos.svg
Normal file
@@ -0,0 +1,39 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
|
||||
<defs>
|
||||
<clipPath id="squircle">
|
||||
<path transform="translate(100 100) scale(1.609375)" d="
|
||||
M256,0 C353,0 406,0 443,18 C468,30 482,44 494,69
|
||||
C512,106 512,159 512,256 C512,353 512,406 494,443
|
||||
C482,468 468,482 443,494 C406,512 353,512 256,512
|
||||
C159,512 106,512 69,494 C44,482 30,468 18,443
|
||||
C0,406 0,353 0,256 C0,159 0,106 18,69
|
||||
C30,44 44,30 69,18 C106,0 159,0 256,0 Z"/>
|
||||
</clipPath>
|
||||
<filter id="dropShadow" x="-10%" y="-10%" width="120%" height="125%">
|
||||
<feGaussianBlur in="SourceAlpha" stdDeviation="14"/>
|
||||
<feOffset dy="14"/>
|
||||
<feComponentTransfer>
|
||||
<feFuncA type="linear" slope="0.35"/>
|
||||
</feComponentTransfer>
|
||||
<feMerge>
|
||||
<feMergeNode/>
|
||||
<feMergeNode in="SourceGraphic"/>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<linearGradient id="topLight" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#FFFFFF" stop-opacity="0.22"/>
|
||||
<stop offset="0.55" stop-color="#FFFFFF" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#000000" stop-opacity="0.12"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<g filter="url(#dropShadow)">
|
||||
<g clip-path="url(#squircle)">
|
||||
<rect width="1024" height="1024" fill="#0082C9"/>
|
||||
<g transform="translate(100 100) scale(1.609375) translate(106 106) scale(12.5)">
|
||||
<path fill="#FFFFFF" d="M12,3L2,12H5V20H19V12H22L12,3M12,8.75A2.25,2.25 0 0,1 14.25,11A2.25,2.25 0 0,1 12,13.25A2.25,2.25 0 0,1 9.75,11A2.25,2.25 0 0,1 12,8.75M12,15C13.5,15 16.5,15.75 16.5,17.25V18H7.5V17.25C7.5,15.75 10.5,15 12,15Z"/>
|
||||
</g>
|
||||
<rect width="1024" height="1024" fill="url(#topLight)"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
25
assets/logo_icon_squircle.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<defs>
|
||||
<clipPath id="squircle">
|
||||
<path d="
|
||||
M256,0
|
||||
C353,0 406,0 443,18
|
||||
C468,30 482,44 494,69
|
||||
C512,106 512,159 512,256
|
||||
C512,353 512,406 494,443
|
||||
C482,468 468,482 443,494
|
||||
C406,512 353,512 256,512
|
||||
C159,512 106,512 69,494
|
||||
C44,482 30,468 18,443
|
||||
C0,406 0,353 0,256
|
||||
C0,159 0,106 18,69
|
||||
C30,44 44,30 69,18
|
||||
C106,0 159,0 256,0
|
||||
Z"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<rect width="512" height="512" fill="#0082C9" clip-path="url(#squircle)"/>
|
||||
<g transform="translate(106, 106) scale(12.5)">
|
||||
<path fill="#FFFFFF" d="M12,3L2,12H5V20H19V12H22L12,3M12,8.75A2.25,2.25 0 0,1 14.25,11A2.25,2.25 0 0,1 12,13.25A2.25,2.25 0 0,1 9.75,11A2.25,2.25 0 0,1 12,8.75M12,15C13.5,15 16.5,15.75 16.5,17.25V18H7.5V17.25C7.5,15.75 10.5,15 12,15Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 913 B |
@@ -1,3 +1,2 @@
|
||||
# The Deliverfile allows you to store various App Store Connect metadata
|
||||
# For more information, check out the docs
|
||||
# https://docs.fastlane.tools/actions/deliver/
|
||||
metadata_path("./fastlane/metadata/ios")
|
||||
screenshots_path("./fastlane/metadata/ios/en-US/screenshots")
|
||||
|
||||
@@ -122,6 +122,7 @@ platform :android do
|
||||
upload_to_play_store(
|
||||
skip_upload_aab: true,
|
||||
skip_upload_apk: true,
|
||||
skip_upload_changelogs: true,
|
||||
metadata_path: File.expand_path("metadata/android", __dir__),
|
||||
skip_upload_images: !changed,
|
||||
skip_upload_screenshots: !changed,
|
||||
@@ -169,24 +170,39 @@ platform :ios do
|
||||
ipa_path
|
||||
end
|
||||
|
||||
def sync_release_notes
|
||||
version_code = version_info[:build]
|
||||
changelog_file = File.expand_path("metadata/ios/en-US/changelogs/#{version_code}.txt", __dir__)
|
||||
notes = File.exist?(changelog_file) ? File.read(changelog_file).strip : changelog_notes
|
||||
release_notes_path = File.expand_path("metadata/ios/en-US/release_notes.txt", __dir__)
|
||||
File.write(release_notes_path, notes)
|
||||
UI.message("Synced release notes from build #{version_code} (#{notes.length} chars)")
|
||||
notes
|
||||
end
|
||||
|
||||
desc "Upload to TestFlight"
|
||||
lane :beta do
|
||||
notes = sync_release_notes
|
||||
upload_to_testflight(
|
||||
api_key: api_key,
|
||||
ipa: find_ipa,
|
||||
changelog: changelog_notes,
|
||||
changelog: notes,
|
||||
skip_waiting_for_build_processing: true,
|
||||
)
|
||||
end
|
||||
|
||||
desc "Upload to App Store"
|
||||
lane :release do
|
||||
sync_release_notes
|
||||
deliver(
|
||||
api_key: api_key,
|
||||
ipa: find_ipa,
|
||||
metadata_path: File.expand_path("metadata/ios", __dir__),
|
||||
screenshots_path: File.expand_path("metadata/ios/en-US/screenshots", __dir__),
|
||||
skip_screenshots: true,
|
||||
submit_for_review: false,
|
||||
submit_for_review: true,
|
||||
precheck_include_in_app_purchases: false,
|
||||
force: true,
|
||||
)
|
||||
end
|
||||
|
||||
@@ -195,9 +211,113 @@ platform :ios do
|
||||
deliver(
|
||||
api_key: api_key,
|
||||
metadata_path: File.expand_path("metadata/ios", __dir__),
|
||||
screenshots_path: File.expand_path("metadata/ios/en-US/screenshots", __dir__),
|
||||
skip_binary_upload: true,
|
||||
skip_screenshots: true,
|
||||
submit_for_review: false,
|
||||
precheck_include_in_app_purchases: false,
|
||||
force: true,
|
||||
)
|
||||
end
|
||||
|
||||
desc "Submit existing App Store build for review (no IPA upload)"
|
||||
lane :submit do
|
||||
deliver(
|
||||
api_key: api_key,
|
||||
metadata_path: File.expand_path("metadata/ios", __dir__),
|
||||
screenshots_path: File.expand_path("metadata/ios/en-US/screenshots", __dir__),
|
||||
skip_binary_upload: true,
|
||||
skip_screenshots: true,
|
||||
submit_for_review: true,
|
||||
precheck_include_in_app_purchases: false,
|
||||
force: true,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
# -- macOS --
|
||||
|
||||
platform :mac do
|
||||
def api_key
|
||||
key_id = ENV.fetch("APP_STORE_API_KEY")
|
||||
app_store_connect_api_key(
|
||||
key_id: key_id,
|
||||
issuer_id: ENV.fetch("APP_STORE_ISSUER_ID"),
|
||||
key_filepath: File.join(ENV.fetch("APP_STORE_KEY_PATH"), "AuthKey_#{key_id}.p8"),
|
||||
)
|
||||
end
|
||||
|
||||
def find_pkg
|
||||
pkg_path = Dir[File.expand_path("../build/macos/pkg/*.pkg", __dir__)].first
|
||||
UI.user_error!("No PKG found in build/macos/pkg/. Run 'make macos-build-pkg' first.") unless pkg_path
|
||||
pkg_path
|
||||
end
|
||||
|
||||
def sync_release_notes
|
||||
version_code = version_info[:build]
|
||||
changelog_file = File.expand_path("metadata/macos/en-US/changelogs/#{version_code}.txt", __dir__)
|
||||
notes = File.exist?(changelog_file) ? File.read(changelog_file).strip : changelog_notes
|
||||
release_notes_path = File.expand_path("metadata/macos/en-US/release_notes.txt", __dir__)
|
||||
File.write(release_notes_path, notes)
|
||||
UI.message("Synced release notes from build #{version_code} (#{notes.length} chars)")
|
||||
notes
|
||||
end
|
||||
|
||||
desc "Upload to TestFlight (macOS)"
|
||||
lane :beta do
|
||||
notes = sync_release_notes
|
||||
upload_to_testflight(
|
||||
api_key: api_key,
|
||||
pkg: find_pkg,
|
||||
app_platform: "osx",
|
||||
changelog: notes,
|
||||
skip_waiting_for_build_processing: true,
|
||||
)
|
||||
end
|
||||
|
||||
desc "Upload to Mac App Store"
|
||||
lane :release do
|
||||
sync_release_notes
|
||||
deliver(
|
||||
api_key: api_key,
|
||||
pkg: find_pkg,
|
||||
platform: "osx",
|
||||
metadata_path: File.expand_path("metadata/macos", __dir__),
|
||||
screenshots_path: File.expand_path("metadata/macos/en-US/screenshots", __dir__),
|
||||
skip_screenshots: true,
|
||||
submit_for_review: true,
|
||||
precheck_include_in_app_purchases: false,
|
||||
force: true,
|
||||
)
|
||||
end
|
||||
|
||||
desc "Sync macOS metadata only (no PKG upload)"
|
||||
lane :metadata do
|
||||
deliver(
|
||||
api_key: api_key,
|
||||
platform: "osx",
|
||||
metadata_path: File.expand_path("metadata/macos", __dir__),
|
||||
screenshots_path: File.expand_path("metadata/macos/en-US/screenshots", __dir__),
|
||||
skip_binary_upload: true,
|
||||
skip_screenshots: true,
|
||||
submit_for_review: false,
|
||||
precheck_include_in_app_purchases: false,
|
||||
force: true,
|
||||
)
|
||||
end
|
||||
|
||||
desc "Submit existing Mac App Store build for review (no PKG upload)"
|
||||
lane :submit do
|
||||
deliver(
|
||||
api_key: api_key,
|
||||
platform: "osx",
|
||||
metadata_path: File.expand_path("metadata/macos", __dir__),
|
||||
screenshots_path: File.expand_path("metadata/macos/en-US/screenshots", __dir__),
|
||||
skip_binary_upload: true,
|
||||
skip_screenshots: true,
|
||||
submit_for_review: true,
|
||||
precheck_include_in_app_purchases: false,
|
||||
force: true,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -68,6 +68,51 @@ Upload to App Store
|
||||
|
||||
Sync iOS metadata only (no IPA upload)
|
||||
|
||||
### ios submit
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane ios submit
|
||||
```
|
||||
|
||||
Submit existing App Store build for review (no IPA upload)
|
||||
|
||||
----
|
||||
|
||||
|
||||
## Mac
|
||||
|
||||
### mac beta
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane mac beta
|
||||
```
|
||||
|
||||
Upload to TestFlight (macOS)
|
||||
|
||||
### mac release
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane mac release
|
||||
```
|
||||
|
||||
Upload to Mac App Store
|
||||
|
||||
### mac metadata
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane mac metadata
|
||||
```
|
||||
|
||||
Sync macOS metadata only (no PKG upload)
|
||||
|
||||
### mac submit
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane mac submit
|
||||
```
|
||||
|
||||
Submit existing Mac App Store build for review (no PKG upload)
|
||||
|
||||
----
|
||||
|
||||
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
||||
|
||||
2
fastlane/metadata/android/en-US/changelogs/10.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Bug Fixes
|
||||
- about urls not opening
|
||||
3
fastlane/metadata/android/en-US/changelogs/11.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Features
|
||||
- add more icons to categories
|
||||
- allow adding one-off list items
|
||||
3
fastlane/metadata/android/en-US/changelogs/12.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Features
|
||||
- add search in lists
|
||||
- allow uploading list item image
|
||||
2
fastlane/metadata/android/en-US/changelogs/13.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- add abi split
|
||||
2
fastlane/metadata/android/en-US/changelogs/14.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- reproducible build
|
||||
2
fastlane/metadata/android/en-US/changelogs/15.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- upgrade flutter version
|
||||
2
fastlane/metadata/android/en-US/changelogs/16.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- remove apk obfuscation
|
||||
2
fastlane/metadata/android/en-US/changelogs/17.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- zipalign
|
||||
2
fastlane/metadata/android/en-US/changelogs/18.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- remove zipalign
|
||||
2
fastlane/metadata/android/en-US/changelogs/19.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- disable deps metadata in apk
|
||||
2
fastlane/metadata/android/en-US/changelogs/20.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- strip deps metadata from build
|
||||
2
fastlane/metadata/android/en-US/changelogs/21.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- re-sign with stripping
|
||||
2
fastlane/metadata/android/en-US/changelogs/22.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- fix signing
|
||||
4
fastlane/metadata/android/en-US/changelogs/23.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Features
|
||||
- update notes view & edit ui
|
||||
Bug Fixes
|
||||
- bug where note grid would not clip correctly
|
||||
2
fastlane/metadata/android/en-US/changelogs/24.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Bug Fixes
|
||||
- make markdown links clickable
|
||||
4
fastlane/metadata/android/en-US/changelogs/25.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Features
|
||||
- add setting to require checkbox tap to complete checklist items
|
||||
Bug Fixes
|
||||
- preserve subpath for Nextcloud instances hosted on sub-paths
|
||||
5
fastlane/metadata/android/en-US/changelogs/26.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Features
|
||||
- add setting to show spacing between categories in checklist items
|
||||
- create new lists from the list selector
|
||||
- share photos, links, and text to Pantry from other apps
|
||||
- take photos directly from the photo board
|
||||
5
fastlane/metadata/android/en-US/changelogs/27.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Features
|
||||
- add trash view
|
||||
- add undo action for checking items
|
||||
- improve ui for larger devices
|
||||
- switch between photos in photo view
|
||||
2
fastlane/metadata/android/en-US/changelogs/28.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Bug Fixes
|
||||
- auto-dismiss item check snackbar after 6 seconds
|
||||
@@ -10,7 +10,7 @@ Upload and organize photos into folders. Add captions, drag to reorder, and brow
|
||||
Keep shared notes with your household. Color-code them, write in markdown, and pin the important stuff where everyone can see it.
|
||||
|
||||
* Your data, your server
|
||||
Pantry connects directly to your self-hosted Nextcloud instance. No accounts to create, no cloud services in between. Your data never leaves your server.
|
||||
Pantry connects directly to your Nextcloud instance. No accounts to create, no cloud services in between. Your data never leaves your server.
|
||||
|
||||
* Features
|
||||
- Shared checklists with categories, quantities, and recurrence
|
||||
@@ -20,6 +20,6 @@ Pantry connects directly to your self-hosted Nextcloud instance. No accounts to
|
||||
- Multi-select for bulk actions
|
||||
- Offline caching for fast loading
|
||||
- Material Design 3 with dark mode support
|
||||
- Nextcloud Login Flow v2 authentication
|
||||
- Secure login flow authentication
|
||||
|
||||
* Pantry requires a Nextcloud server with the Pantry app installed. Visit the project page for setup instructions.
|
||||
* Requires a Nextcloud server with the Pantry app installed. Visit the project page for setup instructions.
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
@@ -1 +1 @@
|
||||
Manage your household with your Nextcloud — lists, photos & notes.
|
||||
Manage your household — shared lists, photos & notes on your own server.
|
||||
@@ -1 +1 @@
|
||||
Nextcloud Pantry
|
||||
Pantry for Nextcloud
|
||||
1
fastlane/metadata/ios/copyright.txt
Normal file
@@ -0,0 +1 @@
|
||||
2026 Chen Asraf
|
||||
1
fastlane/metadata/ios/en-US/apple_tv_privacy_policy.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
2
fastlane/metadata/ios/en-US/changelogs/10.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Bug Fixes
|
||||
- about urls not opening
|
||||
3
fastlane/metadata/ios/en-US/changelogs/11.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Features
|
||||
- add more icons to categories
|
||||
- allow adding one-off list items
|
||||
3
fastlane/metadata/ios/en-US/changelogs/12.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Features
|
||||
- add search in lists
|
||||
- allow uploading list item image
|
||||
2
fastlane/metadata/ios/en-US/changelogs/13.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- add abi split
|
||||
2
fastlane/metadata/ios/en-US/changelogs/14.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- reproducible build
|
||||
2
fastlane/metadata/ios/en-US/changelogs/15.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- upgrade flutter version
|
||||
2
fastlane/metadata/ios/en-US/changelogs/16.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- remove apk obfuscation
|
||||
2
fastlane/metadata/ios/en-US/changelogs/17.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- zipalign
|
||||
2
fastlane/metadata/ios/en-US/changelogs/18.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- remove zipalign
|
||||
2
fastlane/metadata/ios/en-US/changelogs/19.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- disable deps metadata in apk
|
||||
2
fastlane/metadata/ios/en-US/changelogs/20.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- strip deps metadata from build
|
||||
2
fastlane/metadata/ios/en-US/changelogs/21.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- re-sign with stripping
|
||||
2
fastlane/metadata/ios/en-US/changelogs/22.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Build System
|
||||
- fix signing
|
||||
4
fastlane/metadata/ios/en-US/changelogs/23.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Features
|
||||
- update notes view & edit ui
|
||||
Bug Fixes
|
||||
- bug where note grid would not clip correctly
|
||||
2
fastlane/metadata/ios/en-US/changelogs/24.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Bug Fixes
|
||||
- make markdown links clickable
|
||||
4
fastlane/metadata/ios/en-US/changelogs/25.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Features
|
||||
- add setting to require checkbox tap to complete checklist items
|
||||
Bug Fixes
|
||||
- preserve subpath for Nextcloud instances hosted on sub-paths
|
||||
5
fastlane/metadata/ios/en-US/changelogs/26.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Features
|
||||
- add setting to show spacing between categories in checklist items
|
||||
- create new lists from the list selector
|
||||
- share photos, links, and text to Pantry from other apps
|
||||
- take photos directly from the photo board
|
||||
6
fastlane/metadata/ios/en-US/changelogs/27.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Features
|
||||
- add trash view
|
||||
- add undo action for checking items
|
||||
- improve ui for larger devices
|
||||
- open full file picker when running on macOS
|
||||
- switch between photos in photo view
|
||||
2
fastlane/metadata/ios/en-US/changelogs/28.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Bug Fixes
|
||||
- auto-dismiss item check snackbar after 6 seconds
|
||||
@@ -10,7 +10,7 @@ Upload and organize photos into folders. Add captions, drag to reorder, and brow
|
||||
Keep shared notes with your household. Color-code them, write in markdown, and pin the important stuff where everyone can see it.
|
||||
|
||||
* Your data, your server
|
||||
Pantry connects directly to your self-hosted Nextcloud instance. No accounts to create, no cloud services in between. Your data never leaves your server.
|
||||
Pantry connects directly to your Nextcloud instance. No accounts to create, no cloud services in between. Your data never leaves your server.
|
||||
|
||||
* Features
|
||||
- Shared checklists with categories, quantities, and recurrence
|
||||
@@ -20,6 +20,6 @@ Pantry connects directly to your self-hosted Nextcloud instance. No accounts to
|
||||
- Multi-select for bulk actions
|
||||
- Offline caching for fast loading
|
||||
- Material Design 3 with dark mode support
|
||||
- Nextcloud Login Flow v2 authentication
|
||||
- Secure login flow authentication
|
||||
|
||||
* Pantry requires a Nextcloud server with the Pantry app installed. Visit the project page for setup instructions.
|
||||
* Requires a Nextcloud server with the Pantry app installed. Visit the project page for setup instructions.
|
||||
|
||||
@@ -1 +1 @@
|
||||
nextcloud,household,checklist,shopping list,photos,notes,self-hosted
|
||||
nextcloud, checklist, todo, shopping list, notes, self-hosted, household
|
||||
|
||||
@@ -1 +1 @@
|
||||
https://casraf.dev
|
||||
https://github.com/chenasraf/pantry-flutter
|
||||
|
||||
@@ -1 +1 @@
|
||||
Nextcloud Pantry
|
||||
Pantry for Nextcloud
|
||||
|
||||
1
fastlane/metadata/ios/en-US/promotional_text.txt
Normal file
@@ -0,0 +1 @@
|
||||
Manage your household on your Nextcloud — shared lists, photos & notes.
|
||||
|
After Width: | Height: | Size: 171 KiB |
BIN
fastlane/metadata/ios/en-US/screenshots/0_APP_IPHONE_67_0.png
Normal file
|
After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 685 KiB |
BIN
fastlane/metadata/ios/en-US/screenshots/1_APP_IPHONE_67_1.png
Normal file
|
After Width: | Height: | Size: 882 KiB |
|
After Width: | Height: | Size: 210 KiB |
BIN
fastlane/metadata/ios/en-US/screenshots/2_APP_IPHONE_67_2.png
Normal file
|
After Width: | Height: | Size: 229 KiB |
@@ -1 +1 @@
|
||||
Household hub for Nextcloud
|
||||
Home lists, photos & notes
|
||||
1
fastlane/metadata/ios/primary_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
PRODUCTIVITY
|
||||
1
fastlane/metadata/ios/primary_first_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/ios/primary_second_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
EQq38!t9uA!@RdAkn6umJHo@nDh3ZZwM
|
||||
1
fastlane/metadata/ios/review_information/demo_user.txt
Normal file
@@ -0,0 +1 @@
|
||||
store-test
|
||||
@@ -0,0 +1 @@
|
||||
casraf@pm.me
|
||||
1
fastlane/metadata/ios/review_information/first_name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Chen
|
||||
1
fastlane/metadata/ios/review_information/last_name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Asraf
|
||||
3
fastlane/metadata/ios/review_information/notes.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
1. In the login screen, for the server, use: spider.casraf.dev and click "Connect"
|
||||
2. Use the given username/password to sign in to the Nextcloud website loaded in the in-app browser
|
||||
3. Click "Grant Access" to grant access to the app inside the in-app browser
|
||||
@@ -0,0 +1 @@
|
||||
+972549107970
|
||||
1
fastlane/metadata/ios/secondary_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/ios/secondary_first_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/ios/secondary_second_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/macos/copyright.txt
Normal file
@@ -0,0 +1 @@
|
||||
2026 Chen Asraf
|
||||
5
fastlane/metadata/macos/en-US/changelogs/26.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Features
|
||||
- add setting to show spacing between categories in checklist items
|
||||
- create new lists from the list selector
|
||||
- share photos, links, and text to Pantry from other apps
|
||||
- take photos directly from the photo board
|
||||
6
fastlane/metadata/macos/en-US/changelogs/27.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Features
|
||||
- add trash view
|
||||
- add undo action for checking items
|
||||
- improve ui for larger devices
|
||||
- go back by using Esc key
|
||||
- switch between photos in photo view
|
||||
3
fastlane/metadata/macos/en-US/changelogs/28.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Bug Fixes
|
||||
- auto-dismiss item check snackbar after 6 seconds
|
||||
- esc to dismiss would ring bell and not work
|
||||
25
fastlane/metadata/macos/en-US/description.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
Pantry is a companion app for the Nextcloud Pantry server app. It lets you and your household members collaborate on shared checklists, a photo board, and a notes wall — all stored on your own Nextcloud server.
|
||||
|
||||
* Checklists
|
||||
Create shopping lists and to-do lists with categories, quantities, recurring items, and images. Drag to reorder, sort by name or date, and check items off as you go.
|
||||
|
||||
* Photo Board
|
||||
Upload and organize photos into folders. Add captions, drag to reorder, and browse everything in a clean grid view.
|
||||
|
||||
* Notes Wall
|
||||
Keep shared notes with your household. Color-code them, write in markdown, and pin the important stuff where everyone can see it.
|
||||
|
||||
* Your data, your server
|
||||
Pantry connects directly to your Nextcloud instance. No accounts to create, no cloud services in between. Your data never leaves your server.
|
||||
|
||||
* Features
|
||||
- Shared checklists with categories, quantities, and recurrence
|
||||
- Photo board with folders, captions, and multi-upload
|
||||
- Color-coded notes wall
|
||||
- Drag-and-drop reordering everywhere
|
||||
- Multi-select for bulk actions
|
||||
- Offline caching for fast loading
|
||||
- Material Design 3 with dark mode support
|
||||
- Secure login flow authentication
|
||||
|
||||
* Requires a Nextcloud server with the Pantry app installed. Visit the project page for setup instructions.
|
||||
1
fastlane/metadata/macos/en-US/keywords.txt
Normal file
@@ -0,0 +1 @@
|
||||
nextcloud, checklist, todo, shopping list, notes, self-hosted, household
|
||||
1
fastlane/metadata/macos/en-US/marketing_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/chenasraf/pantry-flutter
|
||||
1
fastlane/metadata/macos/en-US/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Pantry for Nextcloud
|
||||