Skip to content

Repository files navigation

Ztron

Ztron

用纯 TypeScript 构建跨平台桌面应用——Tauri 式架构,微型运行时 + 系统 WebView。

CI npm platform license docs

简体中文 · English

主页 · 文档 · 快速开始 · 示例


为什么是 Ztron

  • 纯 TypeScript 全栈 —— 前后端都是 TS。没有 Rust 工具链、没有交叉编译;原生层(窗口宿主 + 运行时)已随 CLI 预编译好。
  • 真的轻量 —— 后端运行时 txiki.js 仅 ~2MB,渲染用系统自带 WebView,不捆绑 Chromium,安装包 5MB 级。
  • Tauri 用户零成本迁移 —— API 自 @tauri-apps/api 忠实移植为 @zturnlibs/ztron-api,IPC/事件/命令/插件协议同构,迁移指南半天搬完。
  • 生态完整 —— 25+ 内置插件(fs/http/store/sql/shell/tray/menu/dialog/updater…)、ACL 能力权限体系、ztron:// 自定义协议、自动更新 + 签名 + dmg 打包。

横向对比

Ztron Tauri v2 Electron
前端 TS + 任意框架 TS + 任意框架 TS + 任意框架
后端 TypeScript(txiki.js) Rust JavaScript(Node.js)
原生工具链 无(CLI 自带预编译链) Rust 工具链,交叉编译需配置 无
渲染 系统 WebView 系统 WebView 捆绑 Chromium + Node
安装包 6.2 MB(实测) ~3–10 MB ~85–100 MB
后端改动生效 保存即生效 需 Rust 重编译 保存即生效
安全模型 ACL capabilities + Path/HttpScope + CSP capabilities + scope 自行实践
打包 / 签名 / 自动更新 ✅ 内置 ✅ 内置 需 electron-builder 等生态件
平台验证 ✅ macOS(Apple Silicon)· 🚧 Windows · 🚧 Linux ✅ 全平台 + 移动端 ✅ 全平台(10 年+)

Ztron 数字为实测基线(Apple M3,2026-09,ztron bench --record 可复现):冷启动 582ms · invoke P50 0.31ms / P95 1ms · Channel 8.5MB/s · 窗口创建 58ms · .app 6.21MB。竞品体积为公开资料常见量级,仅供感知。诚实声明:Tauri/Electron 的多平台成熟度远高于 Ztron,选型请以上表最后一行为准。

30 秒上手

前置:macOS(Apple Silicon 已验证)+ Node.js ≥ 20。原生链已随 CLI 预编译,无需 clone 本仓库、无需编译、无需配环境变量。

npm i -g @zturnlibs/ztron-cli
ztron init my-app --template react-ts   # 模板:vanilla | react-ts | vue-ts | svelte
cd my-app && pnpm install
ztron dev                               # 原生窗口弹出

打包、体检随时可用:

ztron build      # 打包 + ad-hoc 签名 ZtronApp.app + dmg
ztron doctor     # 环境五项体检,FAIL 自带修复提示

遇到问题跑 ztron doctor;完整安装说明见文档。

特性一览

特性 说明
声明式窗口 ztron.conf.json 里声明启动窗口(尺寸/位置/透明/装饰…),双层数据校验
全模块 HMR Vite dev server + ztron:// 自定义协议(WKURLSchemeHandler),模块级热替换
类型安全命令 ztron codegen 生成 typed invoke 绑定,前后端契约不漂移
tjs 全量类型 @zturnlibs/tjs-types:后端 tjs.* 全局随装即有完整 TS 类型(同步自所构建的 txiki.js 官方类型 + 增补),前端纯 ES2022 环境类型独立入口
ACL 能力权限 capability 文件声明权限面;fs/http 全部 PathScope/HttpScope 收敛
多窗口 WebviewWindow 运行时创建/销毁、label 路由、窗口注册表
系统 API 全家桶 tray/menu/dialog/clipboard/notification/global-shortcut/deep-link/fs.watch/拖放…
生产打包 tjs compile 独立可执行 + .app/dmg + ad-hoc/Developer ID 签名 + 自动更新
三层测试 surface/unit/integration 三层,ztron check 退出码化回归(86 项确定性检查)

