Repository navigation
Releases: Jonnyan404/clip9
Release list
v0.1.4
这一版有什么
这一版主要是「把它讲清楚」:补上了 README、真界面截图、一个文档站,以及一份
中英双语、可切换的 API 规格。功能上只动了桌面端的两处。
文档站(新):docs/ 现在是一个 GitHub Pages 站点(pages.yml 自动发布),三块内容:
- 落地页 —— 首屏就是产品本身的样子(截图是无头 Chrome 截的真界面,不是生成的图),
下面配一条可点击复制的启动命令。 - API 规格 —— 就是
docs/openapi/clip9.openapi.yaml(OpenAPI 3.1,32 条路径、
51 个 schema、190 个带名字的示例),用 Redoc 渲染,右上角可切中英。 - 中文规格 ——
⚠️ ★ 它是生成物:zh.yaml(450 条译文)+ 英文规格 →build-zh.py。
结构只可能来自英文那份,所以两份不可能漂;另有check-zh-parity.py按形状比对,
防的是「有人手改了生成物」(那样不会报错,只会悄悄分叉)。
README 重写:442 行 → 258 行。原来第一屏堆着六种装法的细节,现在是一句话 + 特性表 +
一个 Docker 块,其余折进 <details>。
桌面端(两处):
- 版本号与「检查更新」搬到侧栏底部。原来只在「设置 → 关于」里,要开设置再切页才看得到 ——
而这两个答案跟房间无关,正该待在「一直在」的地方。有新版时版本号会变色,不点进去也看得见。 - 「桌面输入框」那个勾选框换成了按钮。它原来是侧栏里唯一的实心色块,比周围所有控件都抢眼;
现在是和「列表 / 网页」同款的一颗按钮,而它的「开」态用浅底而不是实心强调色 ——
它是开关,不是互斥选项,视觉重量本来就该不一样。
修掉的
- 侧栏布局下折叠胶囊的位置与朝向:它是为横条设计的(贴下边缘中间的一小段横线),
竖栏里会贴在栏底中间、还是横的。现在贴右边缘、竖直居中。 - 侧栏布局下标准模式的输入区不见了:输入区是
position: sticky; top: var(--page-toolbar-height),
而那个变量由工具栏用自己的offsetHeight写 —— 竖栏的高度是整屏,于是输入区被推到
一屏之下。侧栏模式下现在写0。 - CF 房间卡在「连接中」:
connect_async没有超时,而 Cloudflare 那边/push转发给
Durable Object、DO 不响应时请求会一直挂着。现在有 10 秒的握手超时,并会说出原因。 - 传统色色块没有悬停与选中态:原来既没有
:hover,也没有读当前主色 ——
根本不存在「选中」这个概念。现在悬停是灰环+放大、选中是主题色环+对勾(形状刻意不同)。 - API 规格里两处错链:
contact.url指向的是上一个 Go 项目(而且用户名写错了),
externalDocs.url是相对地址、Redoc 按页面解析后少了/clip9/那一段。
变动(要手动做的)
⚠️ docs/api.html与docs/api.md删了。API 参考现在是docs/spec.html
(规格本身 + 中英切换)。原来那两个地址会 404。⚠️ 维护者:仓库 Pages 的 Source 要从「Deploy from a branch」改成 「GitHub Actions」,
否则pages.yml不触发(而它不报错)。本仓库已经切过了。- 其余一切照旧:服务端、桌面端、Android 的用法都没变。
v0.1.3
这一版有什么
网页版的前端整体重写,并且换成了生产前端。 原来那套 Vue 3 + Vuetify 的界面
(web-vue3/)被完整重写成 React 19 + TypeScript + MUI(web/),
构建 → 入库 → 编进 clip9-server 二进制这条链路整条切了过去。
重写本身没有新增功能:五种模式(时间流 / 速览 / 动作台 / 便签 / 看板)、分享页、
深浅色、四种语言、PWA 离线都还在原来的位置、原来的样子。重点是换掉地基 ——
重写期间特意用真浏览器把 Vue 版与 React 版并排量过(元素坐标、配色、字号),
对不齐的地方逐条改到一致。
换完地基之后又叠了这些(10-05 ~ 10-07):
- 活跃度热力图。服务端新增
GET /stats/daily(每个本地日有多少条消息、最忙的一天、
连续天数、以及分档着色用的分位阈值),网页版顶栏多一个入口,画成 GitHub 贡献图那样。
它回答的是「这个房间被用得怎么样」—— 五种模式都是同一批条目的不同看法,
这一张是关于条目本身的元数据。 - 桌面端能在应用内更新了:检查 → 下载 → 校验签名 → 安装 → 重启,只在你确认之后才动。
发布链路跟着改了:产物会签名,并多出一份latest.json。 - 「关于」页新增资源占用:外壳与自带服务端的 CPU / 内存、数据目录占了多少、那块盘还剩多少。
- 网页版新增「侧栏菜单布局」:设置 → 通用 → 外观里可以选「顶栏」(原样)或「侧栏」,
当场生效并记住(与深浅色同一个做法)。 - Cloudflare Workers 部署补齐三件事:过期文件的后台回收(每 5 分钟一轮,语义与自建
服务端一致 —— 删 R2 字节 → 删 D1 条目 → 向该房间广播revoke,所以没人再访问的过期文件
也会消失,而不是一直占着 R2)、GET /stats/daily(缺了它,Workers 上的房间点热力图
只会说「取不到」)、以及/healthz别名(自建服务端叫这个名 —— 两个后端两个名字,
任何探活脚本都得写分支)。
变动(要手动做的)
⚠️ 前端源码目录从web-vue3/换成web/。自己写脚本构建前端的人要改路径;
一条命令现在是cd web && npm run deploy(构建 + 同步进服务端)。
服务端、桌面端、Android 的用法完全不变。⚠️ web-vue3/(Vue 版)保留在仓库里,但不再构建、不再入库 —— 留作比对。
它自己的npm run build还能跑(产物只落在它自己的dist/),但不要再跑它的 deploy。⚠️ 用 Cloudflare Workers 部署的人要重新部署一次:新路由与那个 5 分钟的 cron 触发器
都要写到wrangler.toml里才生效(模板已经带上,但得重新部署)。⚠️ 维护者:桌面端的应用内更新需要一对签名密钥放在仓库 secrets 里
(TAURI_SIGNING_PRIVATE_KEY/_PASSWORD)—— 这两步没法住在代码里,说明在
.github/workflows/release.yml的注释中。- ✅ 房间侧栏(左侧房间列表)已与 Vue 版逐项对齐:摘要计数、当前房间整行(色条 /
活跃点 / 未读小锁)、行副标题只显示非零计数、空态图标、搜索框等。
⚠️ 顺带纠一个说法:原来记的「Vue 版有 6 套侧栏皮肤没搬」里,只有 sticky 一套是活的 ——
另外 4 套对应的模式(terminal / workbench / chat / mega)2026-09-26 就退役并真删了,
那几块 CSS 在 Vue 里也永远匹配不到,所以没有搬(搬过来只会让人以为还有模式在用它们)。
修复
- 修掉一批与 Vue 版不一致的细节:输入区页脚(设备统计 / 图标排 / 发送按钮)的位置与居中、
分类条在移动端只显示图标、浅色主题的页面底色与顶部菜单栏配色、赞赏图标的金色闪动、
时间流历史计数 chip 的半透明底色、消息类型标签的字号等。 - 真浏览器验收抓到并修掉一个致命问题:页面每次加载都白屏(前端路由被重复初始化 ——
用 curl 看不出来,服务端照常返回外壳)。 ⚠️ 桌面端连wss://服务端会 panic(rustls 在两个 crypto provider 同时启用时拒绝
自动选择)—— 症状是那个房间永久停在「正在连 …」:panic 在tokio工作线程里,
连接任务当场死掉、没人重连它,而界面上既没有错也没有任何超时会触发。
本地明文(http://)房间完全不受影响,所以很容易往「服务端坏了」的方向查。⚠️ WebSocket 握手补上超时:对端 TCP 连上了却不回升级时,界面以前既没有错也没有原因,
现在 10 秒不升级就报「连接超时」并退避重连。- 修掉一批网页版的细节:房间侧栏的相对时间显示成
{minutes}分钟前(占位符没被填)、
便签输入框的附件按钮让读屏念出{keys}、开启侧栏布局后三处嵌套仍是横排
(56px 宽的栏里内容横着排)、标准模式下输入区被顶出视野、传统色板没有 hover 与选中态、
开发模式下热力图空白(dev 代理少一条/stats)。 - Cloudflare Workers 上,过期文件以前只在「有人再请求那个文件」时才被删 —— 没人再访问的
会永远留在 R2 里(R2 没有对象级 TTL)。现在由后台任务每 5 分钟收一次,见上面「这一版有什么」。
下载哪个
| 我要装在哪 | 下哪个 |
|---|---|
| 服务端(VPS / NAS / 树莓派) | clip9-cli-v0.1.3-<平台>-<架构>.tar.gz(Windows 上是 .zip) |
| 桌面客户端 | clip9-desktop-v0.1.3-<平台>-<架构> 打头的那个(.dmg / .msi / .exe / .AppImage / .deb) |
| Android 手机 | clip9-android-v0.1.3.apk(一个包装齐三个架构;想要小包可以下 -arm64-v8a / -armeabi-v7a / -x86_64 那三个之一) |
| OpenWrt 路由器 | clip9-openwrt-v0.1.3-*(服务端)与 clip9-luci-openwrt-v0.1.3-*(界面),.ipk 或 .apk 按系统挑 |
v0.1.2
这一版有什么
这一版改的全是桌面客户端。 主线是「看图 / 看视频 / 处理动作」这条路径 ——
以前卡片上只能看到文件名和图标,现在图片、视频在客户端里直接就能看、能放大缩小;
卡片上那排动作也从「写死的几个」变成按内容给(这条能复制、那条能分享、
另一条什么也做不了就不显示),动作库与网页版共用同一份。
(web/),但这一版还没有启用 —— 线上跑的仍然是原来的界面,切换放在下一版。
所以这一版你在浏览器里看不到任何区别,桌面端与 Android 端的用法也不变。
新增
- 图片与视频在客户端里直接打开。 卡片上的图片点开就是大图、视频点开就播,
不用再跳到浏览器。查看器支持滚轮缩放与+/-键,缩放那一簇按钮居中排在标题栏。 - 粘贴图片 / 文件进输入框。 截图之后直接粘贴,不用先存成文件再选。
- 发送进度条。 发大文件时能看到传到哪了。
- 卡片只显示它真能做的动作。 以前是「都列出来、点了报错」,现在按内容给 ——
一条纯文本不会有「下载」,一条没有表格的内容不会有「渲染表格」。 - 动作库里那些原本只在网页上有的动作,现在客户端里也能跑。
/快捷模板菜单。 与网页版共用同一份模板(任务清单 / 表格 / 插入时间 / UUID)。- 分享按钮与网页版同一个形状(有效期 / 次数 / 密码那套设置框)。
- 阅读期间来了多少条。 你正在往下翻旧内容时,新消息不抢你的位置,只在边上报个数。
- 侧栏可折叠成「emoji + 延迟」。 窄窗口下多让出一块给内容。
- 卡片脚上那排图标改成一套内联 SVG(不再依赖字体图标)。
- 工具:动作目录、分享上限、文档链接、未声明标识符四条静态自检接进了门禁。
修复
- 撤销一条操作后,那条消息不再从屏幕上消失。
- 折叠过的消息保持折叠(以前切个视图就被重新展开)。
- 媒体预览取不到字节 ——
<img>/<video>这类标签带不了自定义请求头,
现在给它们单独发一张能用的凭据。 - 时间线不再因为「什么都没变」而整块重建(滚动位置与展开状态不再莫名跳回)。
- 图片 / 视频加载完之后,最新那张卡片留在视野里。
- 双表示动作(注音制表那类)返回的表格能画出来了。
- 动作报错时用界面语言说它自己的输出,不再是一句泛化的「失败」。
- 视频的「展开」按钮浮在画面上,不再被画面挤到看不见。
- 上传文件时会带上发送者标识 —— 服务端据此分辨「这条是我自己发的」。
rustfmt想拆的那一行拆开了(纯格式)。
下载哪个
| 我要装在哪 | 下哪个 |
|---|---|
| 服务端(VPS / NAS / 树莓派) | clip9-cli-v0.1.2-<平台>-<架构>.tar.gz(Windows 上是 .zip) |
| 桌面客户端 | clip9-desktop-v0.1.2-<平台>-<架构> 打头的那个(.dmg / .msi / .exe / .AppImage / .deb) |
| Android 手机 | clip9-android-v0.1.2.apk(一个包装齐三个架构;想要小包可以下 -arm64-v8a / -armeabi-v7a / -x86_64 那三个之一) |
| OpenWrt 路由器 | clip9-openwrt-v0.1.2-*(服务端)与 clip9-luci-openwrt-v0.1.2-*(界面),.ipk 或 .apk 按系统挑 |
v0.1.1
这一版有什么
v0.1.1 这一线的正式版 —— 第一个稳定版,取代 v0.1.0。从 v0.1.1-beta3 到这里的
这几条都在修同一类毛病:你看到的和实际存的不一致。桌面端每次启动都强行回到网页视图
(你选的「列表」只活到下次启动)、分享到聊天工具里的预览卡会把纯英文 / 数字的内容读没
(该显示 123,却显示「有人分享了一段内容」)、服务端自报的版本号恒为 0.1.0
(LuCI 的「检查更新」因此迟早会永久误报),以及 OpenWrt 的 aarch64 .ipk 原来
在任何真机上都装不上。
v0.1.0 直接升上来的人:v0.1.1-beta1 / beta2 / beta3 三段(都在本文件里)
的改动也全在这一版里 —— Android 界面按设计稿重做、桌面端的进程与缓存修正、
以及桌面端的多服务器与响应速度那一串。
修复
- 桌面端:默认落在「列表」,并且记住你选的那一个。
mainView原来写死成网页视图、
点了也不落盘 —— 所以「选了列表,重启又变回网页」。现在只认存过的spa,读不到 / 值
不认得一律当列表;两颗按钮走同一条写入路径,不会「这一版记得住、那一版记不住」。默认值
还与页面自己的初始状态对齐,所以默认这条路一帧都不跳。
⚠️ 顺带一个要知道的变化:默认列表之后,启动时不再加载那个内嵌网页(它自己开
WebSocket、自己取历史,是实打实的第二个客户端 —— 同一台机器在设备列表里显示成两台
就是这么来的)。代价:第一次点「网页」要等它加载一次,以前这次加载发生在启动时
(你在列表上看不到)。只付一次,之后切来切去不重载。 - 分享的预览卡不再把纯英文 / 数字的内容读没。 取摘要时那个字符类里有一个没转义的
-,被当成字符范围(*到·),而 ASCII 数字与字母全都落在这个范围里 ——
于是「123」「hello」「password: hunter2」被整条吃空,预览里只剩「有人分享了一段内容」,
分享记录列表里那一条也没有名字。中文内容看不出来(汉字在那个范围之外,削到第一个汉字
就停),测试夹具又恰好首尾都是汉字,所以一直没被发现。 - 服务端自报的版本号不再是恒定的
0.1.0。 它原来说的是编进二进制的那个常量,与包
版本(来自 tag)从来不一致。⚠️ 这不只是显示问题:LuCI 的「检查更新」正是拿
<二进制> -v的结果去比 GitHub 的最新版 —— 二进制恒报0.1.0的话,下一个正式版
一发,用户就会永远被提示「有新版本」,升级也修不掉。现在构建时把 tag 的版本注进去;
本地不带这个变量构建时行为与以前完全一样。 - OpenWrt:LuCI 高级设置页的房间表多了「开放」一列,可以直接勾出「这个房间不要密码」
(以前只能手改 JSON 里的{"open": true})。同一页上重复显示两遍的config.json路径
也只剩一个 —— 而且留下的是运行时填的那个(配置路径不是默认值时,写死的那份本来
就是错的)。 - Cloudflare Worker:部署不再把你手动关掉的
workers.dev路由重新打开。 模板里原先
没声明这个键,而 wrangler 把「缺失」当成默认值true每次部署写回去 —— 接上自定义域名
后在面板里关掉它,下一次部署就会被无声地撤销。自定义域名本身不受影响。
变动(要手动做的)
⚠️ 桌面端的老用户第一次打开会落到「列表」(以前是网页视图),之后你的选择会被记住
—— 这一次是预期的,不是又没存上。⚠️ OpenWrt 的.ipk包名变了:aarch64 那一个拆成aarch64_generic/
aarch64_cortex-a53/-a72/-a76四个,包里的架构字段也从aarch64改成设备名。
写死过clip9-openwrt-v<版本>-aarch64.ipk的脚本记得改。原因值得知道:aarch64不是
OpenWrt 的架构名(只有上面那四个),原来那个包任何真机都装不上(报
incompatible with the architectures configured)。其余 5 个arm_cortex-*名字不变 ——
它们本来就是真架构名,只是覆盖窄。这一版起产物就都是新的了。⚠️ Android 端与v0.1.1-beta3完全相同,没有变动。
下载哪个
| 我要装在哪 | 下哪个 |
|---|---|
| 服务端(VPS / NAS / 树莓派) | clip9-cli-v0.1.1-<平台>-<架构>.tar.gz(Windows 上是 .zip) |
| 桌面客户端 | clip9-desktop-v0.1.1-<平台>-<架构> 打头的那个(.dmg / .msi / .exe / .AppImage / .deb) |
| Android 手机 | clip9-android-v0.1.1.apk(一个包装齐三个架构;想要小包可以下 -arm64-v8a / -armeabi-v7a / -x86_64 那三个之一) |
| OpenWrt 路由器 | clip9-openwrt-v0.1.1-*(服务端)与 clip9-luci-openwrt-v0.1.1-*(界面),.ipk 或 .apk 按系统挑 |
v0.1.1-beta3
这一版有什么
桌面端「迟钝与对不上」的一串修正:点一下要等下一次轮询才有反应(点一个房间,最长要
1.4 秒内容才真的在)、同一个服务器写成两种拼法会被当成两间房、通知在房间已经切走之后还
挂在别人标题下面、内嵌网页永远指向本机那个服务端(于是「用远端服务器」看起来像是不
支持 —— 其实每个部署都带同一份网页)。另外房间列表从八列表格换成卡片式,服务器地址不再
被挤成前几个字符。
v0.1.1 取代):这一版的重点是桌面端的多服务器与响应速度。
新增
- 桌面端:房间列表改成卡片式排布 —— 原来是八列表格、列宽写死百分比,640px 的窗口里
服务器那一列只有约 104px,https://clip9.example.com/clip9这种地址被截成前几个字符,
凭据那格只剩 46px; - 桌面端:内嵌网页指向这个房间自己的服务器(以前无论选哪台都嵌本机那一个);
- 网页界面:启动时向宿主声明「这是 clip9 的网页版」并接受宿主发来的消息(上一条的前提)。
修复
- 桌面端:点一下立刻响应,不再等下一次(700ms 一次的)快照轮询 —— 实测「点了有反应」
原来要 282–700ms、「内容真的在」最长 1390ms; - 桌面端:按规范化之后的地址认房间 ——
Https://host与https://host/原来是两间房:
两条连接、两份历史、侧栏里看着像重复了一项; - 桌面端:服务器地址不分大小写地读(
Https://ccg.ubuy.fun以前会让内嵌网页直接报
「这个房间的地址不是 http(s)」); - 桌面端:通知有了唯一的类型与归属,房间切走 / 消失时它跟着结束 —— 以前房间 A 的
「已发送」会挂在房间 B 的标题下面; - 桌面端:不再去取永远到不了的历史 —— 它会让界面一直停在「加载中」。
下载哪个
| 我要装在哪 | 下哪个 |
|---|---|
| 服务端(VPS / NAS / 树莓派) | clip9-cli-v0.1.1-beta3-<平台>-<架构>.tar.gz(Windows 上是 .zip) |
| 桌面客户端 | clip9-desktop-v0.1.1-beta3-<平台>-<架构> 打头的那个 |
| Android 手机 | clip9-android-v0.1.1-beta3.apk(一个包装齐三个架构) |
| OpenWrt 路由器 | clip9-openwrt-v0.1.1-beta3-*(服务端)与 clip9-luci-openwrt-v0.1.1-beta3-*(界面) |
v0.1.1-beta2
这一版有什么
桌面端与内置网页的一串修复 —— 核心是旧进程、旧缓存不会再假装成新版界面:桌面端崩溃
或被强杀后残留的服务端不会再有(宿主一走它自己就退),桌面端也不再连上一个不是它启动的
服务端;内嵌页面不再注册 Service Worker,服务端给内置前端的响应补上了缓存头。桌面端
「关于」里开始显示真实的版本号(以前恒为 0.1.0);Windows 的 MSI 从这一版起才做
得出来(改用数字版本号 0.1.1.2)。
clip9-server
残留进程)、Windows 的 MSI 安装包,以及内嵌网页升级后还会不会显示旧界面。
Android 端与 v0.1.1-beta1 完全相同。
修复
- 桌面端:强杀、崩溃、覆盖安装后不再留下残留的服务端进程 —— 子进程现在盯着宿主,
宿主一没(哪怕是被强杀)它就自己退出。以前它会一直占着端口,桌面端下次启动还可能
连上那个旧进程; - 桌面端:不再连上一个不是自己启动的服务端 —— 以前只要端口上有东西答应,就当
「自己的服务端还在跑」,于是复用了残留的旧进程,看起来就像「界面丢了功能」。现在只认
自己那个子进程;碰到别的进程会直接说端口上是谁、在服务哪一版; - 服务端:补上缓存头(带内容哈希的
assets/**长缓存;外壳页、sw.js、图标那些一律
no-cache)—— 以前一个都不带,浏览器与 WebView 可以把旧界面一直缓存下去,升级了也
看不到新的; - 网页界面:
?embed=1的内嵌页不再注册 Service Worker,已经注册过的会注销 —— 内嵌页
是宿主自己起的本地服务给的,没有离线场景要它管,反而会被它钉在旧版本上; - Windows:MSI 改用数字版本号(这一版是
0.1.1.2,正式版会是0.1.1.65535)——
WiX 不接受-beta2这种后缀,带后缀时那一步直接失败。
新增
- 桌面端:「关于」里显示这一版真实的版本号(值来自 tag,不再恒为
0.1.0),
这也是以后做「检查更新」的前提; - 文档:补上了项目
README(下载包里附的那份,之前每一版都是空文件);
docs/下还有服务端 API 的 OpenAPI 规格(对着真实路由写的)。
下载哪个
| 我要装在哪 | 下哪个 |
|---|---|
| 服务端(VPS / NAS / 树莓派) | clip9-cli-v0.1.1-beta2-<平台>-<架构>.tar.gz(Windows 上是 .zip) |
| 桌面客户端 | clip9-desktop-v0.1.1-beta2-<平台>-<架构> 打头的那个 |
| Android 手机 | clip9-android-v0.1.1-beta2.apk(一个包装齐三个架构) |
| OpenWrt 路由器 | clip9-openwrt-v0.1.1-beta2-*(服务端)与 clip9-luci-openwrt-v0.1.1-beta2-*(界面) |
v0.1.1-beta1
这一版有什么
Android 客户端按设计稿整体重做了一遍 —— 连接页、配置页、「其它」页全换新版式,远端服务器
从弹窗改成「列表 + 编辑」两层子页(可存多台,各带自己的密码)。同时修掉了「远端服务器的
添加页面怎么划都不动」这个毛病。服务端与桌面端的功能没有变化。
新增
- Android:控制台按设计稿重做 —— 连接 / 配置 / 其它三页全部换新版式;配置页按卡片分组,
有改动还没生效时,底部会出一条提示横栏; - Android:远端服务器改成列表子页 + 编辑子页(原来是一个弹窗),可以存多台;
编辑页里「用这台打开界面」能直接以那台服务器打开内嵌网页; - Android:「其它」页有了四行 —— 电池白名单、WebView 版本、通知权限开关、数据目录,
点一下各有动作(进系统设置 / 报版本 / 复制路径)。
修复
- Android:远端服务器的添加 / 编辑页面划不动 —— 两个子页挂错了层级(挂进了纵向
LinearLayout),match_parent在那里变成「父的整高」,第二个子页被排到了屏幕之外,
而它内部的滚动区还以为自己有整屏的高度,于是怎么划都不动; - Android:从别的应用分享内容进来时,直接落到控制台并把内嵌网页打开;
- Android:连接面板上那根分割线曾把整个面板撑坏(面板现在紧凑了,端口与局域网地址
在服务端启动后仍显示在二维码卡片里); - Android:房间密码为空时,底部那条「有改动未生效」横栏消不掉;
- 网页界面:默认房间里的分享桥没就绪。
变动(要手动做的)
⚠️ 产物名都带上版本号了:以前叫clip9-cli-linux-x86_64.tar.gz,现在叫
clip9-cli-v0.1.1-beta1-linux-x86_64.tar.gz。脚本里写死过旧名字的记得改;⚠️ Android:远端服务器从「一个弹窗」变成「两层子页」,弹窗里那些字段的位置换了
(功能没少)。
下载哪个
| 我要装在哪 | 下哪个 |
|---|---|
| 服务端(VPS / NAS / 树莓派) | clip9-cli-v0.1.1-beta1-<平台>-<架构>.tar.gz(Windows 上是 .zip) |
| 桌面客户端 | clip9-desktop-v0.1.1-beta1-<平台>-<架构> 打头的那个 |
| Android 手机 | clip9-android-v0.1.1-beta1.apk(一个包装齐三个架构) |
| OpenWrt 路由器 | clip9-openwrt-v0.1.1-beta1-*(服务端)与 clip9-luci-openwrt-v0.1.1-beta1-*(界面) |
v0.1.0
docs(release): add a changelog and a release notes template Two files that only matter on release day, and neither existed before. CHANGELOG.md holds the version history, newest first, in Chinese, and carries the same text as the notes on GitHub. The version number lives in the tag only -- there is no version file in the repo -- so this is the one file a release touches. Its first entry is deliberately empty: a version number and a date with nothing under them. That empty entry is the point. It is committed before the tag, so the commit a tag points at can find itself in the changelog; otherwise checking out a tag tells you nothing about what that version was, and git log only has the English commit subjects. The notes are filled in afterwards, from the same text that goes to GitHub. .github/RELEASE_TEMPLATE.md is the release-day checklist plus the skeleton to copy from. Two things it states twice on purpose: - It is not applied automatically. The file GitHub picks up by itself is .github/release.yml (it categorises generated notes), and release.yml deliberately does not pass generate_release_notes so that generated text never replaces a hand-written note. - Pushing the tag publishes nothing. The trigger is release: published, so the release has to be created and published on GitHub. A pre-release has to be marked as one there as well: the docker job reads that flag to decide whether latest moves, and it cannot be added afterwards. Both files are Chinese on purpose -- release notes and changelogs are read by people who downloaded a package, and the delivery notes have always been Chinese. Commit messages stay English.
v0.1.0-beta3
docs(android): record the release signing key The keystore was just generated, so write down where it lives, its SHA-256 and SHA-1 fingerprints, the alias and the four secret names. Without this the next person would generate a second key, and the applicationId is fixed: a different signature means never being able to upgrade an installed copy again. The passphrase is deliberately absent -- this repository is public, and the file next to the keystore holds it. Also notes that the key is unrelated to the Go one (`com.cloudclip` versus `com.clip9.app`), so there is nothing to reuse, and that `android/.gitignore` now guards the path a copy would land on.
v0.1.0-beta2
ci(cloudflare): brace the shell variables followed by a full-width ch…