把 linux.do
稳稳印上 iOS。
以打穿 Cloudflare 盾、保持登录态、丝滑原生体验为第一目标而生。一整份帖子流,一次成版。
不做全能,只把三件事做到位。
linux.do 社区用户最大的痛点,是第三方工具频繁撞上 Cloudflare 的挑战页与惩罚。Litho 围绕这一点重排了优先级。
打穿 Cloudflare
所有网络请求都走「WebView 网关」,继承浏览器的 UA、Cookie 与 TLS 指纹,从根子上绕开挑战页。这是整个项目的地基。
原生 iOS 体验
SwiftUI 外壳,帖子流用一整份 WebView 文档渲染,滚动交给系统,做到丝滑。
对齐网页端的交互
点赞、收藏、举报、回复、表情回应、聊天、私信、实时通知,网页能做的,这里也顺手。
不自己发请求,让浏览器替你发。
普通的 URLSession 或 curl 请求 linux.do 会直接吃 403。Litho 的解法是把请求交回给页面自身的 fetch()。
图片也过盾
头像、帖内图、徽章图在页面里 fetch 二进制、base64 回传给原生,再交给带缓存的 AvatarLoader。
挑战自愈
偶发撞盾时网关自动重载页面完成挑战并恢复请求,顶部状态横幅提示,无需重启 App。
实时通道
通过网关订阅 Discourse MessageBus 长轮询,驱动聊天、新回复与通知的实时推送。
取自「石」,也取自「印」。
印刷,是把文字发布出去
linux.do 是一个以文字为核心的社区。整份帖子流被渲染成一整份文档、一次成版,正如平版印刷一次印出一整张版面,而不是一个字一个字地拼。
石,是地基与坚固
整个 App 立在一块地基上:WebView 网关。它像石版一样承载所有请求,原生、稳定,不被 Cloudflare 轻易撼动。
短而利落
两个音节、一个干净的古典词根,好记、好读,也好做成一枚印章。商店里它叫「Litho 拓本」,拓本正是从碑石拓下的墨本:白字,黑地。
以「石版」为底,把社区的文字稳稳印到原生 iOS 上。
已经从 MVP 长成日常主力。
五个 Tab:话题、类别、聊天、标签、我的。以下每一项都跑在真实账号上。
阅读体验
- 最新 / 热门 / 未读
- 分类 · 标签
- 整份帖子流一份文档渲染
- 图 · 头像 · 徽章过盾加载
- 代码块一键复制
- spoiler 模糊显隐
- 全屏图片查看
- 双向分页 · 续读位置
互动
- 点赞
- 表情回应
- Boost 打标签留言
- 收藏 · 举报
- 回复 · 引用
- 投票
- 编辑 / 删除自己的帖
实时
- MessageBus 聊天
- 新回复即时追加
- 前台通知横幅
- 后台系统通知直达楼层
个人中心
- 统计卡片
- 我的帖子
- 浏览历史
- 收藏
- 私信收发
- 草稿箱
- 徽章
- 积分排行榜
- 信任等级
- 关注 / 粉丝
- 偏好 · 匿名
- 空间管理
隐私与本地
随附 App 级隐私清单,数据只留在本机。GRDB 缓存断网回退,头像加磁盘缓存层。
- PrivacyInfo.xcprivacy
- GRDB 本地缓存
- 头像磁盘缓存
- 浏览历史仅存本机
一个约定:互动图标一律用矢量图标(SF Symbols / 内联 SVG,currentColor 驱动状态),从不在代码里写死 emoji 字符或表情包 PNG。选中态只是一次 CSS class 切换,不重渲染 DOM。
一层网关,撑起所有网络。
把社区的文字,稳稳印到你手上的屏幕。
iOS 17+ · 手机主屏显示「Litho」,商店名为「Litho 拓本」。