Skip to content

Release 2.15.3 - #753

Open
itmindbox wants to merge 28 commits into
masterfrom
release/2.15.3
Open

Release 2.15.3#753
itmindbox wants to merge 28 commits into
masterfrom
release/2.15.3

Conversation

@itmindbox

Copy link
Copy Markdown
Contributor

Updates the release version to 2.15.3. Automated PR: merge release/2.15.3 into master

justSmK and others added 28 commits July 16, 2026 11:28
The API returns promoActions, but the model decoded the singular
promoAction key, so decodeIfPresent silently dropped the array ever
since the field was added in 2021. Hybrid bridges (React Native)
re-encode the decoded model before handing it to JS, so the promo
actions never reached the app at all.

The explicit encode(to:) keeps the re-encoded JSON on the same wire
keys as the decoder; without it the compiler synthesizes encoding from
property names, which is exactly what hid this mismatch. The public
promoAction property keeps its name to avoid an API break, and
productListItems intentionally keeps its historical encode-only key.
Locks down the promoActions decode/re-encode key, the untouched wire
keys, and both productList shapes, so the next contract drift fails a
test instead of silently dropping a field.
Anonymized shape of the sync-operation response from the client report:
fractional seconds longer than the .SSS parse pattern (ICU truncates,
doesn't shift), sibling non-Utc date keys, and boolean custom fields
that must survive re-encoding.
MOBILE-258: Allow path prefix for operaionsDomain
…moactions-decoding-key

MOBILE-303: Decode promo actions from the plural promoActions key
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…iceUUID

Security review flagged raw deviceUUIDs in the mobile config: every device
could read every other device's UUID. The config now carries
monitoring.logs[].target — MD5 of the lowercased deviceUUID — and the SDK
hashes its own UUID and compares case-insensitively. Contract and test
vectors mirror android-sdk #749 (MOBILE-281).

iOS 12 has no CryptoKit, so MD5Hash falls back to CC_MD5 behind a wrapper
marked deprecated(13.0): warning-free today, and it starts warning at the
call site once the deployment target reaches iOS 13 — a cue to delete it.
Fixtures reuse android-sdk #749 values so all platforms verify the same
vectors; adds legacy-format, both-fields and blank-target cases and
exercises the CC_MD5 fallback directly — no iOS 12 simulator exists in CI.
A guard inside the loop returned from sendLogs before handled request ids
were persisted, so one malformed entry re-sent earlier valid entries on
every config apply and blocked later ones. Continue to the next entry instead.
The whole path was silent: skips had no trace and the empty catch even
swallowed body-build errors, so support couldn't tell why a device never
answered a log request. Every decision now logs its reason, and skip lines
land in the same log DB the next successful fetch delivers.
Lowercase and uppercase rows of the same uuid now sit together with the
raw-uppercase md5 counterexample in a comment, so the lowercasing contract
is visible at a glance.
XCTAssertNotNil on non-optional strings could never fail (pattern predates
this PR); non-empty checks actually guard the decoded values.
Verified via otool: LC_LOAD_WEAK_DYLIB, so the import cannot break iOS 12
startup. The note preempts the recurring review question.
Multi-day log dumps read as one solid stream. A heavy banner at process
start, a medium one at inapp-session rollover and light foreground/
background lines let support find launch and session boundaries at a glance.
Bumps [json](https://github.com/ruby/json) from 2.20.0 to 2.21.2.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.20.0...v2.21.2)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.21.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
@github-actions

Copy link
Copy Markdown
Contributor
TestsPassed ✅SkippedFailedTime ⏱
Unit tests report1399 ran1399 ✅1m 35s 475ms

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.

4 participants