Yohaku 在 MacBook Pro 与 iPhone 上的跨端阅读体验
Yohaku 是一套面向个人写作的跨端出版产品。它以 mx-core 为内容后端,在 Web 与 iOS 上统一呈现文章、手记、思考与时间线;界面退居其后,让文字、节奏与阅读本身成为主角。
完整 Web 产品由早期的开源前端 Shiro 演进而来,目前以闭源方式持续开发。本仓库公开 iOS 客户端与 Yohaku 设计系统。
这里就是 App Store 上那个 Yohaku iOS App 的完整源码,以 MIT 开源。填上自己的 mx-core 地址、换掉 bundle id 与图标,你就能用自己的 Apple 开发者账号编译,并作为自己的 App 上架 App Store,不需要额外授权。
Important
当前 Web 版本要求 mx-core v12 或以上。如需兼容 mx-core v11 及更早版本,请使用 721bb617。
| 层 | 职责 | 开放状态 |
|---|---|---|
| Web | 响应式个人站、长文阅读与完整内容体验 | 闭源维护于 Innei-dev/Yohaku,线上实例为 innei.in |
| iOS | 面向单一站点的原生阅读客户端,支持 iOS 18 或以上 | 本仓库 apps/mobile/,MIT 开源,可自行编译上架 |
| 设计系统 | 色彩、字体、间距、动效、模板与面向 AI 助手的 AI Skill 契约 | MIT 开源 |
| 内容服务 | 内容、评论、鉴权与实时数据 | 基于 mx-core,要求 v12 或以上 |
| 原则 | 表现 |
|---|---|
| 书写优先 | 文章、手记、思考与时光拥有各自的叙事节奏,而不是被压进同一种信息卡片。 |
| 纸面感 | 浅色模式接近纸张的暖白,深色模式沉入暖灰;衬线标题与低密度排版为正文保留空间。 |
| 克制交互 | 单一强调色、三档中性层级与轻量反馈共同降低界面噪声。 |
| 呼吸式动效 | 内容随阅读进程自然展开;首次进入建立节奏,重复访问不制造额外打扰。 |
| 跨端一致 | Web 与 iOS 共用内容模型与富文本语义,并分别遵循浏览器与原生平台的交互方式。 |
Yohaku
├── apps/mobile iOS 客户端
├── design-system 设计系统
├── packages/rich-content 跨端富文本渲染
└── packages/dom-webview Expo DOM WebView 适配
完整 Web 实现继续在 Innei-dev/Yohaku 中维护。本仓库只公开 iOS 客户端、设计系统与跨端渲染包。
Note
Yohaku 与上一代项目 Shiroi 已完全分离;两者的仓库访问权限与赞助关系相互独立。
| 要求 | 版本 |
|---|---|
| Node.js | 22 或以上 |
| pnpm | 11.20.0 |
| mx-core | 12 或以上 |
| Xcode | 真机 / 模拟器编译 iOS 时需要(推荐 Xcode 16+) |
pnpm install pnpm dev # 启动设计系统 Showcase (http://localhost:5173) pnpm demo:pdf # 生成长文、简历、单页报告 PDF 范例 pnpm check # 校验 Token 漂移与模板规范
# 改 apps/mobile/src/site-config.ts 里的 publicSite pnpm --filter @yohaku/mobile start pnpm --filter @yohaku/mobile ios # macOS + Xcode
默认 API 是空的,bundle id 是 dev.yohaku.app。ios/ 编出来之后不要提交。更细的说明在 apps/mobile/README.md。
apps/mobile/ 是 MIT 的,允许你用自己的 Apple 开发者账号把它作为自己的 App 上架,不需要额外授权。要改的地方:
apps/mobile/src/site-config.ts:apiUrl、siteUrl指向自己的 mx-core 与站点。- bundle id 与 scheme:
src/site-config.ts里的bundleId/scheme,和app.config.ts顶部的PUBLIC_BUNDLE_ID/PUBLIC_SCHEME保持一致;App 名称是app.config.ts的name。 - 图标:
assets/images/icon.png与assets/expo.icon。 - 在开发者后台给这个 App ID 打开 Push Notifications:entitlements 里带
aps-environment,对不上会签名失败。 pnpm --filter @yohaku/mobile ios生成ios/,然后用 Xcode 打开里面的.xcworkspace,Archive → Distribute App。
推送本身还需要一套自建的 APNs 中转服务,不在本仓库里;不配也不影响其余功能。
完整 Web 实现继续在 Innei-dev/Yohaku 中维护。通过 GitHub Sponsors 完成对应赞助后,请在 Innei/Yohaku Issues 中提交 GitHub 用户名,或通过邮件联系维护者,以便手动开通访问权限。
Copyright © 2026 Innei.
apps/mobile/与packages/rich-content/采用 MIT 许可证,版权 Innei。design-system/子目录下的代码(tokens、脚本、showcase、模板等)采用 MIT 许可证。packages/dom-webview/沿用上游 Expo MIT,改动说明见VENDOR.md。- 仓库其他部分(README、截图、对话归档等内容)仍然采用 CC BY-NC-SA 4.0 协议。