Skip to content

Releases: aiserrock/acits-flutter

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 15 Jul 17:46
56b29ef
  • Редактор фото животного (zoom, поворот, обрезка) на pro_image_editor — web и mobile.
  • Рабочий поиск с чипсами сортировки («Сегодня», «Животные»).
  • Splash-автовход: бесшовный splash (нативный/DOM), персист приюта и локали, случайная loading-анимация.
  • Компактный переключатель языка под кнопкой регистрации.
  • Web: PDF «поделиться»/«скачать» отдавал пустой файл (pdfx делал буфер detached через transferable) — теперь отдаётся полный файл.
  • Web: фото в свёрнутом кружке шапки карточки грузится через CORS-прокси (была заглушка вместо фото).
  • Тёмная тема: цвета сегмент-переключателя, drawer, шиммер загрузки картинок, логотип на регистрации.
  • Auth: не терять refresh-токен при автовходе.
  • Тёмная тема: переключаемая светлая/тёмная схема через ColorScheme; переключатель в настройках.
  • Просмотрщик PDF: pinch-zoom и кнопки +/− (ограничение 100–200%), кнопка поворота страницы (0° ↔ 90°), кнопка скачивания (работает на всех платформах).
  • Цвета и стили переведены со статических ColorRes/StyleRes на семантические Theme.of(context).colorScheme.
  • Web-шаринг PDF: при отправке файла в share-sheet передаётся только файл (без текста) — фикс «unsupported attachment» в мессенджерах; добавлены диагностические логи в Talker.
  • Инкрементальная profile-сборка Android при флейворах (явные debug/profile buildType).
  • PDF-карточка животного в web-PWA: просмотр и «поделиться»/скачивание работают на всех платформах (byte-пайплайн PdfDocument.openData, share через Web Share API с фолбэком на скачивание).
  • Ограничение ширины интерфейса на web-десктопе рамкой смартфона с размытым матовым фоном по бокам (на мобильных без изменений).
  • Android-сборки только под ARM (arm64-v8a, armeabi-v7a), убран x86_64.
  • Инициализация приложения распараллелена; списки комментариев и фото рендерятся лениво.
  • Гонки запросов в списках животных, деталях и поиске; single-flight обновления токена авторизации.
  • Утечки подписок и жестовых распознавателей (dispose в редактировании назначений и списке комментариев).
  • Зеркалирование в GitLab больше не падает при push нового тега (would clobber existing tag).

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 15 Jul 03:12
b7a7a5a
  • Тёмная тема: переключаемая светлая/тёмная схема через ColorScheme; переключатель в настройках.
  • Просмотрщик PDF: pinch-zoom и кнопки +/− (ограничение 100–200%), кнопка поворота страницы (0° ↔ 90°), кнопка скачивания (работает на всех платформах).
  • Цвета и стили переведены со статических ColorRes/StyleRes на семантические Theme.of(context).colorScheme.
  • Web-шаринг PDF: при отправке файла в share-sheet передаётся только файл (без текста) — фикс «unsupported attachment» в мессенджерах; добавлены диагностические логи в Talker.
  • Инкрементальная profile-сборка Android при флейворах (явные debug/profile buildType).
  • PDF-карточка животного в web-PWA: просмотр и «поделиться»/скачивание работают на всех платформах (byte-пайплайн PdfDocument.openData, share через Web Share API с фолбэком на скачивание).
  • Ограничение ширины интерфейса на web-десктопе рамкой смартфона с размытым матовым фоном по бокам (на мобильных без изменений).
  • Android-сборки только под ARM (arm64-v8a, armeabi-v7a), убран x86_64.
  • Инициализация приложения распараллелена; списки комментариев и фото рендерятся лениво.
  • Гонки запросов в списках животных, деталях и поиске; single-flight обновления токена авторизации.
  • Утечки подписок и жестовых распознавателей (dispose в редактировании назначений и списке комментариев).
  • Зеркалирование в GitLab больше не падает при push нового тега (would clobber existing tag).

v0.8.1

Choose a tag to compare

