v0.2a 至 v0.2a-f6 包含硬编码的 DEBUG credentials。相关 credentials 已被 revoke。请立即更新至 v0.2a-f7 以上版本。
已安装 v0.2a〜v0.2a-f6 的 Mac / iOS 用户: 更新后旧 credentials 可能仍残留在 Keychain 中。v0.2a-f7 会在启动时通过 SHA256 hash 匹配自动检测并删除 (代码中不包含明文)。也可通过 设置 → 缓存管理 → 全数据重置(出厂状态) 手动执行。
迁移到新 Mac / 转让给他人前: 请在 repo 中执行
./scripts/cleanup-cortex-data.sh,或使用 App 内的重置按钮。
E-Hentai / EXhentai / nhentai 统一浏览器 for iOS / iPadOS
https://github.com/CielDevApp/CortEX/raw/main/assets/demo.mp4
内容已模糊处理
- E-Hentai / EXhentai — 根据登录状态自动切换。未登录也可浏览E-Hentai
- nhentai — 完整API集成、Cloudflare自动绕过(WKWebView cf_clearance)、WebP支持
- 四层删除作品恢复 — nhentai(应用内搜索)→ nyahentai.one → hitomi.la → 标题复制
- 4种模式 — 垂直滚动 / 水平翻页 / iPad双页展开 / 捏合缩放
- iPad双页 — 自动横屏检测、双页合成渲染(零间隙)、宽图独立显示
- 从右到左 / 从左到右 — 支持边缘点击翻页
- 双击缩放 — 支持Live Text(文字选择)
- CIFilter — 色调曲线、锐化、降噪
- Metal Compute Shader — GPU直接管线
- CoreML Real-ESRGAN — Neural Engine 4倍超分辨率(分块处理)
- 4级画质 — 低画质 → 低画质+超分 → 标准 → 标准+滤镜
- HDR增强 — 暗部细节恢复 + 自然饱和度 + 对比度
- 双向下载(极限钳形攻势) — 前向+后向同时下载
- 二次扫描 — 失败页面自动重试(指数退避)
- Live Activity — 锁屏 + 灵动岛进度显示
- 阅读/下载分离 — 关闭时提示"是否下载剩余页面?"
- 双缓存 — E-Hentai / nhentai 独立缓存(磁盘持久化)
- nhentai同步 — WKWebView SPA渲染 → JavaScript ID提取 → API解析
- 搜索 / 排序 — 添加日期(最新/最旧)/ 标题
- 标题 / 封面 / 信息(语言、页数、社团、画师、同人原作)
- 标签点击搜索 — 一键搜索 artist:名称、group:名称 等
- 缩略图网格 → 点击跳转到指定页面
- 滤镜管线(降噪 / 增强 / HDR)
- Face ID / Touch ID — 启动和恢复时认证
- 4位PIN码 — 生物识别失败后备
- 应用切换模糊 — 任务切换器中隐藏内容
- Keychain加密 — Cookie和凭证安全存储
- PHOENIX MODE — E-Hentai + nhentai 统一JSON收藏备份
- 极限安全锁 — 必须先备份才能启用EXTREME MODE
- .cortex导出 — 画廊ZIP包
- ECO模式 — NPU/GPU禁用、30Hz、iOS低电量模式联动
- EXTREME MODE — 全部限制器解除(20并行、零延迟)
- CDN回退 — i/i1/i2/i3自动切换 + 扩展名回退(webp→jpg→png)
- Vision OCR → Apple Translation API → 图像烧录
- 5种语言(日/英/中/韩/自动)
- Foundation Models — 自动分类、标签推荐
- TipKit(11条提示) — 所有功能的操作提示,可在设置中重新显示
- 8种语言 — 日 / 英 / 简中 / 繁中 / 韩 / 德 / 法 / 西
- 动态标签 — 根据登录状态自动切换 E-Hentai ↔ EXhentai
- 基准测试 — CIFilter vs Metal 速度测试 + 设备型号显示
- 锁屏壁纸 — 收藏的画廊封面自动显示为锁屏背景
- 标签栏自动隐藏 — 向下滚动时隐藏标签栏,增加显示空间
iPhone / iPad / Mac 通用单代码库。基于 Apple 原生 20 个框架构建,零外部依赖。
9 层架构:
| # | 层 | 主要构成 |
|---|---|---|
| 01 | PRESENTATION | 4 模式阅读器(垂直滚动 / 水平翻页 / iPad 双页展开 / 捏合缩放) |
| 02 | MODES | SAFETY (default) / EXTREME / ECO / SPARE 四种运行模式 |
| 03 | INGESTION | E-Hentai / EXhentai 动态切换、nhentai v2 API + Cloudflare Turnstile 突破 |
| 04 | TRANSPORT | BackgroundDownloadManager、URLSession 后台下载、BAN 封堵 6 路径、2ndpass 并行 5 |
| 05 | COMPUTE | 图像处理引擎 3 基(CIFilter / Metal Compute / CoreML Real-ESRGAN) |
| 06 | MEDIA | 动画 WebP / HEVC 转换、HDR 校正、VideoToolbox 硬件编码 |
| 07 | SILICON | CPU / GPU (Metal) / NPU (CoreML) / Media Engine 全活用,iPhone A17 Pro / iPad A17 Pro / Mac M1–M4 支持 |
| 08 | TRUST | Face ID / Touch ID / PIN / Keychain / App Switcher 模糊 |
| 09 | PLATFORM | iOS 18+ / iPadOS 18+ / macOS 14+ Mac Catalyst、8 语言本地化 |
SAFETY MODE 主要特性:
- BAN 检测 6 路径完全封堵
- 50 页 / 60 秒 自动 cooldown
- 2ndpass 并行 5 自动救回失败页面
- 维持并行度,速度无牺牲
- disk prefix skip · reconcileGallery
构成事实:
- 91 个 Swift 文件 / 约 20,000 行
- 外部依赖库: 0
- Apple 原生框架: 20
- 支持: iOS 18+ / iPadOS 18+ / macOS 14+
- iOS 18.0+ / iPadOS 18.0+(iOS 26 / iPadOS 26 已测试)
- macOS 14.0+(Mac Catalyst,Apple Silicon / Intel 均可)
- iPhone / iPad(支持iPad双页模式)/ Mac
- 克隆:
git clone https://github.com/CielDevApp/CortEX.git - 用 Xcode 16+ 打开
EhViewer.xcodeproj - 在 Signing & Capabilities 中选择你的Team
- 将 Bundle Identifier 改为唯一值(如
com.yourname.cortex) - 连接设备,点击 Run
- 从 Releases 下载
EhViewer-<version>.ipa - 通过 AltStore、Sideloadly 或 TrollStore 安装
- AltStore / Sideloadly 导入时会用你自己的 Personal Team 重新签名,因此分发 IPA 的签名会被剥离(只要是最新版 IPA 即可)
- TrollStore 无需重新签名,直接使用
注意:免费Apple开发者账号侧载签名有7天限制。建议使用AltStore自动续签。
- 从 Releases 下载
EhViewer-macOS-<version>.zip(Developer ID 签名 + Apple 公证) - 解压后将
EhViewer.app拖入/Applications - 双击启动 — 无需
xattr绕过,Gatekeeper 直接通过
- 克隆:
git clone https://github.com/CielDevApp/CortEX.git - 用 Xcode 16+ 打开
EhViewer.xcodeproj - Scheme =
EhViewer,Destination =My Mac (Mac Catalyst) - 在 Signing & Capabilities 中选择你的Team,并修改 Bundle Identifier
- Product → Run 启动,或 Product → Archive 导出
.app后拖入/Applications- 命令行:
xcodebuild -project EhViewer.xcodeproj -scheme EhViewer -destination 'platform=macOS,variant=Mac Catalyst' build
- 命令行:
- Mac 版顶部配备独立 7 标签栏(画廊 / 收藏 / 抽卡 / 已保存 / 历史 / 角色管理 / 设置),无论窗口宽度始终横向排列
- Swift / SwiftUI
- 92 个 Swift 文件 / 约 20,000 行代码
- Metal / CoreML / Vision / WebKit / ActivityKit / TipKit
- 搜索更易用 (iOS) — 移除顶部的
.searchable搜索栏 (默认带有偏向日语的排除查询),改为通过导航栏右上角放大镜按钮打开专用搜索画面。可任意选择分类与语言组合,All / Doujinshi / Tankoubon 分段标签也一并撤除,改为完全由用户驱动的筛选。搜索画面下方按主机 (E-Hentai / ExHentai / nhentai) 分别显示历史搜索记录,一键即可重新执行。nhentai 模式仅显示实际存在的分类,语言通过 namespace 查询正确组装。Mac Catalyst 界面保持不变。
- WKWebView E-Hentai / EXhentai 浏览器登录 — 在现有登录画面添加「通过浏览器登录」按钮 (全平台)。Safari 风格 toolbar + WKWebView 模态自动提取 3 个 cookie (
ipb_member_id/ipb_pass_hash/igneous) 并自动填入认证信息字段。针对 E-Hentai 会话传播延迟的对策: 到达 forums.e-hentai.org 时整个模态 dismiss → 0.5 秒等待 → sheet 重新 present,物理模拟「关闭后重开」操作,第 2 次确实触发igneous发行。包含…菜单的「清除 e-hentai/exhentai cookie」debug 功能 (nhentai cookie 不受影响)。Cort:EX 黑/橙配色 + SF Symbols 统一。
- 库排序菜单(全平台)— 「已保存」分区添加追加日 / 名称升降序排序菜单。@AppStorage 持久化,与外部参考分区独立操作
.cortex追加日修复 — 不含 metadata.json 的.cortexZIP 在每次扫描时被Date()填充为「现在」,导致 Unrealbeauty Yaoguang / UnityNay 等永远位于最上方。改为使用 ZIP 文件的 creationDate(fallback mtime),与子文件夹形式行为统一
- 画廊网格视图(iPad / iPhone / Mac Catalyst 全平台)+ List/Grid 切换 — iPhone 3 列固定、iPad 4 列固定、Mac Catalyst adaptive(180+)。EH/EXH 全标签 + nhentai 全排序适用
- 画廊搜索 race fix — Enter 连击 / 连续搜索的 cancellation 处理修复
- nhentai 人气排序复活 — 切换到 v2 search endpoint
- 网格全屏空白对策 — 统合 dummy slot 机构
- DL 后 SSD → NAS 转送对话框 + 进度条
- 抽卡 10 连演出的缩略图重叠减少
- 库详情 sheet → 标签搜索 → 作品点击的导航修复
- 静画跳页 freeze 解消、sandbox-off path-override、ImageCache race 修复
- Removed: iPhone 共享按钮 → Mac Cort:EX 委托下载 (cortex://download/queue) 已移除(实装未达 + 必要性消失)。已保存导出 (.cortex zip 共享) 不变
- Mac Catalyst 完全支持 — 支持 macOS 14+(Apple Silicon / Intel)的通用构建。Developer ID 签名 + Apple 公证的
.app通过 GitHub Releases 分发,拖入/Applications双击即可启动。顶部标签栏用自定义 HStack 重写(绕开 Catalyst TabView 的 overflow menu),全 7 标签始终横排 + 整格命中区 + 方向键翻页 - EXTREME MODE → SAFETY MODE 重设计 — 以 BAN 抗性为核心重新组织结构。BAN 检测 6 路径完全封堵、50 页 / 60 秒 自动 cooldown、并行度保持不降速的 class-change。transport 层整合 509 gif URL 模式检测、Cloudflare
cf-mitigated头检测、HTML fallback 检测、home.php 误重定向检测 - 动画 WebP 阅读器强化 — 统一手动播放模式(▶ 图标点击触发转换),HDR 校正合并到现有图像设置,长按菜单直接切换模式。检测统一使用 VP8X magic,原始字节从内存转移到磁盘 URL 路径以降低内存压力
- 动画 WebP 卡顿修复 — 修复 LocalReader / GalleryReader 自动播放导致的内存爆炸与 UI 卡死。AVPlayer 仅当前页升级、缓存升级移至 init、PlayerContainerView 不再吞掉滚动手势、缓存复活时的重建循环彻底解决
- nhentai 登录恢复 (Mac Catalyst) — 用文件回退方式 (
~/Documents/EhViewer/creds/) 绕开 Keychain-34018 errSecMissingEntitlement,同时修复 Cloudflare 通过路径,Catalyst 下也能持久认证 - iPad 标签栏跟随 — 改用 GeometryReader + PreferenceKey 观测路径,iPad 上向下滚动时的标签栏自动隐藏也能稳定工作
- 已下载封面本地复用扩展 — 不仅在详情页,现在在历史 / 抽卡 / 设置页也优先使用本地封面图像,减少 CDN 往返
- 发布自动化 — 新增
scripts/release-mac.sh(Archive → Developer ID 签名 → notarize → staple → zip)和scripts/release-ios.sh(Archive → Development IPA 导出),一个 tag 参数同时生成 Mac zip + iOS IPA
- 自研 ZIP streaming writer — 替换 Apple 的 NSFileCoordinator.forUploading(大作品 59 秒主线程阻塞 + Code=512 失败),改为流式 stored+ZIP64 writer。6 倍速 + 实时进度条 + 3GB+ 作品也能正常导出
- 僵尸下载根除 — 删除 / 取消后 URL 解析 / stream 消费 / 二次重试循环仍在运行的问题修复。清理时的元数据复活也已防止
- 滚动位置一致性 — LocalReaderView 页码与显示页不一致的问题根除。LazyVStack
.onAppear的 last-wins 竞态 +.scrollPosition/scrollToAPI 冲突导致「1/47 却在显示第 13 页」类错位 - 已保存作品预览 — 长按显示全页缩略图网格,点击跳转该页阅读。竖长固定单元格统一布局,动画 WebP 以紫框 + ▶ 图标标识
- 0B 缓存误识别防护 —
isFullyConverted增加尺寸检查(≥10KB),避免 race condition 导致的 0B 缓存 mp4 引发 AVPlayer "item failed" 连锁 - DL 重试策略 — Cloudflare
cf-mitigated: challenge头检测、509 gif URL 模式检测、SpeedTracker 基于字节进度的看门狗、别镜像重试中 UI 阶段 - 并行下载 — URL 解析完成即释放 semaphore,支持多作品并行下载
- 临时文件自动清理 — 共享表单完成时(AirDrop / Save to Files / 取消)即删除
.cortex,与启动时残骸清理协同
- GPU精灵图管线 — 精灵图解码、裁剪、缩放通过Metal CIContext单通道GPU渲染
- 专用图像处理队列 — 所有精灵图处理移至独立DispatchQueue,消除协作线程池饥饿
- 磁盘缓存废除 — 移除精灵图和裁剪缩略图的JPEG重编码(仅内存缓存,可重新获取)
- 启动预取优化 — 缩略图预取从全部收藏(2400+)缩减至可见的30项
- 收藏切换可靠性 — 429错误页面重试+退避、禁用按钮检测、Cookie去重修复
- Cookie管理改进 — 改为保留服务器设置属性(HttpOnly, Secure)的补充注入方式
- 速率限制加固 —
fetch()新增429重试(3秒/6秒指数退避,最多3次)
- nhentai API v2迁移 — 从v1全面迁移至v2 API,通过WKWebView绕过Cloudflare TLS指纹检测
- nhentai收藏切换 — 通过SPA
#favorite按钮点击实现服务端添加/移除(SvelteKit hydration轮询) - 收藏同步优化 — 跳过已缓存画廊大幅减少API调用,429重试+指数退避
- v2认证支持 —
isLoggedIn()现在也识别access_token(v2),不再仅依赖旧版sessionid - 缩略图 / 封面 v2 — 使用v2 API的
thumbnailPath和path,CDN回退(i/i1/i2/i3) - 已删除作品恢复 — 打开阅读器前通过
fetchGallery获取完整详情 - nhentai详情页 — 标签点击搜索、缩略图网格、下载、滤镜管线
- 锁屏壁纸 — 收藏封面自动显示为模糊锁屏背景
- 标签栏自动隐藏 — 向下滚动时隐藏标签栏,增加显示空间
- E-Hentai / EXhentai / nhentai 统一浏览器
- 4模式阅读器(支持iPad双页展开)
- 3引擎图像处理(CIFilter / Metal / CoreML Real-ESRGAN)
- 双向下载 + Live Activity
- Face ID / Touch ID / PIN安全
- PHOENIX MODE备份、ECO / EXTREME性能模式
- Vision OCR翻译、TipKit提示、8语言本地化
本项目采用 GPL-3.0 许可证 - 详见 LICENSE 文件。
在 Patreon 上支持开发。