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
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Changelog

## 1.0.5

### Fixed / 修复

- **Upload speed measurement** — the upload duration now stops as soon as the
request body is fully sent, so the server's response download no longer
inflates the measured upload throughput (and the reported `SpeedTestProgress`
value stays consistent with the final result).
- **上传速率测量**——上传耗时改为在请求体完全发出时即停止,服务器回包下载时间不再计入,上传速率与进度回调数值保持一致。
- **Web connectivity listener leak** — `WebConnectivityAdapter.onConnectivityChanged`
now attaches the `online` / `offline` browser listeners on the first
subscription and detaches them on the last cancellation, so repeated
subscriptions no longer accumulate global event listeners.
- **Web 连通性监听泄漏**——`WebConnectivityAdapter.onConnectivityChanged` 改为首次订阅时挂载、末次取消时移除浏览器的 `online` / `offline` 监听,反复订阅不再累积全局监听。
- **Web DNS DoH contract** — an explicit DNS server with no known DoH endpoint now
returns the documented "unsupported" result instead of probing an arbitrary
`https://<server>/dns-query` URL.
- **Web 端 DNS DoH 契约**——对没有已知 DoH 端点的显式 DNS 服务器,现在按文档返回"不支持"结果,而非去请求一个未必提供 DoH 的 `https://<server>/dns-query` 地址。
- **Web ping RTT** — the TCP-probe ping on the web stops the timer at the response
headers, so a large response body no longer inflates the reported latency.
- **Web 端 Ping RTT**——Web 端的 TCP 探测 ping 在收到响应头即停表,响应体大小不再抬高测得的延迟。

### Added / 新增

- **IPv6 DNS resolution** — the raw-UDP resolver now sends both A and AAAA
queries and binds a wildcard socket that matches the target server's address
family, so IPv6 answers are resolved too (previously only IPv4).
- **IPv6 DNS 解析**——原始 UDP 解析器现在同时发送 A 与 AAAA 查询,并按目标服务器地址族绑定通配套接字,从而也能解析出 IPv6 地址(此前仅限 IPv4)。

## 1.0.4

