Skip to content

Fix raw platform error 'net_webstatus_ConnectFailure' shown on connection failure#155

Merged
PureWeen merged 8 commits intomainfrom
fix/when-there-is-an-error-connecting-throug-20260220-1647
Feb 20, 2026
Merged

Fix raw platform error 'net_webstatus_ConnectFailure' shown on connection failure#155
PureWeen merged 8 commits intomainfrom
fix/when-there-is-an-error-connecting-throug-20260220-1647

Conversation

@jfversluis
Copy link
Collaborator

Bug

When a Direct Connection fails on Apple platforms (Mac Catalyst/iOS), users see a raw platform error string like net_webstatus_ConnectFailure instead of a human-readable message.

Root Cause

Apple's NSUrlSession embeds WebExceptionStatus enum values in exception messages. The app was showing ex.Message directly at all error display points (Dashboard init, Settings reconnect, SendAsync errors, SessionErrorEvent).

Fix

Added ErrorMessageHelper utility that translates known platform-specific error patterns into user-friendly messages:

  • net_webstatus_ConnectFailure → "Connection refused — the server is not reachable..."
  • net_webstatus_NameResolutionFailure → "Could not resolve the server address..."
  • net_webstatus_Timeout → "Connection timed out..."
  • Plus SSL, trust, send/receive failures, and generic socket errors

Applied at all 5 user-facing error display paths.

Tests

  • 18 new tests in ErrorMessageHelperTests.cs covering all platform error patterns, case insensitivity, exception unwrapping, and passthrough of normal messages
  • All 703 tests pass

jfversluis and others added 7 commits February 20, 2026 15:02
Adds a manually-triggered workflow (release-apps.yml) that:
- Builds a signed Android AAB and deploys to Google Play Internal Testing
- Builds a signed iOS IPA and deploys to TestFlight
- Uses GitHub environments (android-release, ios-release) for deployment gates
- All signing config is passed via -p: MSBuild properties (no csproj changes)
- Version and build number are specified as workflow_dispatch inputs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
After uploading to TestFlight, the workflow now:
1. Generates a JWT for the App Store Connect API
2. Looks up the 'MAUI Team' beta group
3. Polls until Apple finishes processing the build (up to 30 min)
4. Adds the build to the external tester group

Uses the same APPSTORE_* secrets — no new secrets needed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Build number now auto-increments via run_number. Can still be
overridden by providing a value in the workflow_dispatch input.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Build number = github.run_number + offset. Offset defaults to 0
(from repo variable BUILD_NUMBER_OFFSET) and can be overridden per-run
via the build_number_offset input. This guarantees strictly increasing
build numbers even after manual overrides.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Runs daily at 06:00 UTC but skips if no commits in the last 24 hours.
Manual dispatch always releases. Scheduled runs use the APP_VERSION
repo variable (or default 1.0.0) since there's no input prompt.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When a Direct Connection fails on Apple platforms (Mac Catalyst/iOS),
the exception message contains raw NSUrlSession status codes like
'net_webstatus_ConnectFailure' instead of human-readable text.

Add ErrorMessageHelper.Humanize() to translate known platform-specific
error patterns into user-friendly messages. Applied at all user-facing
error display points: Dashboard init, Settings reconnect, SendAsync
errors, and SessionErrorEvent handling.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jfversluis jfversluis force-pushed the fix/when-there-is-an-error-connecting-throug-20260220-1647 branch from 90081a3 to 10a37f3 Compare February 20, 2026 17:00
…tatus_

The previous commit missed the Dashboard.HandleError path — errors
from WsBridgeClient.OnError pass raw strings that weren't humanized.

Also add:
- Catch-all for unrecognized net_webstatus_* codes
- 'No route to host', 'Host is down', 'Name or service not known' patterns
- Tests for all new patterns

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@PureWeen PureWeen merged commit b550d62 into main Feb 20, 2026
6 checks passed
@PureWeen PureWeen deleted the fix/when-there-is-an-error-connecting-throug-20260220-1647 branch February 22, 2026 00:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants