Fixes two bugs reported in issue #213 that affect Play Store builds on some Android devices.
Bug 1 – "App Version: unknown"
PackageInfo.fromPlatform() returns "unknown" because the package_info_plus plugin never registered. Root cause: GeneratedPluginRegistrant.java wraps each plugin registration in catch (Exception e). If a plugin registered before package_info_plus throws a Java Error (e.g. NoClassDefFoundError — not an Exception subclass), the catch is bypassed, the exception propagates out of registerWith(), and all subsequent plugin registrations are skipped.
Fix: Change all 13 catch (Exception e) clauses to catch (Throwable e) in GeneratedPluginRegistrant.java, and un-gitignore the file so the patched version is committed and picked up by release CI builds (Dagger overlays git-tracked android/ source after flutter pub get).
Bug 2 – App crash when tapping sharedinbox.de link
url_launcher_android 6.3.25 migrated to Pigeon 26, which throws a PlatformException(channel-error, ...) on some Android devices — the exact same root cause as path_provider_android 2.2.21 that was already pinned in this repo. The onTapLink callback in AboutScreen called launchUrl via unawaited() with no error handling, so the PlatformException became an unhandled async error and crashed the app.
Fix:
Pin url_launcher_android: ">=6.3.0 <6.3.25" in dependency_overrides (same pattern as the existing path_provider_android pin).
Extract a _launchUrl() helper with try/catch that shows an error SnackBar instead of crashing. Also applies to the "Create issue" button.
Test plan
New widget test AboutScreen link tap with failed url_launcher shows error snackbar verifies that a PlatformException from url_launcher shows an error SnackBar (not a crash).
All 5 about_screen widget tests pass.
All 123 widget tests pass (flutter test test/widget/).
All 329 unit tests pass (flutter test test/unit/).
flutter analyze — no issues.
Pre-commit hooks pass (dart format, hygiene checks).
## Summary
Fixes two bugs reported in issue #213 that affect Play Store builds on some Android devices.
### Bug 1 – "App Version: unknown"
`PackageInfo.fromPlatform()` returns "unknown" because the `package_info_plus` plugin never registered. Root cause: `GeneratedPluginRegistrant.java` wraps each plugin registration in `catch (Exception e)`. If a plugin registered before `package_info_plus` throws a Java **`Error`** (e.g. `NoClassDefFoundError` — not an `Exception` subclass), the catch is bypassed, the exception propagates out of `registerWith()`, and all subsequent plugin registrations are skipped.
**Fix:** Change all 13 `catch (Exception e)` clauses to `catch (Throwable e)` in `GeneratedPluginRegistrant.java`, and un-gitignore the file so the patched version is committed and picked up by release CI builds (Dagger overlays git-tracked `android/` source after `flutter pub get`).
### Bug 2 – App crash when tapping sharedinbox.de link
`url_launcher_android 6.3.25` migrated to Pigeon 26, which throws a `PlatformException(channel-error, ...)` on some Android devices — the exact same root cause as `path_provider_android 2.2.21` that was already pinned in this repo. The `onTapLink` callback in `AboutScreen` called `launchUrl` via `unawaited()` with no error handling, so the `PlatformException` became an unhandled async error and crashed the app.
**Fix:**
1. Pin `url_launcher_android: ">=6.3.0 <6.3.25"` in `dependency_overrides` (same pattern as the existing `path_provider_android` pin).
2. Extract a `_launchUrl()` helper with `try/catch` that shows an error SnackBar instead of crashing. Also applies to the "Create issue" button.
## Test plan
- [ ] New widget test `AboutScreen link tap with failed url_launcher shows error snackbar` verifies that a `PlatformException` from `url_launcher` shows an error SnackBar (not a crash).
- [ ] All 5 about_screen widget tests pass.
- [ ] All 123 widget tests pass (`flutter test test/widget/`).
- [ ] All 329 unit tests pass (`flutter test test/unit/`).
- [ ] `flutter analyze` — no issues.
- [ ] Pre-commit hooks pass (dart format, hygiene checks).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Fixes two bugs reported in issue #213 that affect Play Store builds on some Android devices.
Bug 1 – "App Version: unknown"
PackageInfo.fromPlatform()returns "unknown" because thepackage_info_plusplugin never registered. Root cause:GeneratedPluginRegistrant.javawraps each plugin registration incatch (Exception e). If a plugin registered beforepackage_info_plusthrows a JavaError(e.g.NoClassDefFoundError— not anExceptionsubclass), the catch is bypassed, the exception propagates out ofregisterWith(), and all subsequent plugin registrations are skipped.Fix: Change all 13
catch (Exception e)clauses tocatch (Throwable e)inGeneratedPluginRegistrant.java, and un-gitignore the file so the patched version is committed and picked up by release CI builds (Dagger overlays git-trackedandroid/source afterflutter pub get).Bug 2 – App crash when tapping sharedinbox.de link
url_launcher_android 6.3.25migrated to Pigeon 26, which throws aPlatformException(channel-error, ...)on some Android devices — the exact same root cause aspath_provider_android 2.2.21that was already pinned in this repo. TheonTapLinkcallback inAboutScreencalledlaunchUrlviaunawaited()with no error handling, so thePlatformExceptionbecame an unhandled async error and crashed the app.Fix:
url_launcher_android: ">=6.3.0 <6.3.25"independency_overrides(same pattern as the existingpath_provider_androidpin)._launchUrl()helper withtry/catchthat shows an error SnackBar instead of crashing. Also applies to the "Create issue" button.Test plan
AboutScreen link tap with failed url_launcher shows error snackbarverifies that aPlatformExceptionfromurl_launchershows an error SnackBar (not a crash).flutter test test/widget/).flutter test test/unit/).flutter analyze— no issues.🤖 Generated with Claude Code