
Folo 移动端 v0.2.4 更新全解析订阅前内容预览、智能默认视图、自定义字号与 Android 交互修复【免费下载链接】follow Folo is the AI RSS Reader项目地址: https://gitcode.com/GitHub_Trending/fol/follow本文以 Folo 移动端React Native / Expo 应用源码位于apps/mobile的版本说明 0.2.4.md 为核心逐条拆解该版本新增功能、体验改进与问题修复并结合移动端源码给出可验证的实现细节。读完本文你将清楚 v0.2.4 中每一项变更的触发场景、配置入口和对应的代码位置并掌握 Folo 移动端的更新说明组织方式Shiny new things / Improvements / No longer broken 三栏结构。Folo 是一个 AI RSS 阅读器AI RSS Reader移动端覆盖 iOS 与 Android。v0.2.4 是 0.2.x 系列中的一个功能性小版本重点补齐了两大交互能力Android 端的正文上拉阅读下一篇手势与阅读字号自定义同时围绕订阅决策链路做了一轮体验打磨——包括订阅前预览 Trending 热门源的内容、关注 Feed 时的智能默认视图检测以及新增从时间线中隐藏的订阅选项。本版本说明位于 apps/mobile/changelog/0.2.4.md每个版本的说明独立成文件next.md为未发布版本的占位模板结构见 apps/mobile/changelog/next.md。Shiny new thingsv0.2.4 新增能力详解Android 端上拉阅读下一篇手势#4228在阅读正文Entry 内容页时用户向上拖拽即可切换到下一条内容。该能力此前已在 iOS 上提供v0.2.4 将其补齐到 Android对应 PR #4228。从源码结构看该手势被抽象成一套跨平台的上拉切换能力并以平台拆分文件实现types.ts定义了EntryPullUpToNextProps上拉指示器组件的 props 类型、UsePullUpToNextPropshook 入参以及UsePullUpToNextReturnhook 返回的上拉视图 props、指示器组件EntryPullUpToNext与手势包装器GestureWrapper等公共契约use-pull-up-navigation.android.tsxAndroid 专用实现内部通过 pan 手势的纵向位移判断是否进入上拉状态代码中以yDiff 0判定上拉方向并用gestureState.value维护手势状态机PullUpIndicatorAndroid.tsx 与 PullUpIndicatorIos.tsx分别为两个平台渲染继续上拉进入下一条的进度/松手指示器。可以推断该模块被正文内容页复用通过统一 hook 返回的手势包装器包裹内容区域Android 与 iOS 各自给出差异化的手势判定与指示器视觉而对外接口保持一致。开发者在阅读长文时无需返回列表即可快速跳转到下一篇属于移动端阅读连续性体验的补齐。关注 Feed 页的智能默认视图检测71408ea关注Follow一个 Feed 时表单会先给出一条推荐视图即根据该 Feed 的内容特征自动推断它更适合以哪种视图呈现文章、图片、视频、音频、社交/通知等视图类型。这依赖服务端返回的analytics.view。实现路径集中在 FollowFeed.tsxFollowFeed按 id与FollowUrl按 url两个入口在拿到 Feed 数据后都读取预取接口返回的data?.analytics?.view ?? undefined把它作为defaultView传入内部组件FollowImplFollowImpl在组装表单初始值时优先使用已有订阅的视图否则回落到该默认值view: subscription?.view ?? defaultView若analytics没有返回建议代码回退到文章视图FeedViewType.Articles见 FollowFeed.tsx。效果是首次订阅一个明显以图片/视频为主的源时客户端会预选对应的视图类型减少订阅后再手动切视图的摩擦。最终选定的视图会随订阅一起提交提交路径见同一文件中的subscriptionSyncService.subscribe调用而时间线顶部的视图切换器TimelineViewSelector.tsx只会展示当前存在订阅的视图类型二者配合形成默认建议 用户显式调整的闭环。自定义文字大小设置 → 外观38553bv0.2.4 引入可自定义的阅读字号。设置入口位于设置Setting→ 外观Appearance对应页面组件 Appearance.tsx。该页面内置两组预设界面缩放倍率预设作用于全局排版档位倍率fontScale说明xs0.8最小s0.9偏小m1.0默认与系统一致l1.2偏大xl1.5最大正文内容字号预设单位为 px仅当开启内容使用独立字号时显示档位字号xs12s14m16l18xl20外观页共提供三个联动开关/选择器跟随系统字号useSystemFontScaling默认开启开启时字体倍率选择器被禁用应用采用系统字号缩放界面缩放倍率fontScale上述 0.8 ~ 1.5 五档正文使用不同字号useDifferentFontSizeForContent开启后额外出现正文内容字号mobileContentFontSize选择器允许界面字号与正文阅读字号解耦适合希望界面紧凑但正文偏大的用户。这些设置的移动端默认值定义在 apps/mobile/src/atoms/settings/ui.tsfontScale: 1、useSystemFontScaling: true、useDifferentFontSizeForContent: false、mobileContentFontSize: 16。该文件在展开共享 UI 默认设置来自 defaults.ts 的defaultUISettings后追加了移动端专属默认值。字号在实际渲染中如何生效FontScalingProvider.tsx 会在应用根层注入一组按倍率重新计算的排版 CSS 变量createFontScalingInjectStyles遍历全局排版规范typography字号 行高将字号乘以scale后重新计算行高并保证小字号下lineHeight / fontSize 1.2、大字号下不低于 1.0最终通过 NativeWind 的vars注入到根View。当开启跟随系统时传入scale 1并把系统缩放交给 RN 的原生allowFontScaling机制处理。这也是为什么正文在任意字号下都不会出现行高过窄导致的文字裁切问题。订阅前预览 Trending热门Feed 的内容Discover 的 Trending 板块现在允许用户在订阅前先点进去看内容。Trending 列表组件 Trending.tsx 通过useQuery拉取当前语言默认 20 条的热门 Feed数据来源是fetchFeedTrending见 api.ts最终调用followClient.api.trending.getFeeds。每条结果都渲染为带preview标记的 FeedSummary行内展示排名徽标前 3 名高亮、Feed 图标/标题/URL 与订阅人数formatNumber(item.analytics.subscriptionCount)点击预览条目时FeedSummary的preview分支会先按该 Feed 的推荐视图view选中时间线视图再推入该 Feed 的内容页FeedScreen/feeds/[feedId]/FeedScreen.tsx)让用户直接浏览该源的实际内容再决定是否订阅非预览场景下点击条目则走关注/订阅表单流程FollowScreen两者形成对照浏览内容与执行订阅被有意拆开。订阅项新增 Hide From Timeline从时间线中隐藏选项为了让聚合时间线更干净v0.2.4 为订阅新增hideFromTimeline选项。这是订阅subscription层面的布尔字段用于把某些订阅源的条目排除在聚合时间线之外但订阅本身仍保留在其所属视图/分组中可随时单独查看。字段贯穿关注表单与订阅编辑两条路径FollowFeed.tsx 中表单 schema 声明hideFromTimeline: z.boolean().optional()表单初始值取subscription?.hideFromTimeline订阅列表的编辑表单 FollowList.tsx 同样携带该字段并在 UI 中渲染说明文案subscription_form.hide_from_timeline提交时字段随SubscriptionForm一起写入服务端两条路径均调用subscriptionSyncService.subscribe/.edit。适用场景包括某个源偶尔有用但不想让它刷屏时间线、或想为时间线保留高信号内容的用户都可以把这类源标记为隐藏而不必退订。Improvements体验改进更清晰的条目列表加载指示4ebff4d列表加载态改为更明确、可感知的指示器。移动端大量使用统一的PlatformActivityIndicator如 Trending.tsx 与 FollowFeed.tsx 中的加载分支并配以自定义下拉刷新进度环 RefreshControl.tsx避免加载中界面的空白与误操作。更好的 Android 启动图标替换/优化了 Android 侧 splash 图标呈现属于品牌与冷启动观感层面的打磨。Inbox 通知支持Inbox邮箱收件箱源新增通知能力新邮件到达时可以推送提醒相关 Inbox 展示与操作入口见 inbox.tsx 与订阅侧栏的 Inbox 分组渲染SubscriptionLists.tsx。No longer broken问题修复盘点阅读状态与刷新相关的修复下拉刷新不再把未读误标记为已读e7c8380此前下拉同步数据时可能顺带把未读条目标成已读。该修复把刷新数据与标记已读两条链路解耦避免用户仅刷新时间线就丢失未读态。移动端的下拉刷新基于自定义 RefreshControl.tsx具备独立的刷新进度回调刷新完成后才允许数据层更新未读数启用 Hide Read隐藏已读后含未读条目的列表不再被隐藏修复了列表List在过滤条件与未读统计之间的状态不同步问题从时间线隐藏的订阅在列表中正常显示、不含无效站点 URL 的 Feed 不再被隐藏后两条分别修复了自定义过滤条件下订阅列表的可见性问题与前述hideFromTimeline/站点字段处理相关。平台交互与媒体修复修复 iOS 点击视图切换按钮时的导航方向ad7c5dd视图切换按钮在 iOS 上的切向与预期相反本次修正了其方向逻辑修复 Android 音频播放问题#4188与Android 偶发崩溃#4233两类 Android 端稳定性修复修复视频无法在外部应用中打开点击正文中的视频链接/播放按钮时现在可以正确唤起系统外部应用自定义 Feed 标题不再被忽略用户在订阅/编辑表单中填写的自定义标题表单 schema 中的title字段见 FollowFeed.tsx现在会被正确保存并在列表展示时生效Inbox 无法接收纯文本邮件如 Gmail 转发验证邮件修复了 Inbox 对 text/plain 类型邮件的接收问题。小结如何核对与跟进本次更新v0.2.4 的变更本质上是阅读链路上的一次完整打磨从发现热门源Trending 预览→ 判断是否适合自己智能默认视图 内容预览→ 决定如何呈现自定义字号、时间线中隐藏→ 到手势化连续阅读Android 上拉下一篇。源码层面上述能力大多集中在apps/mobile/src/modules/下的discover、feed、list、entry-content、settings等模块并全部依赖apps/mobile/src/atoms/settings/ui.ts与共享设置默认值完成配置持久化。需要核对或追踪后续版本时可查看移动端 changelog 目录 apps/mobile/changelog 下对应版本的说明文件每个版本的说明均以新增 / 改进 / 修复三栏组织未发布内容以 next.md 模板先行累积。文中引用的 PR/issue 编号如 #4228、#4188、#4233及提交哈希均来自官方 changelog可在仓库提交历史中进一步回溯对应改动。【免费下载链接】follow Folo is the AI RSS Reader项目地址: https://gitcode.com/GitHub_Trending/fol/follow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考