Skip to content

Commit 1a3607f

Browse files
committed
Merge branch 'dev'
2 parents 9b74ef4 + bd2f2ca commit 1a3607f

15 files changed

Lines changed: 181 additions & 32 deletions

File tree

.github/workflows/build-android.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ jobs:
7777
run: eas build --platform android --profile ${{ github.event.inputs.profile || 'preview' }} --local --output=${{ github.workspace }}/build.${{ github.event.inputs.profile == 'production' && 'aab' || 'apk' }}
7878
env:
7979
EAS_NO_FROZEN_LOCKFILE: "1"
80+
npm_config_node_linker: isolated
81+
npm_config_shamefully_hoist: "false"
8082

8183
- name: 📤 Upload apk Artifact
8284
if: github.event.inputs.profile != 'production'

.github/workflows/build-desktop.yml

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,48 @@ jobs:
165165
npx electron-forge make --arch=arm64 --platform=darwin ${{ env.PROD == 'false' && '--mode=staging' || '' }}
166166
npx tsx scripts/merge-yml.ts
167167
168+
- name: Resolve desktop build version
169+
if: runner.os == 'macOS' && github.event.inputs.store == 'true'
170+
id: desktop_build_version
171+
shell: bash
172+
run: |
173+
set -euo pipefail
174+
175+
build_version="${{ github.event.inputs.build_version }}"
176+
177+
if [ -n "$build_version" ]; then
178+
echo "Using provided desktop build version: $build_version"
179+
echo "build_version=$build_version" >> "$GITHUB_OUTPUT"
180+
exit 0
181+
fi
182+
183+
git fetch --tags --force
184+
185+
latest_tag="$(git tag -l 'desktop-build/v*' --sort=-v:refname | head -n 1)"
186+
if [ -z "$latest_tag" ]; then
187+
last_build=110
188+
else
189+
last_build="${latest_tag#desktop-build/v}"
190+
fi
191+
192+
build_version=$((last_build + 1))
193+
build_tag="desktop-build/v${build_version}"
194+
195+
git config user.name "github-actions[bot]"
196+
git config user.email "github-actions[bot]@users.noreply.github.com"
197+
git tag "$build_tag"
198+
git push origin "$build_tag"
199+
200+
echo "Reserved desktop build version: ${build_version}"
201+
echo "build_version=$build_version" >> "$GITHUB_OUTPUT"
202+
168203
- name: Build - Mac App Store
169204
if: runner.os == 'macOS' && github.event.inputs.store == 'true'
170205
env:
171206
OSX_SIGN_KEYCHAIN_PATH: ${{ runner.temp }}/app-signing.keychain-db
172207
OSX_SIGN_IDENTITY: ${{ secrets.OSX_SIGN_IDENTITY_MAS }}
173208
OSX_SIGN_PROVISIONING_PROFILE_PATH: ${{ runner.temp }}/build_pp.provisionprofile
174-
BUILD_VERSION: ${{ github.event.inputs.build_version }}
209+
BUILD_VERSION: ${{ steps.desktop_build_version.outputs.build_version }}
175210
working-directory: apps/desktop
176211
run: pnpm build:electron-forge:mas
177212

.github/workflows/build-ios-development.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ jobs:
5858
EAS_NO_FROZEN_LOCKFILE: "1"
5959
SENTRY_AUTH_TOKEN: ${{ secrets.RN_SENTRY_AUTH_TOKEN }}
6060
CI: true
61+
npm_config_node_linker: isolated
62+
npm_config_shamefully_hoist: "false"
6163

6264
# Optional: Upload artifact
6365
- name: 📤 Upload IPA
@@ -109,6 +111,8 @@ jobs:
109111
EAS_NO_FROZEN_LOCKFILE: "1"
110112
CI: true
111113
SENTRY_AUTH_TOKEN: ${{ secrets.RN_SENTRY_AUTH_TOKEN }}
114+
npm_config_node_linker: isolated
115+
npm_config_shamefully_hoist: "false"
112116
# Optional: Upload artifact
113117
- name: 📤 Upload IPA
114118
uses: actions/upload-artifact@v7
@@ -154,6 +158,8 @@ jobs:
154158
EAS_NO_FROZEN_LOCKFILE: "1"
155159
CI: true
156160
SENTRY_AUTH_TOKEN: ${{ secrets.RN_SENTRY_AUTH_TOKEN }}
161+
npm_config_node_linker: isolated
162+
npm_config_shamefully_hoist: "false"
157163
# Optional: Upload artifact
158164
- name: 📤 Upload IPA
159165
uses: actions/upload-artifact@v7

.github/workflows/build-ios.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ jobs:
6666
EAS_NO_FROZEN_LOCKFILE: "1"
6767
SENTRY_AUTH_TOKEN: ${{ secrets.RN_SENTRY_AUTH_TOKEN }}
6868
CI: true
69+
npm_config_node_linker: isolated
70+
npm_config_shamefully_hoist: "false"
6971

7072
# Optional: Upload artifact
7173
- name: 📤 Upload IPA
@@ -122,6 +124,8 @@ jobs:
122124
EAS_NO_FROZEN_LOCKFILE: "1"
123125
CI: true
124126
SENTRY_AUTH_TOKEN: ${{ secrets.RN_SENTRY_AUTH_TOKEN }}
127+
npm_config_node_linker: isolated
128+
npm_config_shamefully_hoist: "false"
125129
# Optional: Upload artifact
126130
- name: 📤 Upload IPA
127131
uses: actions/upload-artifact@v7

