7 Commits

Author SHA1 Message Date
a3072ccbfb feat: 管理界面改为 token 登录门禁
此前不填 token 也能进入各页面,只是没有内容。新增受鉴权保护的
/api/auth/session 探针与登录页,路由守卫在进入任何非登录页前先探针,
未通过则跳登录页并记住原目标;接口返回 401 时自动清 token 回登录页;
顶栏加退出按钮,撤掉设置页里的 token 卡片。本机未设 ADMIN_TOKEN 时
探针直接通过,开发体验不变。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-03 17:38:38 +08:00
43a753963c feat: 新增 deploy Skill 与 LA 生产部署文档
线上为 1 核 1.9G 机器,放弃 Docker:Node 直跑 + systemd 守护,
前端本地构建后由服务端静态托管,HTTPS 与反代由 aaPanel 的 nginx 管理。
部署脚本支持 web/server/all 三种目标,含本地类型检查与单测、
暂存目录原子换入、健康检查失败自动回滚源码、本地与远端源码树指纹比对
及公网校验。首次部署与一次性配置写在 docs/DEPLOY.md。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-03 17:38:38 +08:00
6ea1f28940 fix: 反代场景下按 X-Forwarded 头还原订阅基址
部署在 nginx 之后时 Node 只看到明文 http 与内网 Host,Surge 的
#!MANAGED-CONFIG 与 Clash 的 provider URL 会指向不可达地址。
读取 X-Forwarded-Proto/X-Forwarded-Host 还原外部 origin。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-03 17:38:38 +08:00
c6db237448 fix: 自定义规则置顶生效,写入前校验策略名存在
规则首条匹配即生效,自定义规则此前插在模板规则之后、FINAL 之前,被
download.conf 等宽泛规则集抢先命中(brew.sh 配了代理仍直连)。现在新建
规则插到 seq 0,重新播种时也把自定义规则整体排在模板规则之前。

同时把 BUILTIN_POLICIES 提到 shared 共用,规则新建/编辑时校验策略必须是
内置策略或已有策略组,避免引用不存在的策略被 IR 静默剔除;前端表单默认
策略由不存在的「Proxy」改为 DIRECT。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-03 16:44:40 +08:00
a30360ab38 fix: ShadowRocket 策略名去引号,修复规则整条失效
ShadowRocket 的 conf 语法没有引号机制,含空格/emoji 的策略名一律裸写。
此前 quoteName 给策略名加引号,引号被当作名字的一部分,规则指向不存在的
策略组而失效,流量落到默认行为走代理(小红书/微信/抖音配了直连仍走代理)。
改为 policyName 剔除引号与逗号后裸写,补回归测试,并在 CLAUDE.md 记录此约束。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-03 16:44:40 +08:00
e5a3c70773 fix: ShadowRocket 策略组改用 policy-regex-filter 收节点
ShadowRocket 没有 Surge 的 use= 订阅引用语法,首版 conf 里
「订阅名 + use=true」在真机上解析失败,All Nodes 组只显示一个
无效的 Proxy Group 残留成员。改为原生的 policy-regex-filter
从 App 内全部节点筛选(收纳全部节点 = .*),订阅命名约束随之
取消,删除 SHADOWROCKET_SUB_NAME 常量并同步前端提示与文档。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 13:52:27 +08:00
bf7f2df67e init: init proj 2026-08-25 11:35:05 +08:00