Skip to content

Releases: 0xUnixIO/pulse

v0.3.4

10 May 15:35

Choose a tag to compare

refactor(update): server/node 接入 selfupdate 包,移除 curl|sh

- serverapi/update.go:删除内联的 GitHub API 逻辑和 curl|sh 调用,
  改用 selfupdate.Apply / FetchLatestReleaseCached;
  加 atomic.Bool 防重入,并发更新请求返回 409
- nodeapi/api.go:DoUpdate 同步改造,防重入时返回 ok:false;
  移除 os/os/exec/time 依赖

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

v0.3.3

09 May 16:50

Choose a tag to compare

feat(users): 新增/编辑用户时支持设置门户密码及随机生成

- 新增 generatePassword() 生成 16 位随机密码(过滤易混淆字符)
- 新建用户弹窗添加「门户密码」字段,含随机按钮
- 编辑用户弹窗密码字段新增随机按钮

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

v0.3.2

09 May 09:44

Choose a tag to compare

feat(hy2): apply 全自动编排 sniproxy → 等证书 → xray restart

- sniproxy.Manager.ReadyCertDomains() 扫盘返回已落地证书域名
- nodeapi.DoSNIProxyCertReady + nodeagent dispatch 暴露给 panel
- nodes.Client.SNIProxyCertReady() panel 端 RPC
- jobs.ApplyNodeUsers 重排执行顺序:先 SyncSNIProxy 触发 ACME,
  若有 hy2 inbound 则轮询节点等证书就绪(最多 60s),最后 build + restart
- proxycfg.BuildOptions.KnownReadyCerts:hy2 case 检测 SNI 未在已就绪集合
  时跳过该 inbound(仅 warning),下次 apply 自动加回,避免阻塞 xray restart

修复了首次创建 hy2 inbound 必须手动「同步路由 → 等证书 → 再重启 inbound」
的两步体验。

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

v0.3.1

09 May 09:23

Choose a tag to compare

fix(hy2): tlsSettings 强制 alpn=h3,否则 QUIC 握手失败客户端报 connection refused

xray 的 tls config 默认 NextProtos=[h2, http/1.1],hy2 走 HTTP/3 over QUIC
必须 alpn=h3,否则 quic-go 在 TLS 握手阶段拒绝连接,且服务端无任何日志。

同时 isValidDomain 限制证书路径只允许字母/数字/点/连字符,防止 SNI 字段
注入路径穿越序列让 xray 加载任意文件。

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

v0.3.0

09 May 08:17

Choose a tag to compare

fix(subscription): vless reality SNI 回退到 host.SNI

修复 7819fa2 重构后 TestVlessRealityLink 失败:当 RealityHandshakeAddr
为空时,优先使用 host.SNI 而非直接 fallback 到 addr。

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

v0.2.6

08 May 09:26

Choose a tag to compare

refactor(store): 删除 v2 历史补丁迁移

v0.2.0+ 用户已通过旧 init() 执行过所有 ALTER,新安装 v1 建表已含
所有字段,v2 对任何场景均为 no-op,删除以简化迁移列表。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

v0.2.5

08 May 07:58

Choose a tag to compare

feat(panel): 更新时显示全屏 overlay 并展示分阶段进度

将 updateApplying: boolean 替换为四阶段状态机(idle/downloading/restarting/done),
利用 /healthz 轮询推断进度:apply 响应后 healthz 仍通为"下载/安装中",healthz
失败时切换为"重启中",恢复后切换为"完成"并在 800ms 后刷新页面。更新期间弹出全屏
backdrop-blur overlay 屏蔽所有操作,杜绝服务不可用时的误操作。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

v0.2.4

08 May 07:39

Choose a tag to compare

fix(panel): 修复 HTTP 下安装命令复制按钮失败

两处问题:
1. clipboard.ts fallback 将 textarea 插入 document.body,但 Radix Dialog
   的 focus trap 阻止 dialog 外的元素获得焦点,导致 execCommand('copy') 返回 false
   → 改为优先插入 [role="dialog"] 容器,确保在 focus scope 内
2. handleCopy 未 await copyText(),失败时仍显示"已复制"
   → 改为 async/await,失败时 alert 提示手动复制

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

v0.2.3

08 May 06:32

Choose a tag to compare

v0.2.3

v0.2.2

08 May 06:07

Choose a tag to compare

v0.2.2