### Fixed / 修复
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ micro-benchmarks — for Android, iOS, macOS, Windows, Linux and Web (partial).
[![Dart](https://img.shields.io/badge/Dart-✓-0175C2?logo=dart)](https://dart.dev)
[![Style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)

> **🔔 Upgrade recommended:** `1.0.4` removes the remaining `dart:io` imports from the Web build — the platform variants are now selected by gating the `dart:io` implementations behind `dart.library.io`, so the Web build resolves to the browser-based implementations and compiles with `flutter build web --wasm`. Upgrade to `^1.0.4`.
> **🔔 Upgrade recommended:** `1.0.5` fixes the upload-speed measurement (no longer inflated by the server response), stops a Web connectivity listener leak, aligns the Web DNS DoH contract with its docs, and adds IPv6 (AAAA) to the raw-UDP resolver. Upgrade to `^1.0.5`.

🌐 **[Official Website](https://www.zerolabsco.com/)** &nbsp;·&nbsp; 📦 **[View on pub.dev](https://pub.dev/packages/zero_network_kit)** &nbsp;·&nbsp; 🔗 **[View on GitHub](https://github.com/zero-labsco/zero_network_kit)**

Expand Down Expand Up @@ -74,7 +74,7 @@ Design goals:

```yaml
dependencies:
zero_network_kit: ^1.0.4
zero_network_kit: ^1.0.5
```

### Android permissions
Expand Down
4 changes: 2 additions & 2 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
[![Dart](https://img.shields.io/badge/Dart-✓-0175C2?logo=dart)](https://dart.dev)
[![Style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)

> **🔔 推荐升级:** `1.0.4` 移除了 Web 构建中残留的 `dart:io` 引用——各平台实现改为按 `dart.library.io` 条件引入原生版本,Web 侧因此只解析到基于浏览器的实现,可用 `flutter build web --wasm` 编译。建议升级到 `^1.0.4`。
> **🔔 推荐升级:** `1.0.5` 修正了上传速率测量(不再被服务器回包时间抬高)、修复了 Web 连通性监听泄漏、使 Web 端 DNS 的 DoH 契约与文档一致,并为原始 UDP 解析器加入 IPv6(AAAA)支持。建议升级到 `^1.0.5`。

🌐 **[官方网站](https://www.zerolabsco.com/)** &nbsp;·&nbsp; 📦 **[在 pub.dev 查看](https://pub.dev/packages/zero_network_kit)** &nbsp;·&nbsp; 🔗 **[查看 GitHub 仓库](https://github.com/zero-labsco/zero_network_kit)**

Expand Down Expand Up @@ -72,7 +72,7 @@

```yaml
dependencies:
zero_network_kit: ^1.0.4
zero_network_kit: ^1.0.5
```

### Android 权限
Expand Down
2 changes: 1 addition & 1 deletion docs/404.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/zero_network_kit/_next/static/css/df9fc72061aac7da.css" as="style"/><link rel="stylesheet" href="/zero_network_kit/_next/static/css/df9fc72061aac7da.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/zero_network_kit/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/zero_network_kit/_next/static/chunks/webpack-ecae8a7b821d04b9.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/framework-64ad27b21261a9ce.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/main-f01190a0229cfea1.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/pages/_app-8d9090723aec7545.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/pages/_error-7a92967bea80186d.js" defer=""></script><script src="/zero_network_kit/_next/static/nuDvG3BQ_xqr8cZZcfr-R/_buildManifest.js" defer=""></script><script src="/zero_network_kit/_next/static/nuDvG3BQ_xqr8cZZcfr-R/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"nuDvG3BQ_xqr8cZZcfr-R","assetPrefix":"/zero_network_kit","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/zero_network_kit/_next/static/css/df9fc72061aac7da.css" as="style"/><link rel="stylesheet" href="/zero_network_kit/_next/static/css/df9fc72061aac7da.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/zero_network_kit/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/zero_network_kit/_next/static/chunks/webpack-ecae8a7b821d04b9.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/framework-64ad27b21261a9ce.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/main-f01190a0229cfea1.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/pages/_app-8d9090723aec7545.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/pages/_error-7a92967bea80186d.js" defer=""></script><script src="/zero_network_kit/_next/static/_EQnS2NtxmlSi3SDEn1lD/_buildManifest.js" defer=""></script><script src="/zero_network_kit/_next/static/_EQnS2NtxmlSi3SDEn1lD/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"_EQnS2NtxmlSi3SDEn1lD","assetPrefix":"/zero_network_kit","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
2 changes: 1 addition & 1 deletion docs/404/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/zero_network_kit/_next/static/css/df9fc72061aac7da.css" as="style"/><link rel="stylesheet" href="/zero_network_kit/_next/static/css/df9fc72061aac7da.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/zero_network_kit/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/zero_network_kit/_next/static/chunks/webpack-ecae8a7b821d04b9.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/framework-64ad27b21261a9ce.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/main-f01190a0229cfea1.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/pages/_app-8d9090723aec7545.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/pages/_error-7a92967bea80186d.js" defer=""></script><script src="/zero_network_kit/_next/static/nuDvG3BQ_xqr8cZZcfr-R/_buildManifest.js" defer=""></script><script src="/zero_network_kit/_next/static/nuDvG3BQ_xqr8cZZcfr-R/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"nuDvG3BQ_xqr8cZZcfr-R","assetPrefix":"/zero_network_kit","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/zero_network_kit/_next/static/css/df9fc72061aac7da.css" as="style"/><link rel="stylesheet" href="/zero_network_kit/_next/static/css/df9fc72061aac7da.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/zero_network_kit/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/zero_network_kit/_next/static/chunks/webpack-ecae8a7b821d04b9.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/framework-64ad27b21261a9ce.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/main-f01190a0229cfea1.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/pages/_app-8d9090723aec7545.js" defer=""></script><script src="/zero_network_kit/_next/static/chunks/pages/_error-7a92967bea80186d.js" defer=""></script><script src="/zero_network_kit/_next/static/_EQnS2NtxmlSi3SDEn1lD/_buildManifest.js" defer=""></script><script src="/zero_network_kit/_next/static/_EQnS2NtxmlSi3SDEn1lD/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"_EQnS2NtxmlSi3SDEn1lD","assetPrefix":"/zero_network_kit","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
4 changes: 2 additions & 2 deletions docs/API-Reference/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Benchmark/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Connectivity/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/DNS/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/FAQ/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Full-Report/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Getting-Started/index.html

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions docs/Installation/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Ping/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Platform-Support/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Ports/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Quality/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Speed-Test/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/Usage/index.html

Large diffs are not rendered by default.

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

2 changes: 1 addition & 1 deletion docs/_next/static/chunks/nextra-data-en-US.json

Large diffs are not rendered by default.

Loading
Loading