Some checks failed
ci / analyze (push) Successful in 1m25s
ci / test-commons-core (push) Successful in 50s
site / deploy (push) Successful in 30s
release / play (push) Successful in 36m40s
ci / test-app-seeds (push) Failing after 17m37s
release / fdroid_reference_armeabi_v7a (push) Successful in 24m4s
release / fdroid_reference_arm64_v8a (push) Successful in 25m5s
release / fdroid_reference_x86_64 (push) Successful in 25m14s
Flutter auto-adds android.permission.INTERNET only to the debug/profile manifests, so every RELEASE build (Play + F-Droid) shipped with no network permission at all — the whole social layer (market, messaging, trust, sync) was dead on Android release, while desktop (no permission model) worked. The market's 'can't reach the servers' was the visible symptom. Adds it to android/app/src/main/AndroidManifest.xml. Release prep v0.1.14: pubspec 0.1.13+15 -> 0.1.14+16; fdroid recipe versionCodes 161/162/163, commit v0.1.14, CurrentVersionCode 163.
175 lines
6.2 KiB
YAML
175 lines
6.2 KiB
YAML
name: tane
|
||
description: "Tane — local-first, encrypted, decentralized traditional-seed inventory and market."
|
||
publish_to: 'none'
|
||
version: 0.1.14+16
|
||
|
||
environment:
|
||
sdk: ^3.11.5
|
||
|
||
resolution: workspace
|
||
|
||
dependencies:
|
||
flutter:
|
||
sdk: flutter
|
||
flutter_localizations:
|
||
sdk: flutter
|
||
|
||
commons_core:
|
||
path: ../../packages/commons_core
|
||
|
||
# State management (Cubit-first). Drift streams are the source of truth.
|
||
flutter_bloc: ^9.1.1
|
||
equatable: ^2.0.5
|
||
|
||
# Stream combinators (StreamGroup) for reactive multi-table reads.
|
||
async: ^2.11.0
|
||
|
||
# Encrypted local database. NOTE: do NOT add sqlite3_flutter_libs / drift_flutter
|
||
# — their bundled plain SQLite collides (same symbols) with SQLCipher and
|
||
# segfaults on desktop. SQLCipher is the only native sqlite provider here.
|
||
drift: ^2.28.0
|
||
sqlite3: ^2.7.5
|
||
sqlcipher_flutter_libs: ^0.6.5
|
||
|
||
# Dependency injection composition root.
|
||
get_it: ^8.0.3
|
||
|
||
# i18n (Weblate-friendly JSON per locale).
|
||
slang: ^4.7.0
|
||
slang_flutter: ^4.7.0
|
||
# ICU date/number formatting (locale-aware, never ad-hoc).
|
||
intl: ^0.20.2
|
||
|
||
# Secure key storage (OS keystore).
|
||
flutter_secure_storage: ^9.2.4
|
||
|
||
# Routing + media + paths.
|
||
go_router: ^14.6.2
|
||
image_picker: ^1.1.2
|
||
# On-device OCR (Tesseract, Apache-2.0/BSD) to suggest a name from a packet
|
||
# photo. Offline, no Google/cloud. Mobile-only; other platforms use a no-op.
|
||
flutter_tesseract_ocr: ^0.4.31
|
||
# Pure-Dart image preprocessing (grayscale/contrast/upscale) before OCR to
|
||
# lift accuracy on blurry packet photos.
|
||
image: ^4.3.0
|
||
# Save/open dialogs for the inventory export/import (MIT license).
|
||
file_picker: ^10.1.2
|
||
# Pure-Dart PDF generation (Apache-2.0) for the printable "what I share"
|
||
# catalog. No platform channels, so the whole flow is host-testable.
|
||
pdf: ^3.11.3
|
||
# Pure-Dart barcode/QR generation (Apache-2.0; already used transitively by
|
||
# pdf). Painted on screen for the profile's shareable identity QR.
|
||
barcode: ^2.2.9
|
||
# Camera QR scanning via pure ZXing (MIT) — no ML Kit, no Google Play
|
||
# Services (F-Droid-safe; same stack Ğ1nkgo ships). Mobile-only; other
|
||
# platforms simply don't offer the scan button.
|
||
zxing_barcode_scanner: ^1.0.3
|
||
path: ^1.9.0
|
||
path_provider: ^2.1.5
|
||
|
||
cupertino_icons: ^1.0.8
|
||
material_symbols_icons: ^4.2951.0
|
||
url_launcher: ^6.3.2
|
||
package_info_plus: ^9.0.1
|
||
# Optional coarse device location goes through a small platform channel to
|
||
# Android's own LocationManager (lib/services/coarse_location.dart) — no
|
||
# location plugin, and deliberately no Google Play Services, so the APK
|
||
# stays free of proprietary classes (F-Droid).
|
||
# Network reachability (BSD-3) to show a global "you're offline" banner — the
|
||
# social layer needs a connection; the inventory works regardless.
|
||
connectivity_plus: ^6.1.0
|
||
# Local OS notifications (BSD-3) for a heads-up when a private message arrives
|
||
# while the app is foregrounded. Mobile/Linux/macOS only; a no-op on web and
|
||
# Windows. Foreground-only by design — background/push is a later concern.
|
||
flutter_local_notifications: ^18.0.1
|
||
crop_your_image: ^2.0.0
|
||
|
||
dev_dependencies:
|
||
flutter_test:
|
||
sdk: flutter
|
||
integration_test:
|
||
sdk: flutter
|
||
|
||
flutter_lints: ^6.0.0
|
||
# Virtual clock to fast-forward the inventory auto-retry backoff in tests.
|
||
fake_async: ^1.3.1
|
||
build_runner: ^2.4.13
|
||
drift_dev: ^2.28.0
|
||
slang_build_runner: ^4.7.0
|
||
mocktail: ^1.0.4
|
||
# Nostr types (Event/Filter) to fake a NostrChannel in the connection test.
|
||
nostr: ^2.0.0
|
||
flutter_launcher_icons: ^0.14.4
|
||
flutter_native_splash: ^2.4.7
|
||
|
||
# App launcher icon: a white sprout on brand green (#2F7D34) for strong
|
||
# contrast. Regenerate with: dart run flutter_launcher_icons
|
||
flutter_launcher_icons:
|
||
image_path: assets/icon.png
|
||
android: true
|
||
ios: true
|
||
remove_alpha_ios: true
|
||
adaptive_icon_background: "#2F7D34"
|
||
adaptive_icon_foreground: assets/icon_foreground.png
|
||
web:
|
||
generate: true
|
||
image_path: assets/icon.png
|
||
background_color: "#2F7D34"
|
||
theme_color: "#2F7D34"
|
||
windows:
|
||
generate: true
|
||
image_path: assets/icon.png
|
||
icon_size: 256
|
||
|
||
# Native splash: white sprout on brand green, a darker green in dark mode.
|
||
# Regenerate with: dart run flutter_native_splash:create
|
||
flutter_native_splash:
|
||
color: "#2F7D34"
|
||
color_dark: "#22521E"
|
||
image: assets/splash_logo.png
|
||
android_12:
|
||
image: assets/splash_logo.png
|
||
color: "#2F7D34"
|
||
color_dark: "#22521E"
|
||
|
||
flutter:
|
||
uses-material-design: true
|
||
# Seed strings for slang live under lib/i18n (not a Flutter asset; compiled).
|
||
assets:
|
||
- assets/catalog/species.json
|
||
# Curated seed-saving guidance (pollination, isolation, difficulty…).
|
||
- assets/catalog/seed_saving.json
|
||
- assets/logo.png
|
||
# Bundled so the Linux runner can use it as the GTK window icon.
|
||
- assets/icon.png
|
||
# Tesseract OCR language data (tessdata_fast: eng + spa). Bundled for
|
||
# offline, on-device label OCR on mobile.
|
||
- assets/tessdata/
|
||
- assets/tessdata_config.json
|
||
# Real packet photos for the on-device OCR validation integration test.
|
||
# Remove before shipping if you don't want them in the bundle.
|
||
- assets/ocr_fixtures/
|
||
# Embedded in generated PDFs (printable catalog). DejaVu covers Latin
|
||
# (extended), Cyrillic and Greek; Noto Arabic + Noto CJK ride alongside as
|
||
# per-glyph fallbacks so RTL and CJK text render instead of tofu. Fonts are
|
||
# a per-locale resource, extensible to any script. Licenses: DejaVu
|
||
# (Bitstream Vera / public domain), Noto (SIL OFL 1.1). See assets/fonts/.
|
||
- assets/fonts/DejaVuSans.ttf
|
||
- assets/fonts/DejaVuSans-Bold.ttf
|
||
- assets/fonts/NotoSansArabic.ttf
|
||
- assets/fonts/NotoSansJP.ttf
|
||
fonts:
|
||
# Custom seed-themed icon glyphs (chars a–k). See docs/mockups/seedks-glyphs.png.
|
||
- family: seedks
|
||
fonts:
|
||
- asset: fonts/seedks.ttf
|
||
# Script coverage fallbacks for the UI text theme (see ui/theme.dart). Noto
|
||
# (SIL OFL 1.1) covers Arabic (RTL) and CJK (Japanese kanji/kana + shared
|
||
# Han) so those scripts render on every platform, including desktop where
|
||
# the system font may lack them. Variable fonts; Flutter picks the weight.
|
||
- family: Noto Sans Arabic
|
||
fonts:
|
||
- asset: assets/fonts/NotoSansArabic.ttf
|
||
- family: Noto Sans JP
|
||
fonts:
|
||
- asset: assets/fonts/NotoSansJP.ttf
|