50 Commits

Author SHA1 Message Date
github-actions[bot]
24baeda80f chore(master): release 0.9.2 2026-04-19 11:07:27 +03:00
9d4c8327b0 build: reproducible build
Release-As: 0.9.2
2026-04-19 11:05:35 +03:00
github-actions[bot]
42125f89eb chore(master): release 0.9.1 2026-04-18 23:34:25 +03:00
7d0c7932ea build: add abi split
Release-As: 0.9.1
2026-04-18 23:31:14 +03:00
6f9f40a061 build: auto send to review 2026-04-18 22:42:26 +03:00
41bec3b656 build: add ios encryption compliance 2026-04-18 22:40:48 +03:00
8ba765e3be build: update ios release changes meta 2026-04-18 11:44:41 +03:00
github-actions[bot]
6cdb74a391 chore(master): release 0.9.0 2026-04-18 11:40:09 +03:00
eb797dd0e8 feat: add search in lists 2026-04-18 11:03:51 +03:00
7243e43bbb feat: allow uploading list item image 2026-04-18 10:37:47 +03:00
82966695b4 build: add debug build variance 2026-04-17 17:21:05 +03:00
322b3e29fa chore: update gitignore 2026-04-16 18:18:22 +03:00
634ac0be6b chore: fix ios release task 2026-04-16 18:16:10 +03:00
github-actions[bot]
2852e3ecf5 chore(master): release 0.8.0 2026-04-16 18:07:46 +03:00
179c6d781c feat: add more icons to categories 2026-04-16 12:03:02 +03:00
daac6f56fd chore: cleanups 2026-04-16 11:44:56 +03:00
a447fe1c8a feat: allow adding one-off list items 2026-04-16 11:42:47 +03:00
d73fa03a25 chore: update store metadata 2026-04-15 23:49:18 +03:00
github-actions[bot]
cb7133fcd7 chore(master): release 0.7.1 2026-04-14 14:29:30 +03:00
64af382f10 fix: about urls not opening 2026-04-14 13:47:39 +03:00
a535c6b49a chore: update icons 2026-04-14 13:39:32 +03:00
c15ad85d67 chore: fix android store icon size 2026-04-14 13:15:55 +03:00
d474663d44 build: ios metadata 2026-04-14 12:37:28 +03:00
github-actions[bot]
b984aaf187 chore(master): release 0.7.0 2026-04-14 10:08:10 +03:00
fc8aa17c61 build: add ios metadata, ipa fix 2026-04-14 10:05:18 +03:00
633a1979ce build: fix ipa provision 2026-04-14 09:42:32 +03:00
0cb6c06d9d feat: add about page 2026-04-14 02:02:23 +03:00
ff593aee6d chore: update app icons 2026-04-14 02:02:14 +03:00
bd11f814d7 build: prepare ios build 2026-04-14 02:01:29 +03:00
github-actions[bot]
96059f219c chore(master): release 0.6.0 2026-04-13 14:16:37 +03:00
e7ff39a232 feat: show next due date for list items 2026-04-13 10:37:14 +03:00
11972542da fix: appbar icon spacings 2026-04-13 01:13:55 +03:00
5dcd1f25b1 build: use lefthook for hooks 2026-04-13 00:55:16 +03:00
1e85d0c2a6 fix: improve i18n recurrence string rules 2026-04-13 00:55:16 +03:00
9555eaf636 build: use remote workflow file 2026-04-12 23:06:53 +03:00
69f3a4fef9 build: amend release commit with fastlane changelog 2026-04-12 22:58:51 +03:00
github-actions[bot]
466f5a04b2 chore: update fastlane changelog for 0.5.0 2026-04-12 22:56:05 +03:00
github-actions[bot]
d44909c79f chore(master): release 0.5.0 2026-04-12 22:56:05 +03:00
9d474a62fe fix: improve rtl layout spacings 2026-04-12 22:49:07 +03:00
c72a655f6a build: update pr changelog workflow 2026-04-12 22:41:15 +03:00
32326beb8d fix: allow arbitrary text in quantity 2026-04-12 17:58:35 +03:00
ce158ad4f8 build: fix changelog pr workflow 2026-04-12 17:48:49 +03:00
7ec952620d feat: add de, es, fr locales 2026-04-12 17:45:55 +03:00
b0fcd93792 fix: rtl layout + switching 2026-04-12 17:38:33 +03:00
d7e9b62730 docs: add fastlane changelog 2026-04-12 17:21:28 +03:00
github-actions[bot]
f54f69cd3c chore(master): release 0.4.0 2026-04-12 16:32:55 +03:00
4d99694109 fix: description field in items saving+displaying 2026-04-12 14:00:04 +03:00
7c572a6e64 feat: add hebrew language translation 2026-04-12 13:45:45 +03:00
9740997709 build: set fastlane meta changes on release pr 2026-04-12 12:21:01 +03:00
da170001f0 docs: update fastlane meta 2026-04-12 11:45:08 +03:00
177 changed files with 9567 additions and 301 deletions

View File

@@ -21,7 +21,7 @@ jobs:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version-file: .flutter-version
cache: true
- name: Cache pub dependencies
@@ -54,7 +54,7 @@ jobs:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version-file: .flutter-version
cache: true
- name: Cache pub dependencies
@@ -83,18 +83,12 @@ jobs:
release-please:
needs: [lint, test]
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
version: ${{ steps.release.outputs.version }}
steps:
- name: Release Please
id: release
uses: googleapis/release-please-action@v4
with:
release-type: dart
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
build-android:
needs: release-please
@@ -115,7 +109,7 @@ jobs:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version-file: .flutter-version
cache: true
- name: Cache pub dependencies
@@ -132,6 +126,9 @@ jobs:
- 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
@@ -144,23 +141,36 @@ 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 --obfuscate --split-debug-info=build/debug-info-apk --dart-define-from-file=.env
- name: Build App Bundle
run: flutter build appbundle --release --obfuscate --split-debug-info=build/debug-info-aab --dart-define-from-file=.env
- 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
@@ -181,7 +191,7 @@ jobs:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version-file: .flutter-version
cache: true
- name: Cache pub dependencies

5
.gitignore vendored
View File

@@ -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

View File

@@ -1,5 +1,88 @@
# Changelog
## [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)
### Features
* add about page ([0cb6c06](https://github.com/chenasraf/pantry-flutter/commit/0cb6c06d9d418b61d5fd1c4852ec244366aa6af8))
## [0.6.0](https://github.com/chenasraf/pantry-flutter/compare/v0.5.0...v0.6.0) (2026-04-13)
### Features
* show next due date for list items ([e7ff39a](https://github.com/chenasraf/pantry-flutter/commit/e7ff39a2328ecd9967a3b162dc389bac8a645f38))
### Bug Fixes
* appbar icon spacings ([1197254](https://github.com/chenasraf/pantry-flutter/commit/11972542da777a5922aec564684b7f37b3330aa0))
* improve i18n recurrence string rules ([1e85d0c](https://github.com/chenasraf/pantry-flutter/commit/1e85d0c2a6d46d7561105f02683bbed97c907792))
## [0.5.0](https://github.com/chenasraf/pantry-flutter/compare/v0.4.0...v0.5.0) (2026-04-12)
### Features
* add de, es, fr locales ([7ec9526](https://github.com/chenasraf/pantry-flutter/commit/7ec952620db2d957278d58c3798e5b03ab8c59fc))
### Bug Fixes
* allow arbitrary text in quantity ([32326be](https://github.com/chenasraf/pantry-flutter/commit/32326beb8d39d4713c9f65d01dfb243c44a5dbda))
* improve rtl layout spacings ([9d474a6](https://github.com/chenasraf/pantry-flutter/commit/9d474a62fe6ae19f3c08cdb634eac725ffb403c4))
* rtl layout + switching ([b0fcd93](https://github.com/chenasraf/pantry-flutter/commit/b0fcd937922badb59467f1bf164e3668c658e531))
## [0.4.0](https://github.com/chenasraf/pantry-flutter/compare/v0.3.0...v0.4.0) (2026-04-12)
### Features
* add hebrew language translation ([7c572a6](https://github.com/chenasraf/pantry-flutter/commit/7c572a6e64eafcf3433a2e6599b698312ffa9cbe))
### Bug Fixes
* description field in items saving+displaying ([4d99694](https://github.com/chenasraf/pantry-flutter/commit/4d9969410935d0b8d64fcfbc3e11d317a17979a6))
## [0.3.0](https://github.com/chenasraf/pantry-flutter/compare/v0.2.1...v0.3.0) (2026-04-12)

View File

@@ -1,9 +1,6 @@
# Version from pubspec.yaml (without build number)
VERSION := $(shell grep '^version:' pubspec.yaml | sed 's/version: *//;s/+.*//')
# Get staged Dart files
STAGED_DART_FILES := $(shell git diff --cached --name-only --diff-filter=ACM | grep '\.dart$$' 2>/dev/null)
# Default target
.PHONY: help
help:
@@ -12,7 +9,7 @@ help:
@echo " Setup:"
@echo " get Install dependencies"
@echo " clean Clean build artifacts"
@echo " install-precommit Install git pre-commit hook"
@echo " install-hooks Install git hooks via lefthook"
@echo " pods Update CocoaPods repo and install pods"
@echo ""
@echo " i18n:"
@@ -22,13 +19,9 @@ help:
@echo " Development:"
@echo " run Run the app in debug mode"
@echo " webapp-run Run the web app in default browser"
@echo " format Format staged Dart files"
@echo " analyze Analyze staged Dart files"
@echo " check Check staged files (format + analyze, no changes)"
@echo " precommit Run pre-commit checks on staged files"
@echo " format-all Format all Dart files"
@echo " analyze-all Analyze all Dart files"
@echo " check-all Check all files (format + analyze, no changes)"
@echo " format Format all Dart files"
@echo " analyze Analyze all Dart files"
@echo " check Check all files (format + analyze, no changes)"
@echo ""
@echo " Testing:"
@echo " test Run all tests"
@@ -44,6 +37,7 @@ 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)"
@@ -79,6 +73,7 @@ build-clean:
# i18n
.PHONY: i18n
i18n:
dart run tool/fix_i18n_escapes.dart
dart run build_runner build --delete-conflicting-outputs
.PHONY: i18n-watch
@@ -96,50 +91,14 @@ webapp-run:
.PHONY: format
format:
@if [ -n "$(STAGED_DART_FILES)" ]; then \
echo "Formatting staged files..."; \
dart format $(STAGED_DART_FILES); \
else \
echo "No staged Dart files to format."; \
fi
dart format .
.PHONY: analyze
analyze:
@if [ -n "$(STAGED_DART_FILES)" ]; then \
echo "Analyzing staged files..."; \
dart analyze $(STAGED_DART_FILES); \
else \
echo "No staged Dart files to analyze."; \
fi
flutter analyze --no-fatal-infos
.PHONY: check
check:
@if [ -n "$(STAGED_DART_FILES)" ]; then \
echo "Checking staged files..."; \
dart format --output=none --set-exit-if-changed $(STAGED_DART_FILES); \
dart analyze $(STAGED_DART_FILES); \
else \
echo "No staged Dart files to check."; \
fi
.PHONY: precommit
precommit: format analyze
@if [ -n "$(STAGED_DART_FILES)" ]; then \
echo "Re-staging formatted files..."; \
git add $(STAGED_DART_FILES); \
fi
# Full project commands
.PHONY: format-all
format-all:
dart format .
.PHONY: analyze-all
analyze-all:
flutter analyze --no-fatal-infos
.PHONY: check-all
check-all:
dart format --output=none --set-exit-if-changed .
flutter analyze --no-fatal-infos
@@ -162,6 +121,10 @@ test-coverage:
android-build-apk:
flutter build apk --release --obfuscate --split-debug-info=build/debug-info-apk --dart-define-from-file=.env
.PHONY: android-build-apk-split
android-build-apk-split:
flutter build apk --release --split-per-abi --obfuscate --split-debug-info=build/debug-info-apk --dart-define-from-file=.env
.PHONY: android-install
android-install: android-build-apk
flutter install
@@ -177,6 +140,10 @@ android-build-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
.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
@@ -234,7 +201,7 @@ ios-upload:
fi
.PHONY: ios-deploy
ios-deploy: ios-build ios-upload
ios-deploy: ios-build-ipa ios-upload
.PHONY: web-release
web-release: web-build
@@ -252,17 +219,9 @@ pods:
cd macos && pod install --repo-update
# Git hooks
.PHONY: install-precommit
install-precommit:
@if [ ! -f .git/hooks/pre-commit ]; then \
echo "Installing pre-commit hook..."; \
echo '#!/bin/sh' > .git/hooks/pre-commit; \
echo 'make precommit' >> .git/hooks/pre-commit; \
chmod +x .git/hooks/pre-commit; \
echo "Pre-commit hook installed."; \
else \
echo "Pre-commit hook already exists, skipping."; \
fi
.PHONY: install-hooks
install-hooks:
lefthook install
# API
.PHONY: fetch-openapi
@@ -287,11 +246,14 @@ 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
dart run flutter_launcher_icons
rsvg-convert -w 512 -h 512 assets/logo_icon_squircle.svg > fastlane/metadata/android/en-US/images/icon.png
.PHONY: splash
splash:
mkdir -p assets/icon
rsvg-convert -h 512 --page-width 1024 --page-height 1024 --top 256 --left 256 assets/logo_icon.svg > assets/icon/splash.png
rsvg-convert -h 1152 --page-width 1920 --page-height 1920 --top 384 --left 384 assets/logo_icon.svg > assets/icon/splash.png
dart run flutter_native_splash:create

View File

@@ -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
@@ -49,6 +50,10 @@ android {
}
buildTypes {
debug {
applicationIdSuffix = ".debug"
versionNameSuffix = "-dev"
}
release {
signingConfig = if (signingConfigs.names.contains("release"))
signingConfigs.getByName("release")
@@ -58,6 +63,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 = "../.."
}

View File

@@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
assets/icon/icon_ios.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 108 108">
<g transform="translate(22, 22) scale(2.667)">
<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: 367 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<rect width="512" height="512" fill="#0082C9"/>
<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: 418 B

View 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

View File

@@ -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/screenshots")

View File

@@ -88,10 +88,15 @@ platform :android do
desc "Upload AAB to Google Play"
lane :deploy do |options|
# Write changelog if not already present (CI generates it during the
# release PR, but this covers manual deploys).
version_code = version_info[:build]
changelog_dir = File.expand_path("metadata/android/en-US/changelogs", __dir__)
FileUtils.mkdir_p(changelog_dir)
File.write(File.join(changelog_dir, "#{version_code}.txt"), play_changelog)
changelog_file = File.join(changelog_dir, "#{version_code}.txt")
unless File.exist?(changelog_file)
FileUtils.mkdir_p(changelog_dir)
File.write(changelog_file, play_changelog)
end
changed = images_changed?
UI.message(changed ? "Images changed — uploading." : "Images unchanged — skipping.")
@@ -117,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,
@@ -164,25 +170,51 @@ 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,
skip_metadata: true,
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: true,
precheck_include_in_app_purchases: false,
)
end
desc "Sync iOS metadata only (no IPA upload)"
lane :metadata 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,
release_notes: { "en-US" => changelog_notes },
precheck_include_in_app_purchases: false,
)
end
end

View File

@@ -41,6 +41,35 @@ Promote a release from one track to another
----
## iOS
### ios beta
```sh
[bundle exec] fastlane ios beta
```
Upload to TestFlight
### ios release
```sh
[bundle exec] fastlane ios release
```
Upload to App Store
### ios metadata
```sh
[bundle exec] fastlane ios metadata
```
Sync iOS metadata only (no IPA upload)
----
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).

View File

@@ -0,0 +1,2 @@
Bug Fixes
- about urls not opening

View File

@@ -0,0 +1,3 @@
Features
- add more icons to categories
- allow adding one-off list items

View File

@@ -0,0 +1,3 @@
Features
- add search in lists
- allow uploading list item image

View File

@@ -0,0 +1,2 @@
Build System
- add abi split

View File

@@ -0,0 +1,2 @@
Build System
- reproducible build

View File

@@ -0,0 +1,8 @@
Features
- improve main page navigations
- move items between lists
Bug Fixes
- support back button when in photos foldeer

View File

@@ -0,0 +1,7 @@
Features
- add hebrew language translation
Bug Fixes
- description field in items saving+displaying

View File

@@ -0,0 +1,6 @@
Features
- add de, es, fr locales
Bug Fixes
- allow arbitrary text in quantity
- improve rtl layout spacings
- rtl layout + switching

View File

@@ -0,0 +1,5 @@
Features
- show next due date for list items
Bug Fixes
- appbar icon spacings
- improve i18n recurrence string rules

View File

@@ -0,0 +1,2 @@
Features
- add about page

View File

@@ -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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1 +1 @@
Manage your household with your Nextcloud — lists, photos & notes.
Manage your household — shared lists, photos & notes on your own server.

View File

@@ -1 +1 @@
Nextcloud Pantry
Pantry for Nextcloud

View File

@@ -0,0 +1 @@
2026 Chen Asraf

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,2 @@
Bug Fixes
- about urls not opening

View File

@@ -0,0 +1,3 @@
Features
- add more icons to categories
- allow adding one-off list items

View File

@@ -0,0 +1,3 @@
Features
- add search in lists
- allow uploading list item image

View File

@@ -0,0 +1,2 @@
Build System
- add abi split

View File

@@ -0,0 +1,2 @@
Build System
- reproducible build

View 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.

View File

@@ -0,0 +1 @@
nextcloud, checklist, todo, shopping list, notes, self-hosted, household

View File

@@ -0,0 +1 @@
https://github.com/chenasraf/pantry-flutter

View File

@@ -0,0 +1 @@
Pantry for Nextcloud

View File

@@ -0,0 +1 @@
https://casraf.dev/pantry-privacy-policy

View File

@@ -0,0 +1 @@
Manage your household on your Nextcloud — shared lists, photos & notes.

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

View File

@@ -0,0 +1 @@
Home lists, photos & notes

View File

@@ -0,0 +1 @@
https://github.com/chenasraf/pantry-flutter

View File

@@ -0,0 +1 @@
PRODUCTIVITY

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
EQq38!t9uA!@RdAkn6umJHo@nDh3ZZwM

View File

@@ -0,0 +1 @@
store-test

View File

@@ -0,0 +1 @@
casraf@pm.me

View File

@@ -0,0 +1 @@
Chen

View File

@@ -0,0 +1 @@
Asraf

View 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

View File

@@ -0,0 +1 @@
+972549107970

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

20
ios/ExportOptions.plist Normal file
View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store-connect</string>
<key>destination</key>
<string>export</string>
<key>signingStyle</key>
<string>automatic</string>
<key>stripSwiftSymbols</key>
<true/>
<key>uploadBitcode</key>
<false/>
<key>uploadSymbols</key>
<true/>
<key>teamID</key>
<string>Y893L6NQP2</string>
</dict>
</plist>

72
ios/Podfile.lock Normal file
View File

@@ -0,0 +1,72 @@
PODS:
- Flutter (1.0.0)
- flutter_local_notifications (0.0.1):
- Flutter
- flutter_native_splash (2.4.3):
- Flutter
- flutter_secure_storage_darwin (10.0.0):
- Flutter
- FlutterMacOS
- image_picker_ios (0.0.1):
- Flutter
- package_info_plus (0.4.5):
- Flutter
- sqflite_darwin (0.0.4):
- Flutter
- FlutterMacOS
- url_launcher_ios (0.0.1):
- Flutter
- wakelock_plus (0.0.1):
- Flutter
- workmanager_apple (0.0.1):
- Flutter
DEPENDENCIES:
- Flutter (from `Flutter`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
- workmanager_apple (from `.symlinks/plugins/workmanager_apple/ios`)
EXTERNAL SOURCES:
Flutter:
:path: Flutter
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios"
flutter_secure_storage_darwin:
:path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
sqflite_darwin:
:path: ".symlinks/plugins/sqflite_darwin/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
wakelock_plus:
:path: ".symlinks/plugins/wakelock_plus/ios"
workmanager_apple:
:path: ".symlinks/plugins/workmanager_apple/ios"
SPEC CHECKSUMS:
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
flutter_local_notifications: 395056b3175ba4f08480a7c5de30cd36d69827e4
flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf
flutter_secure_storage_darwin: acdb3f316ed05a3e68f856e0353b133eec373a23
image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b
wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556
workmanager_apple: 904529ae31e97fc5be632cf628507652294a0778
PODFILE CHECKSUM: 3c63482e143d1b91d2d2560aee9fb04ecc74ac7e
COCOAPODS: 1.16.2

View File

@@ -10,11 +10,13 @@
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
4B2FECE151D6658169DC6E88 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E836629E52B02A5B6D0F862 /* Pods_RunnerTests.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
7884E8682EC3CC0700C636F2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
F60DBFA38F344890F84CD5E3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 31D13B974C1302A5F0CE86D2 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -41,15 +43,21 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
0D02B01150F8705A7BE3C6D1 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
1E836629E52B02A5B6D0F862 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
31D13B974C1302A5F0CE86D2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
736C2329657A6FBB9CE1D305 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
9152653CE8E162FC342F1495 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
91DAEB15490ECD076B82EE80 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -57,13 +65,24 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C28EA37C4C36CE14FE19E720 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
ECEC55E4DC05821BB0BEA50F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
55917F8B3405971C4327A3FF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4B2FECE151D6658169DC6E88 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F60DBFA38F344890F84CD5E3 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -78,6 +97,15 @@
path = RunnerTests;
sourceTree = "<group>";
};
43389EC5ADFFCB84CB05BC4D /* Frameworks */ = {
isa = PBXGroup;
children = (
31D13B974C1302A5F0CE86D2 /* Pods_Runner.framework */,
1E836629E52B02A5B6D0F862 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -96,6 +124,8 @@
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
ECEC5B714C9B60C200CF4964 /* Pods */,
43389EC5ADFFCB84CB05BC4D /* Frameworks */,
);
sourceTree = "<group>";
};
@@ -124,6 +154,20 @@
path = Runner;
sourceTree = "<group>";
};
ECEC5B714C9B60C200CF4964 /* Pods */ = {
isa = PBXGroup;
children = (
C28EA37C4C36CE14FE19E720 /* Pods-Runner.debug.xcconfig */,
9152653CE8E162FC342F1495 /* Pods-Runner.release.xcconfig */,
ECEC55E4DC05821BB0BEA50F /* Pods-Runner.profile.xcconfig */,
0D02B01150F8705A7BE3C6D1 /* Pods-RunnerTests.debug.xcconfig */,
91DAEB15490ECD076B82EE80 /* Pods-RunnerTests.release.xcconfig */,
736C2329657A6FBB9CE1D305 /* Pods-RunnerTests.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -131,8 +175,10 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
4A2D8C6F279F4D6D91B49883 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
55917F8B3405971C4327A3FF /* Frameworks */,
);
buildRules = (
);
@@ -148,12 +194,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
EF96284EEFC2A4AB894F692E /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
60CC7BE4F08CFECA259D64E9 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -241,6 +289,45 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
4A2D8C6F279F4D6D91B49883 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
60CC7BE4F08CFECA259D64E9 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -256,6 +343,28 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
EF96284EEFC2A4AB894F692E /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -369,6 +478,9 @@
DEVELOPMENT_TEAM = Y893L6NQP2;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Nextcloud Pantry";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -383,6 +495,7 @@
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 0D02B01150F8705A7BE3C6D1 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -400,6 +513,7 @@
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 91DAEB15490ECD076B82EE80 /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -415,6 +529,7 @@
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 736C2329657A6FBB9CE1D305 /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -549,6 +664,9 @@
DEVELOPMENT_TEAM = Y893L6NQP2;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Nextcloud Pantry";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -568,16 +686,22 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = Y893L6NQP2;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Nextcloud Pantry";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = dev.casraf.pantry;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "Pantry Distribution";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";

View File

@@ -4,4 +4,7 @@
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 649 B

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show More