ji ruo
|
14f3f1a805
|
fix(web): shrink empty remark columns in task lists
|
2026-10-20 11:31:05 +08:00 |
|
ji ruo
|
ed7eda5e0c
|
fix(intercept): default judge failure retries to three
|
2026-10-20 11:25:04 +08:00 |
|
ji ruo
|
b2373b2b76
|
fix(intercept): default model failure policy to human approval
|
2026-10-20 10:31:06 +08:00 |
|
ji ruo
|
de7a668b32
|
feat: align list editors with name hover actions
|
2026-10-19 09:58:32 +08:00 |
|
ji ruo
|
bdf0e68644
|
style: align schedule IDs with task list
|
2026-10-19 09:29:48 +08:00 |
|
ji ruo
|
316889f76a
|
feat: add inline remarks for tasks and schedules
|
2026-10-19 09:17:59 +08:00 |
|
RuoJi6
|
4bec88fc7f
|
Merge pull request #14 from RuoJi6/codex/online-update-proxy
feat: 在线更新支持独立可选代理与统一设置界面
|
2026-10-19 08:43:41 +08:00 |
|
RuoJi6
|
db371be93c
|
feat(demo): deploy published releases to Vercel (#15)
|
2026-10-15 15:47:03 +08:00 |
|
ji ruo
|
6a3d39e969
|
feat: add optional proxy for online updates
|
2026-10-15 15:44:55 +08:00 |
|
ji ruo
|
36eb5c5e89
|
fix: fill approval prompt editor card height
|
2026-10-15 14:58:51 +08:00 |
|
ji ruo
|
d2e7e3a8a7
|
fix: add configurable model approval retries
|
2026-10-15 14:45:08 +08:00 |
|
ji ruo
|
b9b137dc91
|
fix: preserve blank lines when copying HTTP packets
|
2026-10-13 17:30:44 +08:00 |
|
ji ruo
|
600007873c
|
fix: preserve task severity counts after finding grouping
|
2026-10-13 15:30:11 +08:00 |
|
ji ruo
|
6aa0c56d81
|
fix: improve static script review and default to model judgement
|
2026-10-13 14:08:00 +08:00 |
|
ji ruo
|
139e997ba8
|
fix: remove empty approval detail space
|
2026-10-12 19:58:40 +08:00 |
|
ji ruo
|
dc72b5b4a9
|
feat: configure incomplete script review path
|
2026-10-12 18:01:49 +08:00 |
|
ji ruo
|
97213e357b
|
fix: avoid false script snapshot reviews
|
2026-10-12 17:31:33 +08:00 |
|
ji ruo
|
99c54bfa33
|
fix: use consistent approval date picker labels
|
2026-10-12 12:48:47 +08:00 |
|
ji ruo
|
2f2b78cc78
|
feat: search approval history by content and date
|
2026-10-12 12:38:31 +08:00 |
|
ji ruo
|
e33eedeb17
|
fix: preserve chat height when side panel is closed
|
2026-10-12 12:09:18 +08:00 |
|
ji ruo
|
a908eb28e4
|
fix: show explicit script toggle direction
|
2026-10-12 11:56:09 +08:00 |
|
ji ruo
|
a757ece8c3
|
fix: keep approval script details visible
|
2026-10-12 11:42:41 +08:00 |
|
ji ruo
|
86c376943f
|
fix: render approval details at intrinsic height
|
2026-10-12 11:26:49 +08:00 |
|
ji ruo
|
8b95ad1664
|
fix: prevent approval script panel clipping
|
2026-10-12 11:20:17 +08:00 |
|
ji ruo
|
9b0d1bdb3c
|
feat: expose scripts to review and add approval side chat
|
2026-10-12 11:06:38 +08:00 |
|
ji ruo
|
0af7132ab7
|
修复计划暂停来源和时间线刷新
|
2026-10-10 09:16:28 +08:00 |
|
ji ruo
|
87e62fb904
|
支持计划任务批量选择操作
|
2026-10-10 09:01:21 +08:00 |
|
ji ruo
|
96a10878ad
|
重新设计计划任务运行时间线
|
2026-10-10 08:56:13 +08:00 |
|
ji ruo
|
8a1c9debbb
|
让立即运行直接恢复任务
|
2026-10-10 08:50:15 +08:00 |
|
ji ruo
|
8067f3286b
|
修复计划任务立即运行并区分状态颜色
|
2026-10-10 08:45:06 +08:00 |
|
ji ruo
|
a5cfec025f
|
固定显示计划任务时间线入口
|
2026-10-10 08:39:55 +08:00 |
|
ji ruo
|
e52fe67171
|
将计划任务改为字段表格展示
|
2026-10-10 00:47:14 +08:00 |
|
ji ruo
|
aed3062b4d
|
增加计划任务检索分页和时间线
|
2026-10-10 00:38:22 +08:00 |
|
ji ruo
|
30db68a86a
|
优化计划任务列表展示
|
2026-10-10 00:30:51 +08:00 |
|
ji ruo
|
98321d8262
|
支持计划任务日期范围
|
2026-10-09 23:50:05 +08:00 |
|
ji ruo
|
3254c90a03
|
新增日历式计划任务
|
2026-10-09 23:05:44 +08:00 |
|
ji ruo
|
aca6e9a8fb
|
fix(ui): match folder task labels to existing table rows
|
2026-10-09 13:32:57 +08:00 |
|
ji ruo
|
012030b41d
|
fix(ui): align merged folders with existing columns and omit duplicate headers
|
2026-10-09 13:20:53 +08:00 |
|
ji ruo
|
ada09f6c1a
|
fix(ui): restore original controls and limit folders to merged findings
|
2026-10-09 13:12:54 +08:00 |
|
ji ruo
|
d36812b7e1
|
feat(findings): show consolidation across report task and asset views
|
2026-10-09 12:41:46 +08:00 |
|
ji ruo
|
d68594e81a
|
fix(ui): hide completed finding review history from findings page
|
2026-10-09 12:27:54 +08:00 |
|
ji ruo
|
7db7b71cdb
|
fix(findings): protect historical reports and verify consolidation results
|
2026-10-09 12:23:11 +08:00 |
|
RuoJi6
|
e77c3ae9a3
|
Merge pull request #2 from RuoJi6/codex/finding-folders
feat(findings): 同一漏洞重复上报归并与文件夹展示
|
2026-10-09 11:07:16 +08:00 |
|
ji ruo
|
24d4726aee
|
feat(findings): consolidate duplicate reports into expandable cases
|
2026-10-09 10:43:53 +08:00 |
|
ji ruo
|
04c8c54ff8
|
feat(auth): add optional HTTP Basic Auth access gate
|
2026-10-09 10:12:27 +08:00 |
|
Autumn-27
|
a951e4aad3
|
fix bug
|
2026-10-07 07:45:28 -04:00 |
|
Autumn-27
|
86729b65dc
|
feat(intercept): 模型兜底审批单独计量 token 并在配置页展示
兜底审批(LLM judge)调模型判定漏网命令,其 token 消耗此前无法单独查看:
usage 行要么无 worker 归属、要么被并进复用的模型 profile 桶里。
- llmrec 增加 WithWorker 上下文覆盖,reviewer 调用前标注 worker='judge',
让审批调用的计量行可被单独筛出(复用现有 llm_usage.worker 列,无需迁移)。
- db.JudgeUsageStats 返回累计总量 + 近 N 天每日序列(WHERE worker='judge')。
- 新增 GET /api/intercept/judge/usage。
- 配置页「模型兜底审批」开关下方新增用量卡片:调用次数 / 输入 / 输出 /
缓存读写 五项统计 + 近 30 天每日消耗迷你柱图 + 刷新。
|
2026-10-04 02:43:26 -04:00 |
|
Autumn-27
|
e2c8a23a98
|
fix(web): SSE 活动流默认同源,修复反代部署连不上 :8787
sseUrl() 原先无条件把 SSE 地址拼成 ${hostname}:8787,连生产静态导出
也带这个硬编码。反代到 443 的部署里页面从 https://域名/ 加载,SSE 却被
指向 https://域名:8787/...,而 8787 未对公网开放,导致活动流连不上、反复重连。
改为用 NODE_ENV 区分:生产默认同源(相对路径),仅 next dev 保留 :8787
以绕过 Next.js /api 反代对 SSE 的缓冲。NEXT_PUBLIC_SSE_BASE 覆盖口保留。
验证:NEXT_EXPORT=1 next build 后生产包里 :8787 分支已被 tree-shake。
补充 README 反向代理部署文档(同源说明 + nginx 关缓冲配置)。
Closes #169
|
2026-10-02 20:10:08 -04:00 |
|
 luckoneandClaude Code
|
ee8929115e
|
refactor(web): 通知页拆分为组件,1095 行降到 605 行
页面此前接近 1100 行,超过 CLAUDE.md 的 800 行硬上限。按项目的 _components/
约定拆开,每个文件都能单独读懂:
_components/channel-fields.ts 渠道字段表与配置值解析(纯数据,无视图)
_components/channel-form.tsx 按字段定义渲染控件的表单
_components/delivery-list.tsx 投递记录表与筛选
_components/stat-tile.tsx 概览统计卡片
page.tsx 只负责编排:加载、表单状态、调接口
拆分是纯模块搬移,未改行为;tsc 与 next build 均通过,/system/notify 仍正常
预渲染。
Co-Authored-By: Claude Code <[email protected]>
|
2026-09-30 16:25:06 +08:00 |
|
 luckoneandClaude Code
|
f3fb37f70d
|
feat(notify): 漏洞发现支持推送到钉钉/飞书/企业微信等六种渠道
新增「系统 → 通知推送」页,把扫描发现的漏洞推送到钉钉、飞书、企业微信、
通用 Webhook、Telegram、邮件。同一类型可配任意多个机器人实例,每个实例独立
设启停、限流与过滤规则(最低级别 / 任务资产范围 / 漏洞类型关键词 / 是否接收
处置状态变更)。推送时机分实时与汇总两种模式,「高危实时、其余汇总」建两个
渠道即可表达,策略不写死在代码里。带投递历史与失败重发。
三个关键设计:
1. 写漏洞的事务只做一次盲 INSERT。notification_events 由 RecordFindingTx
在同一事务内写入,保证「漏洞落库」与「推送任务存在」原子一致;这条 INSERT
刻意不读渠道表、不跑用户的过滤规则,否则一条配错的过滤条件就能污染甚至
中止事务,让高危漏洞存不进库。为把失败隔离在这一条语句上(PostgreSQL 中
事务内任一语句报错会让整个事务作废、连 COMMIT 都失败),它被 SAVEPOINT
包住,失败时只记日志。
2. 投递用租约领取而非长事务。FOR UPDATE SKIP LOCKED 领取后把行置为 sending、
把 next_attempt_at 推到未来作为租约,提交后再做网络投递,因此投递期间不
持有数据库锁;崩溃留下的 sending 行会被下一轮重新领取,自愈且不会无限重试。
3. 限流不消耗重试预算。先按渠道令牌桶算出本轮还能发几条,再按这个数量领取;
顺序反过来会让被限流挡下的投递白计一次尝试,三次预算被等待耗光后落入失败。
审计并修复的四个问题:
- 推送凭据经错误信息外泄:http.Client.Do 返回的 *url.Error 会把完整 URL 打进
错误文本,而钉钉 access_token、企业微信 key、飞书 hook id、Telegram
/bot<token>/ 都就在 URL 里。该串流入 last_error(明文落库)、投递历史接口
(绕过渠道掩码)、服务端日志与前端错误提示。现统一脱敏为 scheme://host
+ 底层原因,并拒绝跨主机重定向。
- 最低级别门槛打错字会让过滤器静默失效:未知级别序数为 0,判定退化成
rank >= 0 恒真,用户以为限制「仅高危」实际全推。现于写入路径校验取值。
- 汇总批次无上限:一次领取把全部待发行读进内存、消息被渠道长度上限截掉大半
且静默丢失。现单批上限 500 条,超出部分留库成为下一批。
- 邮件渠道把 SMTP 4xx(灰名单等临时失败)判成永久失败,导致这类最该重试的
场景从不重试。现按应答码首位区分 4xx/5xx。
测试:notify 包 82% 覆盖(含用自建最小 SMTP 服务器驱动的完整邮件协议会话、
两种签名算法对 OpenSSL 基准值的比对、UTF-8 边界截断、以及模板能力边界的
反射断言);db 与 server 侧共 29 个用例跑真实 PostgreSQL,其中端到端用例
真发 HTTP 到假接收端并断言消息内容与投递状态。
Co-Authored-By: Claude Code <[email protected]>
|
2026-09-30 16:25:06 +08:00 |
|