b8987364e3
`ShorebirdUpdater.update()` previously threw `UpdateException: No update (noUpdate)` whenever the patch check returned no available update, even though that is a successful outcome of calling `update()` — the app is already running the latest patch. The wrapper only returned normally on `SHOREBIRD_UPDATE_INSTALLED`; every other status (including `SHOREBIRD_NO_UPDATE`, value 0) fell through to the generic `throw UpdateException(...)` path, which is why callers saw `UpdateException: No update (noUpdate)` in their exception telemetry. Treat `SHOREBIRD_NO_UPDATE` as a successful return alongside `SHOREBIRD_UPDATE_INSTALLED`. No FFI change, safe against any engine version (status code 0 is stable). Fixes shorebirdtech/shorebird#3681