@aiserrock aiserrock released this 12 Jul 19:04
6c4c634
  • Animal PDF card in the web PWA: viewing and share/download now work on every platform (byte pipeline via PdfDocument.openData, sharing through the Web Share API with a download fallback).
  • Interface width on web desktop is now capped inside a smartphone frame with a blurred matte backdrop on either side (unchanged on mobile).
  • Android builds now target ARM only (arm64-v8a, armeabi-v7a); x86_64 dropped.
  • App start-up parallelised; comment lists and photos now render lazily.
  • Fixed request races in the animal lists, details and search; single-flight refresh of the auth token.
  • Fixed subscription and gesture-recogniser leaks (dispose in prescription editing and the comment list).
  • GitLab mirroring no longer fails when pushing a new tag (would clobber existing tag).
По-русски
  • PDF-карточка животного в web-PWA: просмотр и «поделиться»/скачивание работают на всех платформах (byte-пайплайн PdfDocument.openData, share через Web Share API с фолбэком на скачивание).
  • Ширина интерфейса на web-десктопе ограничена рамкой смартфона с размытым матовым фоном по бокам (на мобильных без изменений).
  • Android-сборки только под ARM (arm64-v8a, armeabi-v7a), убран x86_64.
  • Инициализация приложения распараллелена; списки комментариев и фото рендерятся лениво.
  • Исправлены гонки запросов в списках животных, деталях и поиске; single-flight обновление токена авторизации.
  • Исправлены утечки подписок и жестовых распознавателей (dispose в редактировании назначений и списке комментариев).
  • Зеркалирование в GitLab больше не падает при push нового тега (would clobber existing tag).

v0.8.0

Choose a tag to compare

@aiserrock aiserrock released this 12 Jul 16:05
  • PWA build of the dev flavour on GitHub Pages, with a CORS proxy for the API so the web client can reach the backend from the Pages origin.
  • App version and build mode shown on the login screen and in the profile drawer.
  • Project technical roadmap (docs/tech-roadmap.md) and its design spec, describing the maintainability, tooling, testing and CI work planned for the app.
  • Fixed safe-area handling for the bottom navigation bar in the iOS PWA (home-indicator overlap, standalone launch).
По-русски
  • PWA-сборка dev-флейвора на GitHub Pages с CORS-прокси для API (веб-клиент достаёт бэкенд с origin Pages).
  • Версия и режим сборки на экране входа и в profile-шторке.
  • Технический roadmap проекта (docs/tech-roadmap.md) и design spec: план работ по поддерживаемости, тулингу, тестам и CI.
  • Исправлена safe-area для нижней навигации в iOS PWA (перекрытие home-indicator, запуск в standalone).

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 22:35
  • Backend environment switcher in the dev debug screen: prod / stage / dev-0..3 plus a custom URL field (Mockoon or any ad-hoc stand); the dev flavour now defaults to stage. Applying an environment shows an "Applying…" splash (Lottie paw) and rebuilds the whole widget tree, so all clients and blocs pick up the new base URL without a manual restart.
  • Charles/mitmproxy support in the dev flavour: a proxy toggle with a host:port field in the debug screen, applied globally via HttpOverrides and per-client for chopper (a full manual restart is required, and the UI says so).
  • In-app logging with Talker: a log screen in the dev debug menu showing HTTP traffic, BLoC transitions and manual log entries. Levelled logs (debug/info/warning/error) across all services, repositories and cubits; error and critical entries are forwarded to Crashlytics as non-fatals in prod.
  • Alice HTTP inspector in the dev debug menu: full request/response browsing (with cURL export) for both chopper and dio traffic via a custom chopper interceptor.
  • Mockoon mock server (mockoon/) with two organisations, per-route error variants (401/403/404/400/429/500) and response shapes captured from production.
  • Android toolchain bumped to Gradle 8.14.3 / AGP 8.11.1 / Kotlin 2.2.20 and the app migrated to built-in Kotlin, clearing the Flutter 3.44 build warnings; deprecated buildDir usages replaced with layout.buildDirectory.
