Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ body:
id: version
attributes:
label: ipcheck version
placeholder: ipcheck 0.7.0
placeholder: ipcheck 0.8.0
validations:
required: true
- type: dropdown
Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,29 @@ All notable changes to ipcheck are documented here. The project follows

## [Unreleased]

## [0.8.0] - 2026-07-23

### Added

- Added an adaptive terminal dashboard with score bars, concise status icons,
actionable bottleneck hints, and compact output for narrow terminals.
- Added animated TTY progress while network requests are running, while keeping
redirected output stable and preserving graceful `Ctrl+C` cancellation.
- Added reproducible English and Chinese static previews alongside the animated
terminal GIFs.

### Changed

- Added a localized Chinese terminal GIF to the Chinese README while keeping
the English demo in the English README.
- Renamed successful endpoint status from the ambiguous `OK`/“正常” to
`REACH`/“可达” and condensed default per-client conclusions.
- Replaced readiness-score rule v1 with a component-based rule v2 that scores
reachability, median TTFB, P95, and jitter separately and reduces the score
cliff at service-verdict boundaries.
- Kept measured bandwidth speed and sample completeness as separate scoring
inputs, so a very slow partial estimate can no longer receive a smaller
penalty than a faster completed sample.

## [0.7.0] - 2026-07-22

Expand Down Expand Up @@ -103,6 +122,7 @@ All notable changes to ipcheck are documented here. The project follows
- Homebrew and direct-download packaging.
- Median/P95 TTFB, jitter, reference bandwidth, and macOS `networkQuality`.

[0.8.0]: https://github.com/jacklv-coder/ipcheck/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/jacklv-coder/ipcheck/compare/v0.6.1...v0.7.0
[0.6.1]: https://github.com/jacklv-coder/ipcheck/compare/v0.6.0...v0.6.1
[0.6.0]: https://github.com/jacklv-coder/ipcheck/compare/v0.5.0...v0.6.0
Expand Down
43 changes: 22 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,32 @@ Know whether your AI coding CLI is slow, blocked, or using the wrong gateway.
**Codex** and **Claude Code**. It auto-detects installed clients and safe,
non-secret routing configuration, then reports reachability, median/P95
time-to-first-byte (TTFB), jitter, reference bandwidth, and a clear
`GOOD`, `FAIR`, `POOR`, or `BLOCKED` result. Interactive runs show live,
`GOOD`, `FAIR`, `POOR`, or `BLOCKED` result. Interactive runs show animated,
color-coded progress, can be cancelled cleanly with `Ctrl+C`, and finish with
a direct answer plus a rule-based readiness score.
an adaptive terminal dashboard plus a rule-based readiness score.

![Animated ipcheck terminal demo](assets/ipcheck-demo.gif)

```text
$ ipcheck
ipcheck v0.7.0 — AI coding network diagnostics
ipcheck v0.8.0 AI coding network check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Developer verdict
Ready to code? YES
Readiness score: 95/100 · COMFORTABLE
This network is ready for AI-assisted development.
✓ Ready to code? YES
100/100 ████████████████████ COMFORTABLE

Detected clients
Codex model=gpt-5.6-sol, route=https://chatgpt.com + https://api.openai.com
Claude Code model=deepseek-v4-flash, route=https://dashscope.aliyuncs.com/apps/anthropic
This network is ready for AI-assisted development.

Service results
Codex GOOD The service path is reachable with acceptable latency and jitter.
Claude Code GOOD The service path is reachable with acceptable latency and jitter.
◆ AI service latency
✓ REACH ChatGPT Codex HTTP 401 · median 260 ms
✓ REACH Claude Messages API Claude Code HTTP 403 · median 220 ms

Result: GOOD
◆ AI service results
● Codex GOOD · ● Claude Code GOOD

Network bandwidth
Network bandwidth
Download 80.0 Mbps FAST Cloudflare, up to 2 MB
Upload 16.0 Mbps FAST Cloudflare, up to 1 MB zero-filled
Advice Bandwidth is sufficient for everyday AI-assisted development.
```

## Why ipcheck
Expand Down Expand Up @@ -76,7 +73,7 @@ brew install ipcheck

```bash
mkdir -p "$HOME/.local/bin"
curl -fsSL https://raw.githubusercontent.com/jacklv-coder/ipcheck/v0.7.0/bin/ipcheck \
curl -fsSL https://raw.githubusercontent.com/jacklv-coder/ipcheck/v0.8.0/bin/ipcheck \
-o "$HOME/.local/bin/ipcheck"
chmod +x "$HOME/.local/bin/ipcheck"
```
Expand Down Expand Up @@ -153,10 +150,14 @@ higher and `ADEQUATE` from 2 Mbps. Lower measurements are `SLOW`. The optional
substantially more data than ipcheck's capped Cloudflare checks.