apps/mobile/changelog/0.5.0.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# What's New in v0.5.0
2+
3+
## Shiny new things
4+
5+
- Added streaming text-to-speech playback
6+
- Enabled background OTA updates
7+
- Added Spotlight settings with refined highlighting controls
8+
9+
## Improvements
10+
11+
- Upgraded the app to Expo SDK 55 and the latest React Native Firebase stack
12+
- Improved OTA policy handling and release metadata flow
13+
- Increased AI summary font size for better readability
14+
15+
## No longer broken
16+
17+
- Fixed YouTube embeds closing incorrectly on iOS
18+
- Fixed Android video playback changing the original audio pitch
19+
- Fixed social sign-in state refresh
20+
- Fixed session refresh after cookie updates
21+
- Fixed iOS archive and build issues on Expo SDK 55 / Xcode 26.4
22+
23+
## Thanks
24+
25+
Special thanks to volunteer contributor @luckycold for their valuable contribution

apps/mobile/changelog/next.md

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,10 @@
22

33
## Shiny new things
44

5-
- Added streaming text-to-speech playback
6-
- Enabled background OTA updates
7-
- Added Spotlight settings with refined highlighting controls
8-
95
## Improvements
106

11-
- Upgraded the app to Expo SDK 55 and the latest React Native Firebase stack
12-
- Improved OTA policy handling and release metadata flow
13-
- Increased AI summary font size for better readability
14-
157
## No longer broken
168

17-
- Fixed YouTube embeds closing incorrectly on iOS
18-
- Fixed Android video playback changing the original audio pitch
19-
- Fixed social sign-in state refresh
20-
- Fixed session refresh after cookie updates
21-
- Fixed iOS archive and build issues on Expo SDK 55 / Xcode 26.4
22-
239
## Thanks
2410

25-
Special thanks to volunteer contributor @luckycold for their valuable contribution
11+
Special thanks to volunteer contributors @ for their valuable contributions

apps/mobile/ios/Folo/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
<key>CFBundlePackageType</key>
3434
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
3535
<key>CFBundleShortVersionString</key>
36-
<string>0.4.1</string>
36+
<string>0.5.0</string>
3737
<key>CFBundleSignature</key>
3838
<string>????</string>
3939
<key>CFBundleURLTypes</key>
@@ -54,7 +54,7 @@
5454
</dict>
5555
</array>
5656
<key>CFBundleVersion</key>
57-
<string>1</string>
57+
<string>3</string>
5858
<key>ITSAppUsesNonExemptEncryption</key>
5959
<false/>
6060
<key>LSApplicationCategoryType</key>

apps/mobile/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@follow/mobile",
3-
"version": "0.4.1",
3+
"version": "0.5.0",
44
"private": true,
55
"main": "src/main.tsx",
66
"scripts": {

apps/mobile/release.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.4.1",
2+
"version": "0.5.0",
33
"mode": "store",
44
"runtimeVersion": null,
55
"channel": null

apps/mobile/src/modules/entry-list/templates/EntryTranslation.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { useMemo } from "react"
22
import type { TextProps } from "react-native"
3-
import { View } from "react-native"
3+
import { Text as RNText, View } from "react-native"
44

55
import { useGeneralSettingKey } from "@/src/atoms/settings/general"
6+
import { useSpotlightSettingKey } from "@/src/atoms/settings/spotlight"
67
import { Text } from "@/src/components/ui/typography/Text"
8+
import { HighlightedText } from "@/src/modules/spotlight/HighlightedText"
79

810
export const EntryTranslation = ({
911
source,
@@ -22,6 +24,7 @@ export const EntryTranslation = ({
2224
bilingual?: boolean
2325
} & TextProps) => {
2426
const bilingualFinal = useGeneralSettingKey("translationMode") === "bilingual" || bilingual
27+
const spotlightRules = useSpotlightSettingKey("spotlights")
2528
const nextSource = useMemo(() => {
2629
if (!source) {
2730
return ""
@@ -37,25 +40,27 @@ export const EntryTranslation = ({
3740
if (!bilingualFinal) {
3841
return (
3942
<Text {...props} className={className}>
40-
{nextTarget || nextSource}
43+
<HighlightedText text={nextTarget || nextSource} rules={spotlightRules} />
4144
</Text>
4245
)
4346
}
4447
if (inline) {
4548
return (
4649
<Text {...props} className={className}>
47-
{`${nextTarget ? `${nextTarget} ⇋ ` : ""}${nextSource}`}
50+
{nextTarget ? <HighlightedText text={nextTarget} rules={spotlightRules} /> : null}
51+
{nextTarget ? <RNText>{" ⇋ "}</RNText> : null}
52+
<HighlightedText text={nextSource} rules={spotlightRules} />
4853
</Text>
4954
)
5055
}
5156
return (
5257
<View>
5358
<Text {...props} className={className}>
54-
{nextSource}
59+
<HighlightedText text={nextSource} rules={spotlightRules} />
5560
</Text>
5661
{nextTarget && (
5762
<Text {...props} className={className}>
58-
{nextTarget}
63+
<HighlightedText text={nextTarget} rules={spotlightRules} />
5964
</Text>
6065
)}
6166
</View>

0 commit comments

Comments
 (0)