chore(release): polish v0.8.60 web notes and esbuild
Add the v0.8.60 website feature spotlight, refresh install copy, sync the TUI changelog, and pin esbuild 0.28.1 across root/web lockfiles for the Dependabot advisory. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -222,6 +222,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
CodeWhale aliases now use OpenAI's documented 1,050,000-token context window
|
CodeWhale aliases now use OpenAI's documented 1,050,000-token context window
|
||||||
and 128,000 max-output metadata for context pressure, prompts, and doctor
|
and 128,000 max-output metadata for context pressure, prompts, and doctor
|
||||||
capability output.
|
capability output.
|
||||||
|
- **OpenAI Codex effective context budgeting.** The public OpenAI API metadata
|
||||||
|
for `gpt-5.5` remains 1,050,000 tokens, but the `openai-codex` OAuth route now
|
||||||
|
budgets prompts against the 400K Codex-family effective window so preflight
|
||||||
|
compaction runs before the backend returns `context_length_exceeded`.
|
||||||
- **OpenRouter Nemotron 3 Ultra preset.** The OpenRouter preset and model
|
- **OpenRouter Nemotron 3 Ultra preset.** The OpenRouter preset and model
|
||||||
registry now emit `nvidia/nemotron-3-ultra-550b-a55b` while keeping the old
|
registry now emit `nvidia/nemotron-3-ultra-550b-a55b` while keeping the old
|
||||||
Ultra aliases compatible.
|
Ultra aliases compatible.
|
||||||
|
|||||||
Generated
+108
-108
@@ -153,9 +153,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/aix-ppc64": {
|
"node_modules/@esbuild/aix-ppc64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
|
||||||
"integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==",
|
"integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ppc64"
|
"ppc64"
|
||||||
],
|
],
|
||||||
@@ -170,9 +170,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-arm": {
|
"node_modules/@esbuild/android-arm": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
|
||||||
"integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==",
|
"integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@@ -187,9 +187,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-arm64": {
|
"node_modules/@esbuild/android-arm64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
|
||||||
"integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==",
|
"integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -204,9 +204,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-x64": {
|
"node_modules/@esbuild/android-x64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
|
||||||
"integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==",
|
"integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -221,9 +221,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/darwin-arm64": {
|
"node_modules/@esbuild/darwin-arm64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
|
||||||
"integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==",
|
"integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -238,9 +238,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/darwin-x64": {
|
"node_modules/@esbuild/darwin-x64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
|
||||||
"integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==",
|
"integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -255,9 +255,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/freebsd-arm64": {
|
"node_modules/@esbuild/freebsd-arm64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
|
||||||
"integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==",
|
"integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -272,9 +272,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/freebsd-x64": {
|
"node_modules/@esbuild/freebsd-x64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
|
||||||
"integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==",
|
"integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -289,9 +289,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-arm": {
|
"node_modules/@esbuild/linux-arm": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
|
||||||
"integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==",
|
"integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@@ -306,9 +306,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-arm64": {
|
"node_modules/@esbuild/linux-arm64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
|
||||||
"integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==",
|
"integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -323,9 +323,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-ia32": {
|
"node_modules/@esbuild/linux-ia32": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
|
||||||
"integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==",
|
"integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@@ -340,9 +340,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-loong64": {
|
"node_modules/@esbuild/linux-loong64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
|
||||||
"integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==",
|
"integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"loong64"
|
"loong64"
|
||||||
],
|
],
|
||||||
@@ -357,9 +357,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-mips64el": {
|
"node_modules/@esbuild/linux-mips64el": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
|
||||||
"integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==",
|
"integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"mips64el"
|
"mips64el"
|
||||||
],
|
],
|
||||||
@@ -374,9 +374,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-ppc64": {
|
"node_modules/@esbuild/linux-ppc64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
|
||||||
"integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==",
|
"integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ppc64"
|
"ppc64"
|
||||||
],
|
],
|
||||||
@@ -391,9 +391,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-riscv64": {
|
"node_modules/@esbuild/linux-riscv64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
|
||||||
"integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==",
|
"integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"riscv64"
|
"riscv64"
|
||||||
],
|
],
|
||||||
@@ -408,9 +408,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-s390x": {
|
"node_modules/@esbuild/linux-s390x": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
|
||||||
"integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==",
|
"integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"s390x"
|
"s390x"
|
||||||
],
|
],
|
||||||
@@ -425,9 +425,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-x64": {
|
"node_modules/@esbuild/linux-x64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
|
||||||
"integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==",
|
"integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -442,9 +442,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/netbsd-arm64": {
|
"node_modules/@esbuild/netbsd-arm64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
|
||||||
"integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==",
|
"integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -459,9 +459,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/netbsd-x64": {
|
"node_modules/@esbuild/netbsd-x64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
|
||||||
"integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==",
|
"integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -476,9 +476,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/openbsd-arm64": {
|
"node_modules/@esbuild/openbsd-arm64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
|
||||||
"integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==",
|
"integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -493,9 +493,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/openbsd-x64": {
|
"node_modules/@esbuild/openbsd-x64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
|
||||||
"integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==",
|
"integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -510,9 +510,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/openharmony-arm64": {
|
"node_modules/@esbuild/openharmony-arm64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
|
||||||
"integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==",
|
"integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -527,9 +527,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/sunos-x64": {
|
"node_modules/@esbuild/sunos-x64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
|
||||||
"integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==",
|
"integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -544,9 +544,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-arm64": {
|
"node_modules/@esbuild/win32-arm64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
|
||||||
"integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==",
|
"integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -561,9 +561,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-ia32": {
|
"node_modules/@esbuild/win32-ia32": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
|
||||||
"integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==",
|
"integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@@ -578,9 +578,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/win32-x64": {
|
"node_modules/@esbuild/win32-x64": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
|
||||||
"integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==",
|
"integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -1259,9 +1259,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild": {
|
"node_modules/esbuild": {
|
||||||
"version": "0.27.3",
|
"version": "0.28.1",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
|
||||||
"integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==",
|
"integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -1272,32 +1272,32 @@
|
|||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@esbuild/aix-ppc64": "0.27.3",
|
"@esbuild/aix-ppc64": "0.28.1",
|
||||||
"@esbuild/android-arm": "0.27.3",
|
"@esbuild/android-arm": "0.28.1",
|
||||||
"@esbuild/android-arm64": "0.27.3",
|
"@esbuild/android-arm64": "0.28.1",
|
||||||
"@esbuild/android-x64": "0.27.3",
|
"@esbuild/android-x64": "0.28.1",
|
||||||
"@esbuild/darwin-arm64": "0.27.3",
|
"@esbuild/darwin-arm64": "0.28.1",
|
||||||
"@esbuild/darwin-x64": "0.27.3",
|
"@esbuild/darwin-x64": "0.28.1",
|
||||||
"@esbuild/freebsd-arm64": "0.27.3",
|
"@esbuild/freebsd-arm64": "0.28.1",
|
||||||
"@esbuild/freebsd-x64": "0.27.3",
|
"@esbuild/freebsd-x64": "0.28.1",
|
||||||
"@esbuild/linux-arm": "0.27.3",
|
"@esbuild/linux-arm": "0.28.1",
|
||||||
"@esbuild/linux-arm64": "0.27.3",
|
"@esbuild/linux-arm64": "0.28.1",
|
||||||
"@esbuild/linux-ia32": "0.27.3",
|
"@esbuild/linux-ia32": "0.28.1",
|
||||||
"@esbuild/linux-loong64": "0.27.3",
|
"@esbuild/linux-loong64": "0.28.1",
|
||||||
"@esbuild/linux-mips64el": "0.27.3",
|
"@esbuild/linux-mips64el": "0.28.1",
|
||||||
"@esbuild/linux-ppc64": "0.27.3",
|
"@esbuild/linux-ppc64": "0.28.1",
|
||||||
"@esbuild/linux-riscv64": "0.27.3",
|
"@esbuild/linux-riscv64": "0.28.1",
|
||||||
"@esbuild/linux-s390x": "0.27.3",
|
"@esbuild/linux-s390x": "0.28.1",
|
||||||
"@esbuild/linux-x64": "0.27.3",
|
"@esbuild/linux-x64": "0.28.1",
|
||||||
"@esbuild/netbsd-arm64": "0.27.3",
|
"@esbuild/netbsd-arm64": "0.28.1",
|
||||||
"@esbuild/netbsd-x64": "0.27.3",
|
"@esbuild/netbsd-x64": "0.28.1",
|
||||||
"@esbuild/openbsd-arm64": "0.27.3",
|
"@esbuild/openbsd-arm64": "0.28.1",
|
||||||
"@esbuild/openbsd-x64": "0.27.3",
|
"@esbuild/openbsd-x64": "0.28.1",
|
||||||
"@esbuild/openharmony-arm64": "0.27.3",
|
"@esbuild/openharmony-arm64": "0.28.1",
|
||||||
"@esbuild/sunos-x64": "0.27.3",
|
"@esbuild/sunos-x64": "0.28.1",
|
||||||
"@esbuild/win32-arm64": "0.27.3",
|
"@esbuild/win32-arm64": "0.28.1",
|
||||||
"@esbuild/win32-ia32": "0.27.3",
|
"@esbuild/win32-ia32": "0.28.1",
|
||||||
"@esbuild/win32-x64": "0.27.3"
|
"@esbuild/win32-x64": "0.28.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fsevents": {
|
"node_modules/fsevents": {
|
||||||
@@ -1624,7 +1624,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"npm/codewhale": {
|
"npm/codewhale": {
|
||||||
"version": "0.8.59",
|
"version": "0.8.60",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
|
|||||||
@@ -7,5 +7,8 @@
|
|||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"wrangler": "^4.94.0"
|
"wrangler": "^4.94.0"
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"esbuild": "0.28.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,15 +2,18 @@ import Link from "next/link";
|
|||||||
import { Seal } from "@/components/seal";
|
import { Seal } from "@/components/seal";
|
||||||
import { InstallCodeBlock } from "@/components/install-code-block";
|
import { InstallCodeBlock } from "@/components/install-code-block";
|
||||||
import { InstallBinary } from "@/components/install-binary";
|
import { InstallBinary } from "@/components/install-binary";
|
||||||
|
import { getFacts } from "@/lib/facts";
|
||||||
|
|
||||||
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
|
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
|
||||||
const { locale } = await params;
|
const { locale } = await params;
|
||||||
const isZh = locale === "zh";
|
const isZh = locale === "zh";
|
||||||
|
const facts = await getFacts();
|
||||||
|
const version = facts.version ?? "0.8.60";
|
||||||
return {
|
return {
|
||||||
title: isZh ? "安装 · CodeWhale" : "Install · CodeWhale",
|
title: isZh ? "安装 · CodeWhale" : "Install · CodeWhale",
|
||||||
description: isZh
|
description: isZh
|
||||||
? "安装 CodeWhale 的 codewhale / codewhale-tui 二进制对。v0.8.56 推荐 Cargo、GitHub Releases、CNB、Homebrew、预编译二进制、Docker、国内镜像。"
|
? `安装 CodeWhale 的 codewhale / codewhale-tui 二进制对。v${version} 支持 npm、Cargo、GitHub Releases、CNB、Homebrew、预编译二进制、Docker、国内镜像。`
|
||||||
: "Install the matched codewhale / codewhale-tui binary pair. For v0.8.56 use Cargo, GitHub Releases, CNB, Homebrew, prebuilt binary, Docker, or source.",
|
: `Install the matched codewhale / codewhale-tui binary pair. For v${version} use npm, Cargo, GitHub Releases, CNB, Homebrew, prebuilt binary, Docker, or source.`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,10 +28,6 @@ const UPDATE = `codewhale update`;
|
|||||||
const SET_KEY_BASH = `export DEEPSEEK_API_KEY=sk-...`;
|
const SET_KEY_BASH = `export DEEPSEEK_API_KEY=sk-...`;
|
||||||
const SET_KEY_AUTH = `codewhale auth set --provider deepseek --api-key sk-...`;
|
const SET_KEY_AUTH = `codewhale auth set --provider deepseek --api-key sk-...`;
|
||||||
|
|
||||||
const RELEASE_DOWNLOAD = `# Download your platform archive:
|
|
||||||
https://github.com/Hmbown/CodeWhale/releases/tag/v0.8.56`;
|
|
||||||
const CNB_INSTALL = `cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.56 codewhale-cli --locked --force
|
|
||||||
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.56 codewhale-tui --locked --force`;
|
|
||||||
const TUNA_CONFIG = `# ~/.cargo/config.toml
|
const TUNA_CONFIG = `# ~/.cargo/config.toml
|
||||||
[source.crates-io]
|
[source.crates-io]
|
||||||
replace-with = "tuna"
|
replace-with = "tuna"
|
||||||
@@ -79,9 +78,16 @@ const CONFIG_TREE_ZH = `~/.codewhale/
|
|||||||
export default async function InstallPage({ params }: { params: Promise<{ locale: string }> }) {
|
export default async function InstallPage({ params }: { params: Promise<{ locale: string }> }) {
|
||||||
const { locale } = await params;
|
const { locale } = await params;
|
||||||
const isZh = locale === "zh";
|
const isZh = locale === "zh";
|
||||||
|
const facts = await getFacts();
|
||||||
|
const version = facts.version ?? "0.8.60";
|
||||||
|
const releaseTag = `v${version}`;
|
||||||
|
|
||||||
const copyLabel = isZh ? "复制" : "Copy";
|
const copyLabel = isZh ? "复制" : "Copy";
|
||||||
const copiedLabel = isZh ? "已复制 ✓" : "Copied ✓";
|
const copiedLabel = isZh ? "已复制 ✓" : "Copied ✓";
|
||||||
|
const releaseDownload = `# Download your platform archive:
|
||||||
|
https://github.com/Hmbown/CodeWhale/releases/tag/${releaseTag}`;
|
||||||
|
const cnbInstall = `cargo install --git https://cnb.cool/codewhale.net/codewhale --tag ${releaseTag} codewhale-cli --locked --force
|
||||||
|
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag ${releaseTag} codewhale-tui --locked --force`;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -107,15 +113,15 @@ export default async function InstallPage({ params }: { params: Promise<{ locale
|
|||||||
<p className="mt-4 text-sm text-ink-soft leading-relaxed max-w-2xl">
|
<p className="mt-4 text-sm text-ink-soft leading-relaxed max-w-2xl">
|
||||||
{isZh ? (
|
{isZh ? (
|
||||||
<>
|
<>
|
||||||
v0.8.56 推荐通过 Cargo 安装已发布的 crates。npm wrapper 暂缓发布,直到 release asset 发布路径加固完成。
|
v{version} 支持 Cargo、npm、GitHub Releases、CNB、国内镜像、Homebrew、预编译二进制等安装路径。
|
||||||
下方「其他安装方式」列出 GitHub Releases、CNB、国内镜像、Homebrew、预编译二进制等替代选项。
|
如果某个包管理器落后于 release assets,请临时使用 GitHub Releases 或 Cargo。
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
For v0.8.56, install the published Cargo crates. The npm wrapper is deferred
|
For v{version}, use Cargo, npm, GitHub Releases, CNB, Homebrew, prebuilt binaries,
|
||||||
while the release asset publication path is hardened. See{" "}
|
or mainland China mirrors. If one package manager lags the release assets, use{" "}
|
||||||
<a href="#other-ways" className="body-link">Other ways to install</a> below for
|
<a href="#other-ways" className="body-link">Other ways to install</a> below while
|
||||||
GitHub Releases, CNB, Homebrew, prebuilt binaries, or mainland China mirrors.
|
the mirror catches up.
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
@@ -290,13 +296,13 @@ export default async function InstallPage({ params }: { params: Promise<{ locale
|
|||||||
{/* GitHub Release */}
|
{/* GitHub Release */}
|
||||||
<div className="rounded-lg border border-ink/12 bg-white/70 p-5">
|
<div className="rounded-lg border border-ink/12 bg-white/70 p-5">
|
||||||
<div className="font-display text-lg mb-3">{isZh ? "GitHub Releases" : "GitHub Releases"}</div>
|
<div className="font-display text-lg mb-3">{isZh ? "GitHub Releases" : "GitHub Releases"}</div>
|
||||||
<InstallCodeBlock cmd={RELEASE_DOWNLOAD} copyLabel={copyLabel} copiedLabel={copiedLabel} />
|
<InstallCodeBlock cmd={releaseDownload} copyLabel={copyLabel} copiedLabel={copiedLabel} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* CNB */}
|
{/* CNB */}
|
||||||
<div className="rounded-lg border border-ink/12 bg-white/70 p-5">
|
<div className="rounded-lg border border-ink/12 bg-white/70 p-5">
|
||||||
<div className="font-display text-lg mb-3">{isZh ? "CNB 镜像" : "CNB mirror"}</div>
|
<div className="font-display text-lg mb-3">{isZh ? "CNB 镜像" : "CNB mirror"}</div>
|
||||||
<InstallCodeBlock cmd={CNB_INSTALL} copyLabel={copyLabel} copiedLabel={copiedLabel} />
|
<InstallCodeBlock cmd={cnbInstall} copyLabel={copyLabel} copiedLabel={copiedLabel} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Mainland China network */}
|
{/* Mainland China network */}
|
||||||
@@ -324,13 +330,13 @@ export default async function InstallPage({ params }: { params: Promise<{ locale
|
|||||||
<p className="mt-4 text-sm text-ink-soft leading-relaxed max-w-2xl">
|
<p className="mt-4 text-sm text-ink-soft leading-relaxed max-w-2xl">
|
||||||
{isZh ? (
|
{isZh ? (
|
||||||
<>
|
<>
|
||||||
v0.8.56 的 npm wrapper 暂缓发布。Cargo + Tuna 或 CNB 路径可以绕开 GitHub 下载瓶颈。
|
v{version} 也可以通过 Cargo + Tuna 或 CNB 路径绕开 GitHub 下载瓶颈。
|
||||||
DeepSeek API(<code className="inline">api.deepseek.com</code>)在国内直连,无需代理。
|
DeepSeek API(<code className="inline">api.deepseek.com</code>)在国内直连,无需代理。
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
The npm wrapper is deferred for v0.8.56. Cargo + Tuna or the CNB path routes
|
For v{version}, Cargo + Tuna or the CNB path routes around GitHub download
|
||||||
around GitHub download bottlenecks. The DeepSeek API at{" "}
|
bottlenecks. The DeepSeek API at{" "}
|
||||||
<code className="inline">api.deepseek.com</code> is reachable from mainland China
|
<code className="inline">api.deepseek.com</code> is reachable from mainland China
|
||||||
without a proxy.
|
without a proxy.
|
||||||
</>
|
</>
|
||||||
|
|||||||
+160
-3
@@ -21,6 +21,7 @@ const FALLBACK_STATS: RepoStats = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const RELEASE_CONTRIBUTORS = [
|
const RELEASE_CONTRIBUTORS = [
|
||||||
|
"@1Git2Clone",
|
||||||
"@cy2311",
|
"@cy2311",
|
||||||
"@LING71671",
|
"@LING71671",
|
||||||
"@axobase001",
|
"@axobase001",
|
||||||
@@ -80,6 +81,92 @@ const RELEASE_HELPERS = [
|
|||||||
"@nbiish",
|
"@nbiish",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const RELEASE_FEATURES = [
|
||||||
|
{
|
||||||
|
area: "Fleet runs",
|
||||||
|
title: "Agent Fleet real-run cutover",
|
||||||
|
zhTitle: "Agent Fleet 真实执行切换",
|
||||||
|
tag: "#3154 / #3096",
|
||||||
|
blurb:
|
||||||
|
"fleet run now launches durable workers through the headless exec stream instead of the old local simulator, with lease-freeing events so queued work can keep moving.",
|
||||||
|
zhBlurb:
|
||||||
|
"fleet run 现在通过 headless exec 流启动持久 worker,不再走本地模拟器;终端 worker 事件会释放租约,让排队任务继续推进。",
|
||||||
|
prompt:
|
||||||
|
"Tell us whether the fleet task started, which worker/lease state looked wrong, and paste the fleet run output or event stream if you can.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
area: "Read-only shell parallelism",
|
||||||
|
title: "Read-only shell parallelism",
|
||||||
|
zhTitle: "只读 Shell 并行执行",
|
||||||
|
tag: "#2983",
|
||||||
|
blurb:
|
||||||
|
"conservative read-only shell calls can run in parallel, while writes, stdin, pipes, redirects, command substitution, TTY work, and follow-mode tails stay serial.",
|
||||||
|
zhBlurb:
|
||||||
|
"保守的只读 shell 调用可以并行执行;写入、stdin、管道、重定向、命令替换、TTY 和 follow-mode tail 仍保持串行。",
|
||||||
|
prompt:
|
||||||
|
"Tell us the exact command, whether it should have been parallel or serial, and whether CodeWhale asked for approval at the right time.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
area: "WhaleFlow JS/TS authoring",
|
||||||
|
title: "Declarative JS/TS WhaleFlow authoring",
|
||||||
|
zhTitle: "声明式 JS/TS WhaleFlow 编写",
|
||||||
|
tag: "#3097",
|
||||||
|
blurb:
|
||||||
|
"workflow({...}) authoring now compiles JavaScript or TypeScript into the existing WorkflowSpec validator without executing user JavaScript.",
|
||||||
|
zhBlurb:
|
||||||
|
"workflow({...}) 写法现在可以把 JavaScript 或 TypeScript 编译到现有 WorkflowSpec 校验器,不执行用户 JavaScript。",
|
||||||
|
prompt:
|
||||||
|
"Paste the workflow({...}) snippet, the validation error, and what you expected the compiled WorkflowSpec to contain.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
area: "Terminal interaction polish",
|
||||||
|
title: "TUI/provider polish",
|
||||||
|
zhTitle: "TUI 与 provider 细节修复",
|
||||||
|
tag: "#3196 / #2743",
|
||||||
|
blurb:
|
||||||
|
"slash-menu Ctrl+P/Ctrl+N navigation, nonblocking sub-agent eval, Z.ai GLM thinking traces, and Claude-style skill archive handling are smoother.",
|
||||||
|
zhBlurb:
|
||||||
|
"slash 菜单 Ctrl+P/Ctrl+N、非阻塞 sub-agent eval、Z.ai GLM thinking trace,以及 Claude 风格 skill 压缩包处理都更顺。",
|
||||||
|
prompt:
|
||||||
|
"Tell us which interaction failed, your terminal/provider/model, and the shortest reproduction you have.",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const LATEST_RELEASE_CREDITS = [
|
||||||
|
{
|
||||||
|
handle: "@1Git2Clone",
|
||||||
|
note: "slash-menu Ctrl+P/Ctrl+N navigation",
|
||||||
|
zhNote: "slash 菜单 Ctrl+P/Ctrl+N 导航",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
handle: "@AiurArtanis",
|
||||||
|
note: "Claude-style skill archive compatibility request",
|
||||||
|
zhNote: "Claude 风格 skill 压缩包兼容性请求",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
function releaseIssueHref(area: string, prompt: string): string {
|
||||||
|
const body = [
|
||||||
|
`## Area`,
|
||||||
|
area,
|
||||||
|
``,
|
||||||
|
`## What happened?`,
|
||||||
|
``,
|
||||||
|
`## What did you expect?`,
|
||||||
|
``,
|
||||||
|
`## Useful detail`,
|
||||||
|
prompt,
|
||||||
|
``,
|
||||||
|
`## Version`,
|
||||||
|
`0.8.60`,
|
||||||
|
].join("\n");
|
||||||
|
const params = new URLSearchParams({
|
||||||
|
title: `[0.8.60] ${area}: `,
|
||||||
|
body,
|
||||||
|
});
|
||||||
|
return `https://github.com/Hmbown/CodeWhale/issues/new?${params.toString()}`;
|
||||||
|
}
|
||||||
|
|
||||||
const FALLBACK_DISPATCH_EN: CuratedDispatch = {
|
const FALLBACK_DISPATCH_EN: CuratedDispatch = {
|
||||||
generatedAt: new Date().toISOString(),
|
generatedAt: new Date().toISOString(),
|
||||||
headline: "Quiet release week — install paths and contributor guides up to date.",
|
headline: "Quiet release week — install paths and contributor guides up to date.",
|
||||||
@@ -133,6 +220,7 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
|
|||||||
}
|
}
|
||||||
|
|
||||||
const highlights = isZh && dispatch.highlightsZh ? dispatch.highlightsZh : dispatch.highlights;
|
const highlights = isZh && dispatch.highlightsZh ? dispatch.highlightsZh : dispatch.highlights;
|
||||||
|
const releaseVersion = facts.version ?? "0.8.60";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -240,6 +328,75 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<StatGrid stats={stats} />
|
<StatGrid stats={stats} />
|
||||||
|
|
||||||
|
{/* LATEST RELEASE */}
|
||||||
|
<section id="latest" className="mx-auto max-w-[1400px] px-6 py-14">
|
||||||
|
<div className="grid lg:grid-cols-12 gap-10 items-start">
|
||||||
|
<div className="lg:col-span-4">
|
||||||
|
<div className="flex items-baseline gap-4 mb-5">
|
||||||
|
<Seal char="新" />
|
||||||
|
<div className="eyebrow">
|
||||||
|
{isZh ? `最新版本 · v${releaseVersion}` : `New in v${releaseVersion}`}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2 className="font-display text-3xl leading-tight">
|
||||||
|
{isZh ? "更可靠的长任务执行,更清楚的反馈入口。" : "Durable long-running work, clearer feedback paths."}
|
||||||
|
</h2>
|
||||||
|
<p className={`mt-5 text-ink-soft ${isZh ? "leading-[1.9] tracking-wide" : "leading-relaxed"}`}>
|
||||||
|
{isZh
|
||||||
|
? "0.8.60 的主线是让 CodeWhale 更像一个可继承的维护者工具:fleet worker 真正运行,只读证据可以并行收集,workflow 可以用 JS/TS 声明式编写,终端交互和 provider trace 更稳定。"
|
||||||
|
: "0.8.60 is about making CodeWhale easier to hand off and verify: fleet workers actually run, read-only evidence can be gathered in parallel, workflows can be authored in JS/TS, and terminal/provider edges are less sticky."}
|
||||||
|
</p>
|
||||||
|
<div className="mt-6 flex flex-wrap gap-3">
|
||||||
|
<Link href="https://github.com/Hmbown/CodeWhale/blob/main/CHANGELOG.md#0860---2026-06-13" className="px-4 py-2 bg-ink text-paper font-mono text-sm uppercase tracking-wider hover:bg-indigo transition-colors">
|
||||||
|
{isZh ? "完整 changelog →" : "Full changelog →"}
|
||||||
|
</Link>
|
||||||
|
<Link href="#release-credits" className="px-4 py-2 font-mono text-sm uppercase tracking-wider text-ink-mute hover:text-indigo transition-colors">
|
||||||
|
{isZh ? "贡献者 →" : "Credits →"}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
<div className="mt-6 hairline-t pt-4">
|
||||||
|
<div className="eyebrow mb-3">{isZh ? "0.8.60 直接致谢" : "Direct 0.8.60 credits"}</div>
|
||||||
|
<div className="space-y-2">
|
||||||
|
{LATEST_RELEASE_CREDITS.map((credit) => (
|
||||||
|
<Link
|
||||||
|
key={credit.handle}
|
||||||
|
href={`https://github.com/${credit.handle.slice(1)}`}
|
||||||
|
className="block text-sm text-ink-soft hover:text-indigo"
|
||||||
|
>
|
||||||
|
<span className="font-mono text-xs text-indigo">{credit.handle}</span>
|
||||||
|
<span className={isZh ? "ml-2 leading-[1.8]" : "ml-2"}>{isZh ? credit.zhNote : credit.note}</span>
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="lg:col-span-8 hairline-t hairline-b hairline-l hairline-r bg-paper">
|
||||||
|
<div className="grid md:grid-cols-2 gap-0 col-rule">
|
||||||
|
{RELEASE_FEATURES.map((feature) => (
|
||||||
|
<div key={feature.area} className="p-5">
|
||||||
|
<div className="flex items-baseline justify-between gap-4 mb-3">
|
||||||
|
<div className="eyebrow text-indigo">{feature.tag}</div>
|
||||||
|
<Link
|
||||||
|
href={releaseIssueHref(feature.area, feature.prompt)}
|
||||||
|
className="font-mono text-[0.68rem] uppercase tracking-widest text-ink-mute hover:text-indigo"
|
||||||
|
>
|
||||||
|
{isZh ? "报告问题 →" : "Report →"}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
<h3 className="font-display text-xl mb-2">
|
||||||
|
{isZh ? feature.zhTitle : feature.title}
|
||||||
|
</h3>
|
||||||
|
<p className={`text-sm text-ink-soft ${isZh ? "leading-[1.9] tracking-wide" : "leading-relaxed"}`}>
|
||||||
|
{isZh ? feature.zhBlurb : feature.blurb}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
{/* SEE HOW IT DECIDES — real reasoning traces prove the constitution operates */}
|
{/* SEE HOW IT DECIDES — real reasoning traces prove the constitution operates */}
|
||||||
<section className="bg-paper-deep hairline-t hairline-b">
|
<section className="bg-paper-deep hairline-t hairline-b">
|
||||||
@@ -502,7 +659,7 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* RELEASE CREDITS */}
|
{/* RELEASE CREDITS */}
|
||||||
<section className="mx-auto max-w-[1400px] px-6 py-14">
|
<section id="release-credits" className="mx-auto max-w-[1400px] px-6 py-14">
|
||||||
<div className="flex items-baseline gap-4 mb-5 hairline-b pb-4">
|
<div className="flex items-baseline gap-4 mb-5 hairline-b pb-4">
|
||||||
<Seal char="谢" />
|
<Seal char="谢" />
|
||||||
<div>
|
<div>
|
||||||
@@ -519,7 +676,7 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
|
|||||||
? "这一版合并和吸收了来自社区的大量工作。完整条目在 CHANGELOG 中;这里保留最新发布的公开致谢入口。"
|
? "这一版合并和吸收了来自社区的大量工作。完整条目在 CHANGELOG 中;这里保留最新发布的公开致谢入口。"
|
||||||
: "This release merged and harvested a large community tranche. The full notes live in the changelog; this keeps the latest public credit surface easy to find."}
|
: "This release merged and harvested a large community tranche. The full notes live in the changelog; this keeps the latest public credit surface easy to find."}
|
||||||
</p>
|
</p>
|
||||||
<Link href="https://github.com/Hmbown/CodeWhale/blob/main/CHANGELOG.md#0856---2026-06-09" className="inline-block mt-4 font-mono text-xs uppercase tracking-wider text-indigo hover:underline">
|
<Link href="https://github.com/Hmbown/CodeWhale/blob/main/CHANGELOG.md#0860---2026-06-13" className="inline-block mt-4 font-mono text-xs uppercase tracking-wider text-indigo hover:underline">
|
||||||
{isZh ? "查看完整 changelog →" : "Full changelog →"}
|
{isZh ? "查看完整 changelog →" : "Full changelog →"}
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@@ -603,4 +760,4 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
|
|||||||
</section>
|
</section>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+107
-1085
File diff suppressed because it is too large
Load Diff
@@ -36,6 +36,7 @@
|
|||||||
"wrangler": "^4.86.0"
|
"wrangler": "^4.86.0"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
"esbuild": "0.28.1",
|
||||||
"postcss": "^8.5.14"
|
"postcss": "^8.5.14"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user