The readiness score is a transparent heuristic, not a claim about user
percentiles. Rule v1 starts from the service-path verdict (`90` healthy, `70`
usable but delayed, `45` reachable but temporarily unavailable, `35` poor, or
`0` blocked). Completed bandwidth ratings can then add up to 5 points or deduct
up to 10; partial samples deduct 2 points each. JSON exposes `score`,
percentiles. Rule v2 gives the least healthy detected client up to 90
service-path points: reachability and success rate contribute 35, median TTFB
35, P95 10, and jitter 10. Each bandwidth direction adds 5 points when fast,
3 when adequate, deducts 5 when slow, and stays neutral when unavailable; an
incomplete sample deducts 2 more without hiding its measured speed class.
Usable-but-delayed paths are capped at 89, temporarily unavailable or poor
paths at 64, and blocked paths at 0. Score labels are `COMFORTABLE` from 90,
`GOOD` from 75, `USABLE` from 65, and `LIMITED` below 65. JSON exposes `score`,
`score_label`, `score_method`, and the per-component `score_breakdown` for
automation.

Expand Down
44 changes: 22 additions & 22 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,31 @@
**Claude Code** 的真实网络路径。它会自动识别本机客户端以及不含密钥的路由
配置,测量可达性、首字节延迟(TTFB)中位数/P95、抖动和参考带宽,并给出
明确的 `GOOD`、`FAIR`、`POOR` 或 `BLOCKED` 结论。交互运行时会显示带颜色的
实时进度,支持通过 `Ctrl+C` 友好取消,并直接告诉你“现在是否适合开发”以及
规则化的开发适配分
动态进度,支持通过 `Ctrl+C` 友好取消,并用自适应终端仪表盘直接告诉你
“现在是否适合开发”以及规则化的开发适配分

![ipcheck 中文终端动态演示](assets/ipcheck-demo-zh.gif)

```text
$ ipcheck
ipcheck v0.7.0 — AI 编程网络诊断
ipcheck v0.8.0 AI 编程网络体检
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

开发建议
现在适合开发吗?适合
开发适配分:95/100 · 舒适
当前网络适合进行 AI 辅助开发。
✓ 现在适合开发吗?适合
100/100 ████████████████████ 舒适

Detected clients
Codex model=gpt-5.6-sol, route=https://chatgpt.com + https://api.openai.com
Claude Code model=deepseek-v4-flash, route=https://dashscope.aliyuncs.com/apps/anthropic
当前网络适合进行 AI 辅助开发。

Service results
Codex GOOD
Claude Code GOOD
◆ AI 服务延迟
✓ 可达 ChatGPT Codex HTTP 401 · 中位 260 ms
✓ 可达 Claude Messages API Claude Code HTTP 403 · 中位 220 ms

Result: GOOD
◆ AI 服务结论
● Codex 良好 · ● Claude Code 良好

网络带宽
网络带宽
下载 80.0 Mbps 快 Cloudflare,最多 2 MB
上传 16.0 Mbps 快 Cloudflare,最多 1 MB 零字节
建议 当前带宽足以支持日常 AI 辅助开发。
```

## 核心能力
Expand Down Expand Up @@ -70,7 +67,7 @@ brew install ipcheck

```bash
mkdir -p "$HOME/.local/bin"
curl -fsSL https://raw.githubusercontent.com/jacklv-coder/ipcheck/v0.7.0/bin/ipcheck \
curl -fsSL https://raw.githubusercontent.com/jacklv-coder/ipcheck/v0.8.0/bin/ipcheck \
-o "$HOME/.local/bin/ipcheck"
chmod +x "$HOME/.local/bin/ipcheck"
```
Expand Down Expand Up @@ -138,11 +135,14 @@ ipcheck --no-upload
“慢”。可选的 `--system` 会交给 macOS `networkQuality` 测试,消耗的数据量
可能明显高于 ipcheck 自带的限量 Cloudflare 测试。

开发适配分是透明的规则评分,不代表“超过多少用户”的百分位。规则 v1 根据
服务链路结论从 90(健康)、70(可用但偏慢)、45(可达但服务暂不可用)、
35(较差)或 0(阻断)起算;完整的上下行测速最多加 5 分或扣 10 分,部分
样本每项扣 2 分。JSON 会输出 `score`、`score_label`、`score_method`,以及逐项的
`score_breakdown`。
开发适配分是透明的规则评分,不代表“超过多少用户”的百分位。规则 v2 对最弱的
客户端链路计算最多 90 分:可达性和成功率占 35 分、TTFB 中位数占 35 分、
P95 占 10 分、抖动占 10 分。下载和上传分别在“快”时加 5 分、“够用”时加
3 分、“慢”时扣 5 分,不可用时不加不扣;部分样本会在保留实际速度等级的
基础上再扣 2 分。可用但偏慢的链路最高 89 分,暂时不可用或较差的链路最高
64 分,阻断链路为 0 分。90 分起为“舒适”、75 分起为“良好”、65 分起为
“可用”,低于 65 分为“受限”。JSON 会输出 `score`、`score_label`、
`score_method`,以及逐项的 `score_breakdown`。

运行 `ipcheck --help` 可以查看完整参数。

Expand Down
Binary file modified assets/ipcheck-demo-zh.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/ipcheck-demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/ipcheck-preview-zh.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/ipcheck-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading