回滚 1f4c9f4 中 radical splash/CallScreen 的改动
📱 1.2.30
更新历史
平台每天都在发展。这里提供完整的变更历史:新功能、修复和安全更新。 下载应用
五月 2026
大改 splash→CallScreen 修复 + 持久化日志
📱 1.2.29
CallKit 接受后,在 ringing→connected 时打开 CallScreen
📱 1.2.28
侧边菜单(Drawer)显示版本 + 构建日期
📱 1.2.27
Splash 会覆盖到 /call 的导航 + Cold-start 自动接听
📱 1.2.26
安全修复:通话
📱 1.2.25
voip overlay + ad detail 中多行 {# #} → {% comment %}
🌐 网页
通话的 SSR 客户端 + 文档更新
🌐 网页
视频流渲染 + CallKit 与 CallScreen 去重(按 team-call 示例)
📱 1.2.24
视频通话 + FCM 通知去重 + 广告自动失效
📱 1.2.22
🌐+📱 网页 + 应用
SIP 号码终身绑定到农场主 + location 授予 DELETE
🌐 网页
始终 upsert subscriber — 丢失记录后的恢复
🌐 网页
WSS 设为 AllowBadCertificate=true — 与 Kamailio 的 SNI 不匹配
📱 1.2.22
UI 集成 — Profile 里的 VoIP 开关 + Ad Detail 的“拨打”按钮
📱 1.2.21
🌐+📱 网页 + 应用
原生 Android — Manifest 权限 + MainActivity 重新附着 + BootReceiver + CallKit
📱 1.2.20
Flutter SIP 客户端 + CallScreen + Riverpod provider
📱 1.2.19
带通话端点的 Django 应用,供农场主使用
🌐 网页
通话基础设施 — 共享 Kamailio 服务器上的 sip.cattles.net
🌐 网页
@mention 提升、msg_type 预览、FCM ttl、voip-channel 预留
📱 1.2.18
🌐+📱 网页 + 应用
PhoneRequiredMiddleware 在 dev/prod 下无 phone 时阻止查看
🌐 网页
重装后的推送 + 失效的 theme CSS + CLAUDE.md 中的 bundling 规则
📱 1.2.17
🌐+📱 网页 + 应用
/profile/ 返回 phone+avatar,手机端不再在 phone-setup 里死循环
📱 1.2.16
🌐+📱 网页 + 应用
移除了 weight_kg/height_cm 的 min/max 校验器
📱 1.2.15
🌐+📱 网页 + 应用
来自仅社交登录提交的 3 个回归问题
🌐 网页
仅社交登录 + avatar + phone-setup + geo wizard
📱 1.2.13
仅社交注册 + phone-setup + geo audit + avatar
🌐 网页
代码中未使用
🌐 网页
UX 修复 — session age + CTA + 重复 logo + alert→toast
🌐 网页
桌面端 header + sidebar + dropdown 中的“消息”
🌐 网页
Web SSR 聊天 + 自适应移动端风格布局
🌐 网页
requirements_prod.txt 里也升级 urllib3
🌐 网页
安全修复:依赖项
🌐 网页
新消息推送 + sender/time + 已读回执 + 底部导航
📱 1.2.11
🌐+📱 网页 + 应用
网页端 Google 登录 + Farmer.user CASCADE
🌐 网页
从 git 跟踪中移除空的 firebase-adminsdk.json
🌐 网页
后端骨架 — Google Sign-In + Firebase Cloud Messaging + chats
📱 1.2.5
🌐+📱 网页 + 应用
Splash 的语言数从 71→43
📱 1.2.5
迁移 0081 — 删除 43 以外的 parler-translations
🌐 网页
安全修复:基础设施
🌐 网页
把支持语言从 70 减到 43
📱 1.2.3
🌐+📱 网页 + 应用
上传限流 60→300 次/小时/用户
🌐 网页
移除默认限流,只保留在敏感 endpoints 上
🌐 网页
将 AVIF 缩略图回滚到 serializer(API 中同步阻塞)
🌐 网页
在 post_save 上异步生成 AVIF(不阻塞)
🌐 网页
为品种添加 AVIF 缩略图(Wiki_animals)
🌐 网页
AdDetailView — favorites 通过 prefetch,去掉 count/exists
🌐 网页
修复 explore 代理审计中的 N+1 问题
🌐 网页
/animal-categories/<id>/breeds/ — 修复 N+1(提速 ×60)
🌐 网页
列表/index — 修复 N+1 + page-cache mixin
🌐 网页
BreedDetailView 手动 page-cache + Cache-Control
🌐 网页
移除 siblings 下拉框 — 382 个 <option> 太耗时了,吃掉 25 秒
🌐 网页
为 siblings/categories 预取 translations
🌐 网页
通过 SILKY_INTERCEPT_FUNC 绕过 /api/v1/ads/
🌐 网页
通过 env 控制 SILKY_PYTHON_PROFILER(无需重新构建镜像即可切换)
🌐 网页
/geo/countries/ — 用 .only() 对抗 PostGIS PointField 开销
🌐 网页
/ads/ — translations 预取按 locale 过滤
🌐 网页
N+1 修复 — /geo/countries/ 233→2 条 SQL,/ads/ 158→~5 条 SQL
🌐 网页
LOGIN_URL=/admin/login/ — 否则会重定向到 404
🌐 网页
/admin/main/wiki_animals/ + /advertisements/ 的 SQL 减少 90%
🌐 网页
Django-silk profiler 在 dev 和 prod 可用,每 3 小时清理一次
🌐 网页