Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
4bf4b21
chore: replace react-native-restart with expo reloadAppAsync
diegolmello Sep 14, 2026
b36586c
chore: replace react-native-background-timer with setInterval
diegolmello Sep 14, 2026
4b1f58b
chore: bump react-native-localize to 3.7.0
diegolmello Sep 14, 2026
22c1182
chore: replace react-native-file-viewer with expo-quick-look
diegolmello Sep 14, 2026
3230b78
chore: migrate from expo-av to expo-audio and expo-video (#6719)
diegolmello Sep 15, 2026
6978e70
chore: bump react-native-mmkv and react-native-nitro-modules
OtavioStasiak Sep 15, 2026
f96be07
chore: drop dead react-native-mmkv patch and tighten its jest mock
OtavioStasiak Sep 15, 2026
559b2f7
chore: RN 0.86 / Expo 57 dependencies, toolchain and patches (#7693)
diegolmello Sep 15, 2026
5219014
fix: adapt app code to React Native 0.86 and Expo 57 (#7694)
diegolmello Sep 15, 2026
998957d
fix(ios): support React Native 0.86 and Expo 57 (#7696)
diegolmello Sep 16, 2026
0e8a91b
fix: update Android build for React Native 0.86 (#7695)
diegolmello Sep 16, 2026
7498ec7
Merge develop into React Native 0.86 upgrade
diegolmello Sep 16, 2026
5070263
ci: make TypeScript check blocking again
diegolmello Sep 16, 2026
a12e23b
fix: restore default submit behavior on login email field
diegolmello Sep 16, 2026
d0fcbad
fix: keep test identifiers on iOS accessibility elements
diegolmello Sep 16, 2026
f65faa6
fix: expose test identifiers on accessible elements
diegolmello Sep 16, 2026
df6a67a
fix: keep a single test identifier per element
diegolmello Sep 16, 2026
a2d8ba2
fix: remove OrSeparator from accessibility focus chain
diegolmello Sep 16, 2026
6c6e7a2
chore(ios): re-enable prebuilt React-Core and Hermes V1 (#7698)
diegolmello Sep 17, 2026
c770155
fix(e2e): anchor keyboard navigation login on focus (#7703)
diegolmello Sep 17, 2026
e5b26d4
chore(deps): bump reanimated to 4.6.0 and worklets to 0.12.2 (#7706)
diegolmello Sep 18, 2026
18d5f9d
chore(deps): bump react-native-screens to 4.28.0 (#7709)
diegolmello Sep 18, 2026
da56123
chore(deps): bump @react-navigation family (#7710)
diegolmello Sep 18, 2026
29c926f
chore(deps): bump react-native-safe-area-context to 5.10.0 (#7711)
diegolmello Sep 18, 2026
d8be466
Merge origin/develop into React Native 0.86 upgrade
diegolmello Sep 21, 2026
5c0c03a
fix(ios): adopt UIScene lifecycle for iOS 27
diegolmello Sep 22, 2026
be08fca
chore(deps): add react-native-enriched-markdown@1.0.2
diegolmello Sep 22, 2026
a0b5ede
refactor(markdown): render via react-native-enriched-markdown
diegolmello Sep 22, 2026
435c8b1
test(markdown): cover the enriched-markdown serializer and update sna…
diegolmello Sep 22, 2026
2f86dc4
fix(android): stop gesture-handler buttons hijacking hardware Enter/D…
diegolmello Sep 22, 2026
49c7994
fix(room-list): close other swiped room items when a new one opens
diegolmello Sep 23, 2026
6c6bdf5
test(room-list): drop tautological swipe test, keep mock reverted
diegolmello Sep 23, 2026
f8c9edb
fix(markdown): cap big-emoji block image height to match text-sized i…
diegolmello Sep 23, 2026
4322d52
fix(room-list): close open row on press-in of another row
diegolmello Sep 23, 2026
aba4a85
wip: gesture manual restructuring attempt (bisect checkpoint)
diegolmello Sep 23, 2026
f0c0c80
fix(room-list): close open swipe row via plain JS registry
diegolmello Sep 23, 2026
cb0d380
fix(room-list): swallow tap that only closes another open row
diegolmello Sep 23, 2026
4a6edf1
fix(room-list): close other row's swipe animation from the UI thread
diegolmello Sep 23, 2026
c449cf5
feat(room-list): WhatsApp-style swipe actions and release spring
diegolmello Sep 23, 2026
c3edcf9
feat(ios): adopt the system navigation bar as the stack default
diegolmello Sep 17, 2026
1dd4309
feat(ios): native room title and body focus anchor
diegolmello Sep 17, 2026
3a5436f
feat(ios): rooms list on the native navigation bar
diegolmello Sep 17, 2026
03040e8
feat(ios): cap room header bar items with an overflow menu
diegolmello Sep 17, 2026
628c953
feat(ios): system search bar on the rooms list
diegolmello Sep 17, 2026
3359a50
feat(ios): workspaces row in the phone drawer
diegolmello Sep 17, 2026
52864c6
feat(ios): system search bar across list screens
diegolmello Sep 17, 2026
0c8b84e
test(maestro): retarget header selectors for the native iOS bar
diegolmello Sep 17, 2026
af40412
test(maestro): finish header selector retargeting for the native iOS bar
diegolmello Sep 17, 2026
f2156d6
test(maestro): harden native bar selectors after review
diegolmello Sep 17, 2026
59e8d39
fix(ios): inset rooms list under the native navigation bar
diegolmello Sep 18, 2026
40e64ea
fix(ios): restore translucent gray native header and collapse search bar
diegolmello Sep 18, 2026
d9a2bc7
feat(ios): move rooms list search to the bottom toolbar
diegolmello Sep 18, 2026
143ebb3
fix(ios): make native headers opaque and drop the large title
diegolmello Sep 18, 2026
388d70b
commit search
diegolmello Sep 18, 2026
b9de573
fix(ios): restore the legacy title headers under the native bar
diegolmello Sep 18, 2026
710e4d3
fix(ios): remove the workspaces entry from the drawer
diegolmello Sep 18, 2026
349ddbb
fix(ios): show native title with connection state text on rooms list …
diegolmello Sep 18, 2026
bccdfdb
chore(ios): revert xcode project churn from local build
diegolmello Sep 18, 2026
0e8fbce
feat(ios): add headerSubtitle native-stack option via patches
diegolmello Sep 18, 2026
5f519d2
fix(android): add no-op setSubtitle override to screens header config
diegolmello Sep 18, 2026
a1738d9
feat(ios): use native header subtitle for rooms list connection state
diegolmello Sep 18, 2026
3a360f8
feat(rooms): use native iOS room headers
diegolmello Sep 21, 2026
8b4ddd4
fix local navigation package resolution
diegolmello Sep 21, 2026
c589eb6
use local libs
diegolmello Sep 21, 2026
bcb8d53
chore: regenerate native-stack and react-native-screens patches from …
diegolmello Sep 22, 2026
a48a9f2
chore: update Podfile.lock after pod install
diegolmello Sep 22, 2026
1d6a2a6
feat(header): add native header item helpers for outside-stack screens
diegolmello Sep 22, 2026
8ee6f29
refactor(header): consolidate room header right buttons into shared c…
diegolmello Sep 22, 2026
a59cf67
fix(test): match both Android back-button testIDs in go-back helper
diegolmello Sep 23, 2026
8946b90
fix(test): match iOS native header items by label instead of testID
diegolmello Sep 23, 2026
0bed1b0
fix(test): migrate remaining Maestro flows to iOS-safe header assertions
diegolmello Sep 23, 2026
e8b8cfb
fix(test): match iOS back button by label instead of testID
diegolmello Sep 23, 2026
bfe70e9
fix(ios): render Liquid Glass on native headers
diegolmello Sep 23, 2026
7ee5794
fix(room-list): match left action width and tighten swipe release rules
diegolmello Sep 23, 2026
e991cf0
feat(ios): use app icons on native header buttons
diegolmello Sep 23, 2026
983c6f6
fix(ios): load local header icons synchronously to avoid title flash
diegolmello Sep 23, 2026
59b5c84
fix(room-list): refresh row when its record changes
diegolmello Sep 23, 2026
a4ee602
refactor(room-list): write gesture flag with shared value set
diegolmello Sep 23, 2026
f1f0180
fix(a11y): close drawer when navigating to the focused sidebar route …
diegolmello Sep 23, 2026
35729e0
fix(ios): render room title icon with the title on first frame
diegolmello Sep 23, 2026
07cfcd6
fix(ios): size room header icons to the title font and restore title/…
diegolmello Sep 23, 2026
0ae44ec
fix(ios): keep drawer content below the status bar
diegolmello Sep 23, 2026
36b9c60
fix(markdown): render custom emoji inline with font-scaled sizes
diegolmello Sep 23, 2026
a5a7fe8
fix(markdown): fix iOS image cache key and animate custom emoji
diegolmello Sep 23, 2026
bd8884b
feat(ios): open room header overflow actions as a native menu
diegolmello Sep 23, 2026
c9510c8
fix(markdown): render mentions bold without underline
diegolmello Sep 23, 2026
b2ea3b2
fix(ios): match custom header icon size to system bar icons
diegolmello Sep 23, 2026
3a82f7c
fix(markdown): render inline KaTeX natively and honor KaTeX syntax se…
diegolmello Sep 23, 2026
452ba1e
fix(markdown): render block KaTeX natively and drop the WebView math …
diegolmello Sep 23, 2026
c692787
fix(markdown): disable text selection on message markdown
diegolmello Sep 23, 2026
63ebbfd
feat(ios): open room actions from the native room title
diegolmello Sep 23, 2026
12348cb
feat(ios): open workspaces from the rooms list title
diegolmello Sep 23, 2026
64497ea
test(markdown): update message story snapshots
diegolmello Sep 23, 2026
a7331d3
chore(ios): patch screens and native-stack for title press and icon l…
diegolmello Sep 23, 2026
e30bf6c
feat(ios): use the native back button in the room header
diegolmello Sep 23, 2026
15b785c
fix(ios): match header icon spacing to system bar items
diegolmello Sep 23, 2026
5f46f5b
fix(ios): guard room header title before formatting
diegolmello Sep 24, 2026
c99d961
feat(ios): present tablet modals as native form sheets
diegolmello Sep 24, 2026
4c81e3f
fix(ios): show the room back button only when it can go back
diegolmello Sep 24, 2026
42f4f81
feat(ios): use the native glass header for the tablet rooms list
diegolmello Sep 24, 2026
b8220d5
fix(ios): dismiss the tablet rooms search when a room opens
diegolmello Sep 24, 2026
397cf92
fix(ios): use native room header items on tablet
diegolmello Sep 24, 2026
8b90103
fix(ios): let the tablet rooms search be cancelled
diegolmello Sep 24, 2026
7c3c620
fix(ci): skip libratex_ffi symbols in Bugsnag NDK upload
diegolmello Sep 24, 2026
e316723
fix(room-list): show selected room tint only in master-detail
diegolmello Sep 24, 2026
7fae648
fix(room-list): re-render row on every record change
diegolmello Sep 24, 2026
c3268bc
fix(room-list): read swipe offset from shared value
diegolmello Sep 24, 2026
4718502
test(room-list): assert close resets translation
diegolmello Sep 24, 2026
26af173
refactor(room-list): observe row record without opting out of the com…
diegolmello Sep 24, 2026
2275bdc
chore(ci): bump bugsnag-cli and exclude libratex_ffi symbols
diegolmello Sep 24, 2026
ca7b341
fix(room-list): reset closed-row tap guard on every touch
diegolmello Sep 24, 2026
f3ac0f7
fix(room-list): close previously open row when another row opens
diegolmello Sep 24, 2026
e4a83a3
fix(ios): show the room avatar in the tablet room header
diegolmello Sep 24, 2026
c9aa277
fix(ios): tint native headers with the theme surface color
diegolmello Sep 24, 2026
7534d50
fix(markdown): address review findings
diegolmello Sep 24, 2026
e4bbb89
refactor(ios): gate native headers on iOS 26 and drop dead header code
diegolmello Sep 24, 2026
c9ab16e
fix(ios): restore rooms list large title and bottom search bar on iPhone
diegolmello Sep 24, 2026
ebc314c
refactor(room-list): address review feedback
diegolmello Sep 24, 2026
c0bb631
refactor(markdown): address code review findings
diegolmello Sep 24, 2026
6e4e4ca
perf(rooms-list): render single-style labels with react-native-plain-…
diegolmello Sep 24, 2026
c8f9132
fix(ios): merge header right buttons and fix threads list header
diegolmello Sep 24, 2026
55e9b16
perf: render single-style labels app-wide with react-native-plain-text
diegolmello Sep 24, 2026
3019efe
perf(markdown): render MarkdownPreview with react-native-plain-text
diegolmello Sep 24, 2026
94110c8
chore(ios): replace app icon with Icon Composer icon
diegolmello Sep 24, 2026
96e535d
fix(test): restore sequential Android back taps in go-back helper
diegolmello Sep 25, 2026
75d0303
fix(test): pop to the rooms list before navigating to a room
diegolmello Sep 25, 2026
e7a9d5c
ci(ios): restore Xcode version pin
diegolmello Sep 25, 2026
1f12a34
Merge remote-tracking branch 'origin/diegolmello/native-1561-rn-upgra…
diegolmello Sep 25, 2026
e96f669
ci(ios): pin Xcode 26.6
diegolmello Sep 25, 2026
6453b20
feat(ios): use Expo UI List for List.Container (#7721)
diegolmello Sep 25, 2026
79978d4
fix(ios): animate join code and two-factor modals without the native …
diegolmello Sep 25, 2026
cf6bc4c
fix(a11y): expose PlainText labels to iOS accessibility
diegolmello Sep 25, 2026
083f64c
fix(ios): scope liquid glass input to StatusView and fix its borders
diegolmello Sep 25, 2026
0a5f526
fix(ios): align rooms list large title and match its background
diegolmello Sep 25, 2026
f9acdf0
feat(ios): default avatar border radius to 8 on iOS 26
diegolmello Sep 25, 2026
48af598
fix(ios): add vertical padding to room actions info row on iOS 26
diegolmello Sep 25, 2026
80d9118
fix(ios): use native header search and list indicators on members, di…
diegolmello Sep 25, 2026
f60d759
fix(ios): drop large titles and align list screens with native headers
diegolmello Sep 25, 2026
079fc6f
chore(ios): update Xcode project
diegolmello Sep 25, 2026
3941663
fix(ios): match room back chevron weight to the system back button
diegolmello Sep 25, 2026
b320948
ci: add preloadNativeHeaderIcons saga to test map
diegolmello Sep 25, 2026
a271f00
perf(ios): render directory with FlashList and a React Native list row
diegolmello Sep 28, 2026
c1ac40b
refactor(ios): split list row trailing action and build header items …
diegolmello Sep 28, 2026
c2d0e03
fix(ios): match room actions info row disclosure and background to na…
diegolmello Sep 28, 2026
459b410
fix(ios): show connection state in DM header and share room type icon…
diegolmello Sep 28, 2026
5430efd
perf(room-list): mount swipe actions only while the row is moved
diegolmello Sep 28, 2026
c81a519
fix(ios): use Icon Composer app icon for the Watch target
diegolmello Sep 28, 2026
a94e0f1
fix(ios): present modals as native page sheets
diegolmello Sep 28, 2026
989de54
chore: tidy RN 0.86 upgrade leftovers
diegolmello Sep 28, 2026
681d520
chore(deps): upgrade react-native-gesture-handler to 3.3.0 (#7726)
diegolmello Sep 29, 2026
1c6bd41
Merge branch 'develop' into diegolmello/native-1561-rn-upgrade
diegolmello Sep 29, 2026
7ae1e21
Merge remote-tracking branch 'origin/diegolmello/native-1561-rn-upgra…
diegolmello Sep 29, 2026
e383ca4
test: refresh audio button snapshots after gesture handler upgrade
diegolmello Sep 29, 2026
e1fe84c
fix: restore React Native Gradle plugin composite build
diegolmello Sep 29, 2026
56ab7b2
fix(ios): render sidebar sections inline in iPad settings
diegolmello Sep 29, 2026
426ed44
Merge remote-tracking branch 'origin/diegolmello/native-1561-rn-upgra…
diegolmello Sep 29, 2026
5774132
Merge remote-tracking branch 'origin/diegolmello/native-1561-rn-upgra…
diegolmello Sep 29, 2026
4c741f4
Merge remote-tracking branch 'origin/diegolmello/native-1561-rn-upgra…
diegolmello Sep 29, 2026
e1f15e3
test: add Maestro room scroll-to-top performance flow
diegolmello Sep 29, 2026
c8cc2ee
refactor(RoomItem): settle swipe on the UI thread and mirror it in RTL
diegolmello Sep 29, 2026
d9b9501
fix(RoomItem): close the open row when a swipe-disabled row is tapped
diegolmello Sep 29, 2026
b95a70b
fix(ios): keep stacked search bars visible when lists scroll
diegolmello Sep 29, 2026
d8c47f4
test(ios): tap the room header title by testID to open room actions
diegolmello Sep 29, 2026
169272b
test(ios): adapt e2e helpers to the native header
diegolmello Sep 29, 2026
e1a4b62
Merge remote-tracking branch 'origin/diegolmello/native-1561-rn-upgra…
diegolmello Sep 29, 2026
34fcf4f
Merge remote-tracking branch 'origin/diegolmello/global-room-item-swi…
diegolmello Sep 29, 2026
1035835
Merge remote-tracking branch 'origin/diegolmello/rooms-list-plain-tex…
diegolmello Sep 29, 2026
8b6969d
feat(ios): add native context menu with preview to RoomItem
diegolmello Sep 24, 2026
19da1eb
fix(ios): keep RoomItem rows full-width inside the native context menu
diegolmello Sep 24, 2026
cfc68c3
feat(ios): add native context menu with preview to messages
diegolmello Sep 24, 2026
70bc653
feat(ios): show icon-font glyphs in native context menu items
diegolmello Sep 24, 2026
4f59a3b
feat(room): migrate messages list to Legend List
diegolmello Sep 29, 2026
6c40929
feat(rooms-list): render rooms list with Legend List
diegolmello Sep 29, 2026
96bfbc6
test: refresh snapshots for PlainText accessibility props
diegolmello Sep 29, 2026
14d846b
fix(theme): reset iOS color scheme override before resolving automati…
diegolmello Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 2 additions & 11 deletions .github/actions/build-android/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,8 @@ runs:
- name: Set gradle.properties
working-directory: android
run: |
echo "" > ./gradle.properties
echo -e "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" >> ./gradle.properties
echo -e "android.useAndroidX=true" >> ./gradle.properties
echo -e "android.enableJetifier=true" >> ./gradle.properties
echo -e "android.jetifier.ignorelist=bcprov-jdk18on" >> ./gradle.properties
echo -e "reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64" >> ./gradle.properties
echo -e "newArchEnabled=true" >> ./gradle.properties
echo -e "hermesEnabled=true" >> ./gradle.properties
echo -e "edgeToEdgeEnabled=true" >> ./gradle.properties
printf '\n' >> ./gradle.properties
echo -e "VERSIONCODE=${{ inputs.BUILD_VERSION }}" >> ./gradle.properties
echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties
echo -e "BugsnagAPIKey=${{ inputs.BUGSNAG_KEY_OFFICIAL }}" >> ./gradle.properties
echo -e "KEYSTORE=${{ inputs.KEYSTORE_OFFICIAL }}" >> ./gradle.properties
echo -e 'KEYSTORE_PASSWORD=${{ inputs.KEYSTORE_OFFICIAL_PASSWORD }}' >> ./gradle.properties
Expand Down Expand Up @@ -154,7 +145,7 @@ runs:
- name: Upload sourcemaps/NDK symbols to Bugsnag
run: |
pnpm bugsnag:upload-android --variant release --app-manifest android/app/build/intermediates/merged_manifests/release/processReleaseManifest/AndroidManifest.xml
pnpm exec bugsnag-cli upload android-aab android/app/build/outputs/bundle/release/app-release.aab
pnpm exec bugsnag-cli upload android-aab --exclude "**/libratex_ffi.so*" android/app/build/outputs/bundle/release/app-release.aab
shell: bash

- name: Upload AAB
Expand Down
6 changes: 3 additions & 3 deletions .github/actions/build-ios/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ runs:
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
with:
xcode-version: '26.2.0'
xcode-version: '26.6'

- name: Set up Ruby
uses: ruby/setup-ruby@7372622e62b60b3cb750dcd2b9e32c247ffec26a # v1.302.0
Expand All @@ -58,9 +58,9 @@ runs:
path: |
~/.pods
ios/Pods
key: pods-v1-{{ checksum "ios/Podfile.lock" }}
key: pods-v2-${{ hashFiles('ios/Podfile.lock') }}
restore-keys: |
pods-v1-
pods-v2-

- name: pod install
run: |
Expand Down
6 changes: 3 additions & 3 deletions .github/actions/upload-ios/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,14 @@ runs:
path: |
~/.pods
ios/Pods
key: pods-v1-{{ checksum "ios/Podfile.lock" }}
key: pods-v2-${{ hashFiles('ios/Podfile.lock') }}
restore-keys: |
pods-v1-
pods-v2-

- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
with:
xcode-version: '26.2.0'
xcode-version: '26.6'

- name: Set up Ruby
uses: ruby/setup-ruby@7372622e62b60b3cb750dcd2b9e32c247ffec26a # v1.302.0
Expand Down
10 changes: 1 addition & 9 deletions .github/workflows/e2e-build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,8 @@ jobs:
- name: Set gradle.properties
working-directory: android
run: |
echo "" > ./gradle.properties
echo -e "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" >> ./gradle.properties
echo -e "android.useAndroidX=true" >> ./gradle.properties
echo -e "android.enableJetifier=true" >> ./gradle.properties
echo -e "android.jetifier.ignorelist=bcprov-jdk18on" >> ./gradle.properties
printf '\n' >> ./gradle.properties
echo -e "reactNativeArchitectures=arm64-v8a,x86_64" >> ./gradle.properties
echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties
echo -e "newArchEnabled=true" >> ./gradle.properties
echo -e "hermesEnabled=true" >> ./gradle.properties
echo -e "edgeToEdgeEnabled=true" >> ./gradle.properties
echo -e "VERSIONCODE=999999" >> ./gradle.properties
echo -e "KEYSTORE=release.keystore" >> ./gradle.properties
echo -e 'KEYSTORE_PASSWORD=${{ secrets.KEYSTORE_OFFICIAL_PASSWORD }}' >> ./gradle.properties
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
with:
xcode-version: '26.2.0'
xcode-version: '26.6'

- name: Set up Ruby
uses: ruby/setup-ruby@7372622e62b60b3cb750dcd2b9e32c247ffec26a # v1.302.0
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/eslint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,13 @@ jobs:
uses: ./.github/actions/setup-node

- name: Run Oxlint
run: pnpm lint
run: pnpm exec oxlint

- name: Run TypeScript
run: pnpm exec tsc

- name: Run Tests
run: pnpm test --runInBand
run: pnpm test

- name: Validate sniffler test-map freshness
run: node .github/scripts/validate-test-map.js
1 change: 1 addition & 0 deletions .github/workflows/maestro-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -204,4 +204,5 @@ jobs:
~/.maestro/tests/**/*
maestro-report.xml
maestro-rerun-round-*.xml
*.mp4
retention-days: 7
3 changes: 2 additions & 1 deletion .github/workflows/maestro-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
# Match the Xcode version e2e-build-ios.yml builds with
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
with:
xcode-version: '26.2.0'
xcode-version: '26.6'

- name: Configure Simulator
run: |
Expand Down Expand Up @@ -144,4 +144,5 @@ jobs:
~/.maestro/tests/**/*
maestro-report.xml
maestro-rerun-round-*.xml
*.mp4
retention-days: 7
2 changes: 1 addition & 1 deletion .github/workflows/organize_translations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 18
node-version: 22

- name: Run script to organize JSON keys
run: node scripts/organize-translations.js
Expand Down
23 changes: 23 additions & 0 deletions .maestro/helpers/assert-room-title.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
appId: ${APP_ID}
name: Assert room title
tags:
- 'util'

---
- runFlow:
when:
platform: Android
commands:
- extendedWaitUntil:
visible:
id: 'room-view-title-${ROOM}'
timeout: 60000

- runFlow:
when:
platform: iOS
commands:
- extendedWaitUntil:
visible:
text: '${ROOM}'
timeout: 60000
18 changes: 18 additions & 0 deletions .maestro/helpers/clear-search-field.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
appId: ${APP_ID}
name: Clear search field
tags:
- 'util'
---
- runFlow:
when:
platform: iOS
commands:
- tapOn:
id: 'magnifyingglass'
- eraseText
- runFlow:
when:
platform: android
commands:
- tapOn:
id: clear-text-input
13 changes: 13 additions & 0 deletions .maestro/helpers/close-search.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
appId: ${APP_ID}
name: Close search
tags:
- 'util'
---
- runFlow:
when:
platform: iOS
visible:
text: 'Close'
commands:
- tapOn:
text: 'Close'
11 changes: 5 additions & 6 deletions .maestro/helpers/go-back.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,15 @@ tags:
---
- runFlow:
when:
visible:
id: 'custom-header-back'
platform: Android
commands:
- tapOn:
id: 'custom-header-back'
id: '(custom-)?header-back'

- runFlow:
when:
visible:
id: 'header-back'
platform: iOS
commands:
- tapOn:
id: 'header-back'
text: 'Back(, .*)?'
retryTapIfNoChange: true
5 changes: 5 additions & 0 deletions .maestro/helpers/login-with-deeplink.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ tags:
visible: ".*isn't responding.*"
commands:
- tapOn: 'Wait'
- runFlow:
when:
visible: 'Sign in to this workspace?'
commands:
- tapOn: '(?i)login'
- extendedWaitUntil:
visible:
id: 'rooms-list-view'
Expand Down
10 changes: 10 additions & 0 deletions .maestro/helpers/logout.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,22 @@ tags:

- runFlow:
when:
platform: Android
visible:
id: 'rooms-list-view-sidebar'
commands:
- tapOn:
id: 'rooms-list-view-sidebar'

- runFlow:
when:
platform: iOS
visible:
text: 'Menu'
commands:
- tapOn:
text: 'Menu'

- runFlow:
when:
platform: Android
Expand Down
24 changes: 14 additions & 10 deletions .maestro/helpers/navigate-to-recent-room.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,23 @@ tags:
visible:
id: 'rooms-list-view'
timeout: 60000
- tapOn:
id: 'rooms-list-view-search'
- extendedWaitUntil:
visible:
id: 'rooms-list-view-search-input'
timeout: 60000
- runFlow:
when:
platform: android
commands:
- tapOn:
id: 'rooms-list-view-search'
- extendedWaitUntil:
visible:
id: 'rooms-list-view-search-input'
timeout: 60000
- extendedWaitUntil:
visible:
id: 'rooms-list-view-item-${ROOM}'
timeout: 60000
- tapOn:
id: 'rooms-list-view-item-${ROOM}'
- extendedWaitUntil:
visible:
id: 'room-view-title-${ROOM}'
timeout: 60000
- runFlow:
file: 'assert-room-title.yaml'
env:
ROOM: ${ROOM}
12 changes: 2 additions & 10 deletions .maestro/helpers/navigate-to-room-action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,5 @@ tags:
visible:
id: 'room-view'
timeout: 60000
- assertVisible:
id: 'room-header'
index: 0
- tapOn:
id: 'room-header'
index: 0
- extendedWaitUntil:
visible:
id: 'room-actions-view'
timeout: 60000

- runFlow: './open-room-actions.yaml'
9 changes: 5 additions & 4 deletions .maestro/helpers/navigate-to-room.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ tags:
- 'util'

---
- runFlow: './pop-to-rooms-list.yaml'
- waitForAnimationToEnd
- scrollUntilVisible:
element:
id: 'rooms-list-view-item-${ROOM}'
- waitForAnimationToEnd
- tapOn:
id: 'rooms-list-view-item-${ROOM}'
- extendedWaitUntil:
visible:
id: 'room-view-title-${ROOM}'
timeout: 60000
- runFlow:
file: 'assert-room-title.yaml'
env:
ROOM: ${ROOM}
18 changes: 18 additions & 0 deletions .maestro/helpers/open-room-actions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
appId: ${APP_ID}
name: Open room actions
tags:
- 'util'

---
- extendedWaitUntil:
visible:
id: 'room-header'
timeout: 60000
- tapOn:
id: 'room-header'
index: 0
retryTapIfNoChange: true
- extendedWaitUntil:
visible:
id: 'room-actions-view'
timeout: 60000
32 changes: 32 additions & 0 deletions .maestro/helpers/open-servers-list.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
appId: ${APP_ID}
name: Open servers list
tags:
- 'util'

---
- runFlow:
when:
platform: iOS
commands:
- extendedWaitUntil:
visible:
text: 'Menu'
timeout: 60000
- tapOn:
text: '(?!\d{1,2}:\d{2}).+'
rightOf:
text: 'Menu'
leftOf:
text: 'Create new channel.*'
index: 0

- runFlow:
when:
platform: Android
commands:
- extendedWaitUntil:
visible:
id: 'rooms-list-header-servers-list-button'
timeout: 60000
- tapOn:
id: 'rooms-list-header-servers-list-button'
Loading
Loading