Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
f7aef7f
feat: Avatar on push notifications (#6853)
diegolmello Jan 6, 2026
b990e60
feat: render timestamp markdown (#6266)
Rohit3523 Jan 7, 2026
1fe0bf7
fix(Android): Push notification on killed apps and deep link (#6888)
diegolmello Jan 8, 2026
c21d91e
fix: push notification titles and avatars for discussions and threads…
diegolmello Jan 9, 2026
ede2569
fix(iOS): official target missing build phases (#6905)
diegolmello Jan 9, 2026
41823b8
fix: pass tmid to show typing status in threads (#6894)
Rohit3523 Jan 16, 2026
ad951f9
fix: timestamp bug fixes (#6910)
Rohit3523 Jan 16, 2026
508b720
fix: chat fails to load older messages when scrolling to the top (#6861)
Rohit3523 Jan 16, 2026
c52af04
fix: Keep connecting label on header while logging in (#6920)
Rohit3523 Jan 16, 2026
7b483e6
chore: changelog in beta release (#6899)
Rohit3523 Jan 16, 2026
ad2f552
chore: added concurrency on develop action (#6921)
Rohit3523 Jan 16, 2026
c079de0
chore(Android): fix CI generated changelog (#6922)
Rohit3523 Jan 16, 2026
12fb458
fix (android): unable to send files in E2EE channel using action menu…
Rohit3523 Jan 18, 2026
2afa9ee
fix(iOS): app crashing on render image (#6908)
OtavioStasiak Jan 19, 2026
88eb8b3
fix: review button visibility issue on voice recording screen (#6941)
Rohit3523 Jan 23, 2026
ef13690
fix: Click on Show more on ModalActions breaks the app (#6942)
OtavioStasiak Jan 23, 2026
e1af190
fix: default browser setting (#6929)
Rohit3523 Jan 23, 2026
fa43d2a
Merge branch 'master' into 4.69.0-master
diegolmello Feb 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion .github/actions/upload-android/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,26 @@ runs:
echo "${{ inputs.FASTLANE_GOOGLE_SERVICE_ACCOUNT }}" | base64 --decode > service_account.json
shell: bash

- uses: actions/download-artifact@v4
if: ${{ inputs.trigger == 'develop' }}
with:
name: release-changelog
path: .

- name: Prepare Play Store changelog metadata
if: ${{ inputs.trigger == 'develop' }}
run: |
mkdir -p android/fastlane/metadata/android/en-US/changelogs

if [ -f changelog.txt ]; then
node .github/scripts/prepare-changelog.js
else
printf "Internal improvements and bug fixes" > "android/fastlane/metadata/android/en-US/changelogs/${BUILD_VERSION}.txt"
fi
shell: bash
env:
BUILD_VERSION: ${{ inputs.BUILD_VERSION }}

- name: Fastlane Play Store Upload
working-directory: android
run: |
Expand All @@ -65,7 +85,6 @@ runs:
if [[ ${{ inputs.trigger }} == "develop" ]] && [[ ${{ inputs.type }} == 'official' ]]; then
bundle exec fastlane android official_open_testing
fi

shell: bash

- name: Leave a comment on PR
Expand Down
8 changes: 7 additions & 1 deletion .github/actions/upload-ios/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,12 @@ runs:
yarn pod-install
shell: bash

- uses: actions/download-artifact@v4
if: ${{ inputs.type == 'official' && inputs.trigger == 'develop' }}
with:
name: release-changelog
path: .

- name: Fastlane Submit to TestFlight
working-directory: ios
run: |
Expand Down Expand Up @@ -157,4 +163,4 @@ runs:
message="**iOS Build Available**"$'\n\n'"$app_name $VERSION_NAME.$BUILD_VERSION"

gh pr comment "$PR_NUMBER" --body "$message"
shell: bash
shell: bash
20 changes: 20 additions & 0 deletions .github/scripts/prepare-changelog.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const fs = require("fs");

const buildVersion = process.env.BUILD_VERSION;
const input = fs.readFileSync("changelog.txt", "utf8");
Comment on lines +3 to +4

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add validation for required inputs.

If BUILD_VERSION is not set, the script will write to android/fastlane/metadata/android/en-US/changelogs/undefined.txt. Similarly, if changelog.txt doesn't exist, the script crashes with an unhelpful ENOENT error.

🛡️ Proposed fix to add input validation
 const fs = require("fs");
 
 const buildVersion = process.env.BUILD_VERSION;
+if (!buildVersion) {
+  console.error("BUILD_VERSION environment variable is required");
+  process.exit(1);
+}
+
+if (!fs.existsSync("changelog.txt")) {
+  console.error("changelog.txt not found");
+  process.exit(1);
+}
+
 const input = fs.readFileSync("changelog.txt", "utf8");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const buildVersion = process.env.BUILD_VERSION;
const input = fs.readFileSync("changelog.txt", "utf8");
const buildVersion = process.env.BUILD_VERSION;
if (!buildVersion) {
console.error("BUILD_VERSION environment variable is required");
process.exit(1);
}
if (!fs.existsSync("changelog.txt")) {
console.error("changelog.txt not found");
process.exit(1);
}
const input = fs.readFileSync("changelog.txt", "utf8");
🤖 Prompt for AI Agents
In @.github/scripts/prepare-changelog.js around lines 3 - 4, The script reads
process.env.BUILD_VERSION into buildVersion and reads changelog.txt into input
without validation; add explicit checks: verify buildVersion is defined
(process.env.BUILD_VERSION) and exit or throw a clear error message if missing,
and verify changelog.txt exists (use fs.existsSync or try/catch around
fs.readFileSync for input) and surface a helpful ENOENT-style message instead of
crashing; also ensure any downstream use of buildVersion to construct the output
path uses the validated buildVersion to avoid writing to "undefined.txt".


const segmenter = new Intl.Segmenter("en", { granularity: "grapheme" });
const chars = Array.from(segmenter.segment(input), s => s.segment);

let output;
if (chars.length > 500) {
output = chars.slice(0, 497).join("") + "...";
} else {
output = input;
}

fs.writeFileSync(
`android/fastlane/metadata/android/en-US/changelogs/${buildVersion}.txt`,
output,
"utf8"
);
17 changes: 13 additions & 4 deletions .github/workflows/build-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,26 @@ on:
branches:
- 'develop'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
run-eslint-and-test:
name: ESLint and Test
if: ${{ github.repository == 'RocketChat/Rocket.Chat.ReactNative' }}
uses: ./.github/workflows/eslint.yml

generate-changelog:
name: Generate Release Changelog
needs: [run-eslint-and-test]
uses: ./.github/workflows/generate-changelog.yml

android-build-experimental-store:
name: Build Android Experimental
if: ${{ github.repository == 'RocketChat/Rocket.Chat.ReactNative' }}
uses: ./.github/workflows/build-android.yml
needs: [run-eslint-and-test]
needs: [run-eslint-and-test, generate-changelog]
secrets: inherit
with:
type: experimental
Expand All @@ -28,7 +37,7 @@ jobs:
name: Build Android Official
if: ${{ github.repository == 'RocketChat/Rocket.Chat.ReactNative' }}
uses: ./.github/workflows/build-official-android.yml
needs: [run-eslint-and-test]
needs: [run-eslint-and-test, generate-changelog]
secrets: inherit
with:
type: official
Expand All @@ -38,7 +47,7 @@ jobs:
name: Build iOS Experimental
if: ${{ github.repository == 'RocketChat/Rocket.Chat.ReactNative' }}
uses: ./.github/workflows/build-ios.yml
needs: [run-eslint-and-test]
needs: [run-eslint-and-test, generate-changelog]
secrets: inherit
with:
type: experimental
Expand All @@ -48,7 +57,7 @@ jobs:
name: Build iOS Official
if: ${{ github.repository == 'RocketChat/Rocket.Chat.ReactNative' }}
uses: ./.github/workflows/build-official-ios.yml
needs: [run-eslint-and-test]
needs: [run-eslint-and-test, generate-changelog]
secrets: inherit
with:
type: official
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-official-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
upload-android:
name: Upload
runs-on: ubuntu-latest
needs: [upload-hold]
needs: [build-android, upload-hold]
if: ${{ inputs.type == 'official' && (always() && (needs.upload-hold.result == 'success' || needs.upload-hold.result == 'skipped')) }}
steps:
- name: Checkout Repository
Expand All @@ -85,7 +85,7 @@ jobs:
trigger: ${{ inputs.trigger }}
FASTLANE_GOOGLE_SERVICE_ACCOUNT: ${{ secrets.FASTLANE_GOOGLE_SERVICE_ACCOUNT }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_VERSION: ${{ needs.upload-hold.outputs.BUILD_VERSION }}
BUILD_VERSION: ${{ needs.build-android.outputs.BUILD_VERSION }}

upload-internal:
name: Internal Sharing
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/generate-changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Generate Release Changelog

on:
workflow_call:

jobs:
generate-changelog:
name: Generate changelog
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Generate changelog
shell: bash
run: |
LATEST_RELEASE_TAG=$(git tag --sort=-creatordate | head -n 1)

if [ -z "$LATEST_RELEASE_TAG" ]; then
echo "- Improvements and bug fixes" > changelog.txt
exit 0
fi

git log "$LATEST_RELEASE_TAG"..HEAD --pretty=format:"- %s" --no-merges > changelog.txt

if [ ! -s changelog.txt ]; then
echo "- Improvements and bug fixes" > changelog.txt
fi

- name: Upload changelog artifact
uses: actions/upload-artifact@v4
with:
name: release-changelog
path: changelog.txt
retention-days: 15
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode VERSIONCODE as Integer
versionName "4.68.2"
versionName "4.69.0"
vectorDrawables.useSupportLibrary = true
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
resValue "string", "rn_config_reader_custom_package", "chat.rocket.reactnative"
Expand Down
Loading
Loading