Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
fad1be4
feat(pr): webhook 数据源接收端 + Cloudflare Quick Tunnel 公网代理(#9)
ghbvf Jun 16, 2026
41c5758
fix(pr): 内置 review small findings 修复(PR #49)
ghbvf Jun 16, 2026
b2fa1af
fix(review): webhook 并发幂等改原子 {pr,kind} 预留 + ReviewEngine 返回 Option(#4…
ghbvf Jun 17, 2026
8879361
fix(pr): cloudflared 退出自愈 + payloadUrl 单源 + parser state==open + ledg…
ghbvf Jun 17, 2026
f4dacca
fix(pr): WebhookPanel 展示/复制 payloadUrl(含 /webhook 路径)(#49 F2 前端)
ghbvf Jun 17, 2026
0d51f4b
feat(config): webhook 隧道 3 模式配置面 + 模式感知面板(#50)
ghbvf Jun 17, 2026
9f27116
feat(pr): webhook 隧道 3 模式解耦(quick/command/listener,#50)
ghbvf Jun 17, 2026
712ce6e
fix(config): webhook 面板/字段 mode 感知文案 + union 单源(#50 review G4/G5/G8/G9)
ghbvf Jun 17, 2026
12359b3
fix(pr): webhook teardown 显式 reaping + status mode 感知(#50 review G1/G…
ghbvf Jun 17, 2026
d1e3679
fix(review): ReviewEngine.start 返回 StartReviewOutcome enum(#49 F9)
ghbvf Jun 17, 2026
fe2384e
fix(pr): webhook 生命周期闭环 + repo 归属校验 + URL 归一化(#49 F1/F3/F4/F2/F7)
ghbvf Jun 17, 2026
3c71653
fix(config): webhook secret 最小长度校验(#49 F8)
ghbvf Jun 17, 2026
45f5c77
fix(前端): WebhookPanel composition lift 解耦 + slice-boundary 测试(#49 F5/F6)
ghbvf Jun 17, 2026
1d376db
fix(pr): 去 command-mode self-heal 测试的时序竞态(CI flaky)
ghbvf Jun 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 13 additions & 1 deletion src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,19 @@ tauri-plugin-opener = "2"
tauri-plugin-store = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["time", "sync", "macros", "process", "io-util"] }
tokio = { version = "1", features = ["time", "sync", "macros", "process", "io-util", "net"] }
# Local webhook receiver (#9): a single `POST /webhook` endpoint bound to
# 127.0.0.1, reached from the public internet via a Cloudflare Quick Tunnel
# (`cloudflared` subprocess). axum is the idiomatic tokio HTTP server — its async
# handler calls the same `auto_dispatch` path the scheduler uses with zero
# sync→async bridging. `json` feature is unused (we read the raw body via the
# `Bytes` extractor to HMAC-verify the GitHub `X-Hub-Signature-256` before parsing).
axum = { version = "0.7", default-features = false, features = ["tokio", "http1"] }
# GitHub webhook HMAC-SHA256 signature verification (`X-Hub-Signature-256`).
# `hmac::Mac::verify_slice` is constant-time. `hex` decodes the `sha256=<hex>` header.
hmac = "0.12"
sha2 = "0.10"
hex = "0.4"
# `future::join_all` drives the auto-trigger dispatcher's unbounded concurrent
# `start_review` calls in a single task. The engines hold `&` borrows of the
# resident `CodexManager`/`SessionRegistry` (neither `Clone`), so spawning each
Expand Down
Loading
Loading