По-русски
  • Переключатель окружений бэкенда в dev debug-экране: prod / stage / dev-0..3 плюс поле произвольного URL (Mockoon или любой стенд); dev-флейвор теперь по умолчанию на stage. Применение окружения показывает splash «Applying…» (Lottie-лапка) и пересобирает всё дерево виджетов, так что все клиенты и блоки подхватывают новый base URL без ручного рестарта.
  • Поддержка Charles/mitmproxy в dev-флейворе: тумблер прокси с полем host:port в debug-экране, применяется глобально через HttpOverrides и per-client для chopper (нужен полный ручной рестарт, UI об этом сообщает).
  • Внутриприложенное логирование через Talker: экран логов в dev debug-меню с HTTP-трафиком, переходами BLoC и ручными записями. Уровневые логи (debug/info/warning/error) во всех сервисах, репозиториях и кубитах; error/critical уходят в Crashlytics как non-fatal в prod.
  • HTTP-инспектор Alice в dev debug-меню: полный просмотр запросов/ответов (с экспортом cURL) для трафика chopper и dio через кастомный chopper-интерцептор.
  • Mock-сервер Mockoon (mockoon/) с двумя организациями, вариантами ошибок по маршрутам (401/403/404/400/429/500) и формами ответов, снятыми с прода.
  • Android-тулчейн поднят до Gradle 8.14.3 / AGP 8.11.1 / Kotlin 2.2.20, приложение переведено на встроенный Kotlin — убраны предупреждения сборки Flutter 3.44; устаревшие buildDir заменены на layout.buildDirectory.

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 09 Jul 19:12
  • Dev-only floating debug button: a draggable bug icon that opens the debug screen (tap) or hides itself (long-press), shown only in debug mode. The debug screen gains a Firebase test card — trigger a fatal crash, a non-fatal error (Android/iOS) or an analytics event (all platforms) to verify Crashlytics/Analytics against the acits-dev project.
  • CI provisions Firebase configs for the new per-flavour layout (ios/flavors/{dev,prod}/) and installs the flutterfire CLI so the iOS bundle-service-file build phase can select the right plist; the stale ios/Runner/GoogleService-Info.plist.example copy no longer breaks the pipeline.
  • Removed the FlutterFire upload-crashlytics-symbols Xcode build phase (it looked for the Crashlytics run script in SPM's DerivedData and failed the unsigned CI build with ProcessException: No such file or directory); uploadDebugSymbols set to false in firebase.json.
  • Emptied Runner.entitlements (kept the original as .example) so a personal (free) Apple team can sign local device builds — the inherited Push Notifications / Associated Domains capabilities aren't supported without a paid Apple Developer Program.
  • Re-added a guarded Crashlytics dSYM upload build phase: it uploads symbols on release/profile builds (readable iOS crash traces) and skips cleanly on debug/CI (--no-codesign) builds where no dSYM exists, instead of failing the build.
По-русски
  • Плавающая debug-кнопка только для dev: перетаскиваемая иконка-жук, открывает debug-экран (тап) или прячется (long-press), видна только в debug-режиме. На debug-экране добавлена Firebase-карточка — вызвать fatal crash, non-fatal ошибку (Android/iOS) или analytics-событие (все платформы) для проверки Crashlytics/Analytics на проекте acits-dev.
  • CI раскладывает Firebase-конфиги под новую per-flavour структуру (ios/flavors/{dev,prod}/) и ставит flutterfire CLI, чтобы iOS build phase bundle-service-file выбирал нужный plist; устаревшая копия ios/Runner/GoogleService-Info.plist.example больше не ломает пайплайн.
  • Удалён FlutterFire build phase upload-crashlytics-symbols (искал Crashlytics run script в DerivedData SPM и валил неподписанную CI-сборку с ProcessException: No such file or directory); uploadDebugSymbols выставлен в false в firebase.json.
  • Очищен Runner.entitlements (оригинал сохранён как .example), чтобы личная (бесплатная) Apple-команда могла подписывать локальные сборки на устройство — унаследованные Push Notifications / Associated Domains не поддерживаются без платного Apple Developer Program.
  • Возвращён защищённый build phase выгрузки dSYM в Crashlytics: выгружает символы на release/profile-сборках (читаемые iOS-краши) и корректно пропускается на debug/CI (--no-codesign) сборках без dSYM, вместо падения сборки.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 09 Jul 16:29
  • Firebase for both flavours on Android, iOS and web, each flavour in its own project (acits-prod / acits-dev): Analytics on all three platforms, Crashlytics on Android/iOS (no web plugin exists; guarded off with kIsWeb). Configured via FlutterFire (firebase_options.dart per flavour) with a native google-services.json per flavour and a per-flavour iOS GoogleService-Info.plist selected by an Xcode flutterfire bundle-service-file build phase, plus the Android Crashlytics Gradle plugin (NDK symbol upload) — ready for push notifications.
  • Web PWA now uses the path URL strategy (/login instead of /#/login), with a 404.html SPA fallback for GitHub Pages and try_files on nginx.
  • iOS now has Profile-dev / Profile-prod build configurations, so flutter build ios --profile --flavor {dev,prod} works (Android profile builds already worked).
  • iOS builds via Swift Package Manager (hybrid): SPM-capable plugins use SPM, the rest stay on CocoaPods.
  • CI no longer runs on a plain push to main/develop; it now runs only on pull requests and on a v* release tag.
  • CI now builds a signed release: the dev flavour on a PR, the prod flavour on a v* tag (both signed with the release keystore); artifacts are named acits-dev-release / acits-prod-release.
  • README now links directly to the deployed PWA.
  • Telegram build notification now fires on every CI run, including pull requests (previously tag-only), and includes the live PWA link when the web deploy succeeds.
  • Web PWA shows a loading spinner over the splash screen until the app's first frame renders.
  • Bundle identifier changed to ru.acits (prod) / ru.acits.dev (dev) across Android and iOS; iOS signing team set to 45G32KJDV7; assetLinks.json fingerprint updated to the release keystore's certificate.
  • Web PWA now boots ~4s faster: main.dart.js loads immediately instead of waiting on service-worker registration (which stalled and hit a 4s fallback timeout on GitHub Pages).
  • iOS pod install no longer fails on a stale Podfile.lock that pinned Firebase 8.9.0 against firebase_core 4.x (which needs Firebase 12.x).
  • Web PWA no longer crashes on the "terms" link (registration), comment links and comment attachments: flutter_web_browser (no web support) replaced with url_launcher, and the attachment download (path_provider / open_filex, mobile-only) now opens the file URL directly on web.
По-русски
  • Firebase для обоих флейворов на Android, iOS и web, каждый флейвор в своём проекте (acits-prod / acits-dev): Analytics на всех трёх платформах, Crashlytics на Android/iOS (web-плагина нет, отключён через kIsWeb). Настроено через FlutterFire (firebase_options.dart на флейвор), нативным google-services.json на флейвор и per-flavour iOS GoogleService-Info.plist, выбираемым Xcode build phase flutterfire bundle-service-file, плюс Android Crashlytics Gradle-плагин (выгрузка NDK-символов) — готово к push-уведомлениям.
  • Web-PWA использует path URL strategy (/login вместо /#/login), с 404.html SPA-fallback для GitHub Pages и try_files на nginx.
  • В iOS добавлены конфигурации Profile-dev / Profile-prod, так что flutter build ios --profile --flavor {dev,prod} работает (profile-сборки Android работали и раньше).
  • iOS собирается через Swift Package Manager (гибридно): SPM-совместимые плагины на SPM, остальные на CocoaPods.
  • CI больше не запускается на обычный push в main/develop; только на pull request и на релизный тег v*.
  • CI собирает подписанный релиз: dev-флейвор на PR, prod-флейвор на теге v* (оба подписаны release-keystore); артефакты называются acits-dev-release / acits-prod-release.
  • README теперь ссылается прямо на задеплоенный PWA.
  • Telegram-уведомление о сборке приходит на каждый CI-запуск, включая pull request (раньше только на теги), и содержит ссылку на живой PWA при успешном web-деплое.
  • Web-PWA показывает спиннер поверх splash-экрана, пока не отрисуется первый кадр приложения.
  • Bundle identifier изменён на ru.acits (prod) / ru.acits.dev (dev) на Android и iOS; iOS signing team выставлен в 45G32KJDV7; отпечаток в assetLinks.json обновлён на сертификат release-keystore.
  • Web-PWA стартует на ~4s быстрее: main.dart.js загружается сразу, а не ждёт регистрации service-worker (которая зависала и упиралась в 4s fallback-таймаут на GitHub Pages).
  • iOS pod install больше не падает на устаревшем Podfile.lock, где Firebase 8.9.0 конфликтовал с firebase_core 4.x (которому нужен Firebase 12.x).
  • Web-PWA больше не крашится на ссылке «terms» (регистрация), ссылках в комментариях и вложениях: flutter_web_browser (без web-поддержки) заменён на url_launcher, а скачивание вложений (path_provider / open_filex, только мобилки) на web теперь открывает URL файла напрямую.

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 08 Jul 19:16
  • GitHub Release is now published automatically when a v* tag is pushed: it builds the dev APK, extracts that version's bullet points from CHANGELOG.md as release notes, attaches the APK and deploys web to GitHub Pages.
  • Android/iOS builds now run only on pull requests and on a release tag, not on every push to main/develop.
  • Web favicon and PWA icons replaced with the app's actual logo (were the default Flutter icon).
  • Fixed two favicon <link> tags that used a root-absolute path (/favicon-32x32.png) and 404'd once the site moved under a GitHub Pages subpath (/acits-flutter/); switched to relative paths.
По-русски
  • GitHub Release теперь публикуется автоматически при пуше тега v*: собирает dev-APK, вытаскивает буллеты этой версии из CHANGELOG.md в release notes, прикрепляет APK и деплоит web на GitHub Pages.
  • Сборки Android/iOS запускаются только на pull request и на релизном теге, а не на каждый push в main/develop.
  • Web-favicon и PWA-иконки заменены на реальный логотип приложения (были дефолтные иконки Flutter).
  • Исправлены два favicon-тега <link> с root-absolute путём (/favicon-32x32.png), которые 404'ились после переезда сайта в подпуть GitHub Pages (/acits-flutter/); переведены на относительные пути.

v0.5.0

Choose a tag to compare

@aiserrock aiserrock released this 08 Jul 17:26
  • Added a CI job that builds the prod web target and deploys it to GitHub Pages automatically whenever a v* tag is pushed.
  • Consolidated all generated code under lib/gen/ (was scattered across lib/api/, lib/generated/); retired the lib/l10n/ folder name in favour of lib/res/ (the project uses easy_localization, not intl_utils).
  • Fixed a broken Dockerfile: it was pinned to an unmaintained base image (cirrusci/flutter:3.3.1) predating the project's Flutter SDK, used a removed --web-renderer flag and built the wrong (dev) web target. Replaced with ghcr.io/cirruslabs/flutter:3.44.0, now building the prod target consistently with mobile release builds.
  • Added a missing .dockerignoredocker build . was sending the whole repo (build/, .dart_tool/, .git/, …) into the build context, gigabytes of needless upload and build time.
  • Removed dead code found in a project-wide audit: obsolete Charles debug-cert pinning, an unused domain model and an unused script.
По-русски
  • Добавлена CI-джоба, которая собирает prod web-таргет и деплоит его на GitHub Pages автоматически при пуше тега v*.
  • Весь сгенерированный код собран в lib/gen/ (было раскидано по lib/api/, lib/generated/); папка lib/l10n/ переименована в lib/res/ (проект использует easy_localization, а не intl_utils).
  • Починен сломанный Dockerfile: был закреплён на заброшенном образе (cirrusci/flutter:3.3.1) старше требуемого SDK, использовал снятый флаг --web-renderer и собирал не тот (dev) веб-таргет. Заменён на ghcr.io/cirruslabs/flutter:3.44.0, теперь собирает prod-таргет консистентно с релизными мобильными сборками.
  • Добавлен отсутствовавший .dockerignoredocker build . раньше отправлял в build-context весь репозиторий (build/, .dart_tool/, .git/, …), гигабайты лишнего трафика и времени сборки.
  • Удалён мёртвый код по итогам аудита: устаревшая привязка Charles-сертификата, неиспользуемая доменная модель, неиспользуемый скрипт.

v0.4.0

Choose a tag to compare

@aiserrock aiserrock released this 08 Jul 12:49
  • Dev APK is now attached directly to the GitHub release (CI-built from main, signed with the debug keystore).
  • Corrected v0.3.0 release attribution.
По-русски
  • Dev-APK теперь прикрепляется прямо к GitHub-релизу (CI-сборка из main, подпись debug-keystore).
  • Исправлена атрибуция релиза v0.3.0.