架构

┌──────────────────────────┐  TCP/JSON  ┌───────────────────────────────────┐
│ ztron-host (native C)     │◄──────────►│ tjs backend (txiki.js, async)     │
│ 系统 WebView + GUI 循环    │            │ @zturnlibs/ztron-core             │
│ window/tray/menu/dialog   │            │   IPC / events / commands / ACL   │
└──────────────────────────┘            └───────────────────────────────────┘
   frontend: Vite 页面 → @zturnlibs/ztron-api → invoke/listen/Channel/fs/http/…
   packaging: ztron build → tjs compile 后端 → macOS .app / dmg(签名)

深度解析见 DESIGN.md(架构决策、技术发现、翻译对照表)。

包家族

包 职责
@zturnlibs/ztron-api 前端 API(自 @tauri-apps/api 移植):fs/http/os/store/log/shell/window/tray/menu/dialog/updater…
@zturnlibs/ztron-core 主进程核心:IPC、events、Channel、commands、ACL、PathScope、25+ 插件、MockRuntime
@zturnlibs/ztron-runtime-ffi HostRuntime socket 适配(双进程模型)+ FFI 参考绑定
@zturnlibs/ztron-cli init / dev / build / check / codegen / doctor / bench
@zturnlibs/ztron-driver WebDriver 中继(W3C 协议,外部自动化驱动 Ztron 应用)

示例与模板

ztron init --template <name> 可选模板:

模板 技术栈
vanilla TS + Vite(最小起点)
react-ts React 19 + Tailwind v4
vue-ts Vue 3.5 + Tailwind v4
svelte Svelte 5 runes + Tailwind v4

examples/ 下有 8 个可运行示例,最值得看的是 showcase——34 张交互卡片现场演示全部插件 API(pnpm --filter @zturnlibs/ztron-example-showcase dev),另有 hello / multiwin / react-demo / vue-demo / svelte-demo / bench / menuprobe。逐个讲解见文档示例页。

平台支持

平台 状态
macOS(Apple Silicon) ✅ 完整验证(Intel 未验证,可尝试)
Windows(WebView2) 🚧 开发链 + NSIS 打包已打通:窗口/菜单/托盘/剪贴板宿主面完成,hello/multiwin/menuprobe spike 全绿(FULL_OK/MENU_V2_OK/TRAY_V2_OK),ztron build 产出 flat 目录 + NSIS 安装包(本机端到端验证,含 CJK 安装路径);windows-spike CI 全链门禁(dispatch 触发);预编译原生链待发布(本地开发需 vcpkg + MSVC,见下方参与开发)
Linux(WebKitGTK) 🚧 host 骨架已就位,打包链待接入
Mobile(Android/iOS) 📋 规划中

参与开发

pnpm install                                        # 工作区依赖
scripts/build-native.sh                             # 编译原生链(macOS 一次性;Windows 需先 vcpkg install libffi:x64-windows + VS Build Tools,脚本自动引导)
pnpm --filter @zturnlibs/ztron-example-hello dev    # 在 monorepo 内跑示例
pnpm test                                           # 217 项测试(surface/unit/core 三层)

三层测试面向"特性 + API 100% 覆盖":surface 保证框架注册的命令与 API 导出面零偏差;unit 经 MockRuntime 全量路由;integration 驱动真实 host + WebView(ztron check 85 项确定性检查 + FULL_OK 哨兵,exit code 可回归)。设计详见 tests/README.md。

性能基线(冷/热启动、invoke P50/P95、Channel 吞吐、窗口创建、RSS):

node packages/cli/dist/index.js bench --runs 3

项目状态

M0–P30 全部完成:86 项确定性检查 FULL_OK / exit 0。完整开发日志(每个阶段交付了什么、验收标准、踩过的坑)见 DESIGN.md §7;与 Tauri 的能力差距与后续规划见 ROADMAP.md。

License

MIT

About

A cross-platform desktop framework rewritten in TypeScript on top of txiki.js (tiny JS runtime, ~2MB) + system WebView (webview/webview via tjs:ffi).

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages