Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
226 commits
Select commit Hold shift + click to select a range
8d44699
Refactor/xinshi/oss env for harbor (#715)
BCeZn Mar 31, 2026
df10981
feat(sdk): Job OSS artifact mirror (OssMirrorConfig) (#707) (#708)
xdlkc Mar 31, 2026
13531dc
feat: validate and sync experiment_id/namespace in JobConfig (#716) (…
dengwx2026 Mar 31, 2026
ddfcf4d
feat: rock agent support verifier native mode (#722)
sanfeng-lhh Apr 1, 2026
86bab48
kata runtime support dind (#731)
zhongwen666 Apr 1, 2026
87672b9
feat: 恢复CI请求触发工作流配置 (#728)
guoj14 Apr 2, 2026
695df30
feat: add oss_deps field to EnvironmentConfig (#734)
BCeZn Apr 2, 2026
f2a2499
fix: pin langgraph-prebuilt to 1.0.8 to fix CI error (#745)
zhangjaycee Apr 8, 2026
f5ab087
fix: pin docusaurus/theme-common version to fix npm build of docs (#747)
zhangjaycee Apr 8, 2026
312f52d
Support persist sandbox metadaba to database (#730)
zhangjaycee Apr 8, 2026
4dfddbf
feat: refactor k8s api client informer #712 (#744)
Generalwin Apr 8, 2026
b410613
fix sandbox info and redis info (#743)
Generalwin Apr 8, 2026
f1fb30a
feat: add skills for docs (#719)
kkkky123 Apr 9, 2026
41e9441
add v1.4.8 docs
Issac-Newton Apr 3, 2026
9e7e636
docs: rename add-doc-version skill to rock-docs (#752)
kkkky123 Apr 9, 2026
2476375
Feature/xinshi/container verify (#755)
BCeZn Apr 9, 2026
60aba54
feat: add labels support to JobConfig (#720) (#721)
xdlkc Apr 9, 2026
cb24ac7
feat: auto-generate job_name from dataset and task info (#757)
berstpander Apr 9, 2026
5218a7a
add auto_delete_seconds in SandboxConfig
Issac-Newton Mar 10, 2026
d1e90e4
add auto_delete_seconds in DockerDeployment
Issac-Newton Apr 9, 2026
c96c1b9
Release note v1.5.0 (#760)
zhangjaycee Apr 10, 2026
9dedee3
fix missing redis provider in k8s (#765)
Generalwin Apr 13, 2026
899a055
fix arun normal mode #767 (#768)
FangwenDave Apr 13, 2026
ffdee27
Feature/add bash example (#772)
StephenRi Apr 13, 2026
1df699f
Bump master version to 1.5.1 and update 1.5.1 release note (#774)
zhangjaycee Apr 13, 2026
58c5f76
[FEATURE] Refactor Job module: Job/Operator/Executor/Trial abstractio…
dengwx2026 Apr 14, 2026
ad64b28
fix: add SELECT 1 readiness check to pg_container fixture (#778)
zhangjaycee Apr 14, 2026
10f94fe
refactor(job): hoist on_sandbox_ready backfill to AbstractTrial (#788…
dengwx2026 Apr 14, 2026
5273656
feat: add TemplateConfig and template field to NativeConfig (#786)
sanfeng-lhh Apr 15, 2026
80efdd0
feat: truncate path segments in auto-generated job_name (#791)
berstpander Apr 15, 2026
8a5b095
fix: enlarge SandboxRecord.image to 512 and disable asyncpg statement…
zhangjaycee Apr 15, 2026
9bdbf65
Feature/xinshi/harbor jobs (#798)
BCeZn Apr 15, 2026
653b498
refactor(envhub): move JobEnvironmentConfig to envhub as EnvironmentC…
BCeZn Apr 15, 2026
cd58627
Refactor/envhub uploads (#802)
BCeZn Apr 15, 2026
58cc029
feature: add claw-eval bash job demo (#804)
BCeZn Apr 15, 2026
d2a3066
fix: increase default JobConfig timeout from 3600s to 7200s (#806)
BCeZn Apr 15, 2026
07896f9
fix(job): update timeout sentinel and tests after default increased t…
BCeZn Apr 15, 2026
c8a4efa
fix(job): BashTrial.collect should populate raw_output and exit_code …
BCeZn Apr 15, 2026
2b0e3f7
chore: apply ruff format and translate Chinese comments to English (#…
BCeZn Apr 15, 2026
f906be0
feat(job): auto-detect job type from YAML via strict model validation…
BCeZn Apr 15, 2026
82535e8
refactor(cli): rework `rock job run` for dual-mode input with strict …
dengwx2026 Apr 15, 2026
618a7fb
refactor: remove auto_stop parameter from EnvironmentConfig (#820)
BCeZn Apr 16, 2026
8c6efe2
fix(job): JobConfig.experiment_id takes priority over environment.exp…
dengwx2026 Apr 16, 2026
f88560f
chore: bump version to 1.6.0 (#827)
dengwx2026 Apr 16, 2026
3a51628
docs: update README latest updates table for v1.5.1 and v1.4.7 (#829)
dengwx2026 Apr 16, 2026
21a4f9e
feat(job): BashJob OSS Mirror — artifact upload after job completion …
BCeZn Apr 16, 2026
949ed7e
fix(job): remove redundant shebang and set -e from BashTrial.build() …
BCeZn Apr 16, 2026
c913f2b
fix(cli): lazy import psutil in admin stop command (#831)
dengwx2026 Apr 16, 2026
ff976a5
feat(ci): add unit test workflow for TS SDK (#796)
guoj14 Apr 17, 2026
1de5365
fix(job): sync experiment_id to environment when environment.experime…
dengwx2026 Apr 17, 2026
84fde4c
docs: add v1.6.0 release notes and register 1.6.x docs version
Issac-Newton Apr 17, 2026
3b0b331
fix iflow agent version
Issac-Newton Apr 20, 2026
944ed89
fix(docker-auth): reconstruct temporary directory authorization sche…
jinbai340997 Apr 20, 2026
41bd51f
docs: replace News with Updates section, trim to 5 latest versions (#…
dengwx2026 Apr 20, 2026
15a1799
[Chore] database connection unittest and parameter optimizations (#852)
zhangjaycee Apr 21, 2026
a375d7f
feat(datasets): add datasets SDK and CLI commands for OSS registry (#…
dengwx2026 Apr 21, 2026
3e2273f
fix(test): clean up leaked timers in model client tests (#839)
guoj14 Apr 21, 2026
936d3d6
feat(sandbox): enforce container rootfs disk limit via Docker storage…
zhangjaycee Apr 21, 2026
07fdd53
fix(uv-env): copy project to writable dir before install in container…
jinbai340997 Apr 22, 2026
41a296e
fix(proxy): forward whitelisted headers in WebSocket proxy upstream h…
Issac-Newton Apr 21, 2026
e7cf458
refactor: move FORWARDED_WS_HEADER_NAMES and build_upstream_ws_header…
Issac-Newton Apr 21, 2026
e5301c5
refactor(proxy): switch WebSocket header forwarding from whitelist to…
Issac-Newton Apr 22, 2026
3b55efe
feat(datasets): add tasks subcommand with file task support and impro…
berstpander Apr 22, 2026
2482aff
feat(docker): mount host zoneinfo to /etc/localtime for correct conta…
Issac-Newton Apr 22, 2026
269f837
docs: update implementation spec to match actual test approach
Issac-Newton Apr 22, 2026
6e87d21
feat(env): let ROCK_TIME_ZONE fall back to host TZ env var
Issac-Newton Apr 22, 2026
591f9d4
docs: clarify why ROCK_TIME_ZONE is used instead of TZ for zoneinfo l…
Issac-Newton Apr 22, 2026
2ac1714
fix auto_clear_time (#883)
zhongwen666 Apr 22, 2026
f47fa45
fix: preserve non-JSON request body in http_proxy endpoint
Dengsheng-wzh Apr 22, 2026
68801c5
use raw body in vnc_http_proxy
Dengsheng-wzh Apr 23, 2026
5ab42f8
Support meta store and database operation metrics (#887)
zhangjaycee Apr 24, 2026
de07eed
fix(proxy): expand WebSocket header blacklist and add VNC forwarding …
Issac-Newton Apr 24, 2026
a57af7c
update version
Dengsheng-wzh Apr 23, 2026
c8d78bd
add 1.7.0 release notes
Issac-Newton Apr 24, 2026
4bb2d1e
docs: update README with v1.7.0 release entry
Issac-Newton Apr 24, 2026
b5997f3
bump version to 1.7.0
Issac-Newton Apr 24, 2026
a6e8e7f
fix(bash-trial): BashJob OSS 上传改为脚本注入,修复 submit-only 丢传和 env 凭证不生效 (#…
BCeZn Apr 27, 2026
fa34a23
chore: remove the need_database marker (#901)
zhangjaycee Apr 28, 2026
39c970f
Fix sandbox _get_user_info metrics (#911)
zhangjaycee May 7, 2026
8fd7f66
fix(metrics): read sandbox image from meta_store instead of in-memory…
zhangjaycee May 7, 2026
537ba67
fix(sdk): add runtime config type validation in PythonRuntimeEnv (#652)
KunWuLuan May 8, 2026
1ffa28d
feat(scheduler): add dynamic config reloading via Nacos #888 (#889)
zhongwen666 May 9, 2026
a4d45a3
docs(1.7.x): clarify install-agent vs Job, reorganize examples/ (#926)
BCeZn May 11, 2026
85b4fa0
feat(cli): add -v verbosity control and unify log level management
berstpander Apr 28, 2026
8985b95
feat: add startup timing instrumentation for sandbox launch stages (#…
jake11-oho May 13, 2026
33ebb0e
fix(rocklet): mount loop disk to docker data-root instead of hardcode…
jake11-oho May 13, 2026
a72f7d1
feat(model-service): proxy supports stream + replay, byte passthrough…
BCeZn May 13, 2026
7eeefda
feat(rocklet): add Windows PowerShell support #921 (#922)
zhongwen666 May 13, 2026
cc95a8a
fix(rocklet): symlink mount into /bin for nix images with kata runtim…
jake11-oho May 14, 2026
e9a519a
feat(job): integrate in-sandbox model-service proxy for record/replay…
BCeZn May 14, 2026
55dbc21
fix(sdk): mkdir target parent dir before wget in OSS upload path (#940)
BCeZn May 14, 2026
bb8d0f9
fix(metrics): pass rock_config to SandboxTable/SandboxMetaStore so Me…
zhangjaycee May 9, 2026
3deda28
chore(metrics): remove the sandbox_id attr from metastore monitor att…
zhangjaycee May 13, 2026
9759849
metrics(monitor): scope meter to local MeterProvider
zhangjaycee May 14, 2026
3e3265a
feat(metrics): log OTLP export data_points count and duration
zhangjaycee May 13, 2026
e65b56a
feat(docker): cleanup XFS project quota on container stop (#941)
zhangjaycee May 15, 2026
d7421e2
fix: handle exception caused by ray.init during ray reconnecting back…
Dengsheng-wzh Apr 27, 2026
3b22e10
[REFACTOR] OSS 上传/下载从客户端 env vars 解耦;3 层配置解析机制 (#943) (#949)
BCeZn May 15, 2026
aae3e97
chore(sdk): make sandbox cluster default configurable via env var
Issac-Newton May 15, 2026
3537359
test(sdk): fix test_sandbox_cluster by moving it to its own class
Issac-Newton May 15, 2026
7c2118f
docs(scheduler): add scheduler user guide for v1.7.x #974 (#975)
zhongwen666 May 17, 2026
93ea330
feat(oss): unify dual-account STS via /get_token?account= and push tr…
jinbai340997 May 15, 2026
0ed625d
fix(sandbox): update test_sandbox_proxy after gen_oss_sts_token dual-…
jinbai340997 May 16, 2026
e0fd6f4
fix(api): wire /get_token_v2 to unified gen_oss_sts_token("primary")
jinbai340997 May 16, 2026
2e88d6f
refactor(api): remove redundant /get_token_v2 endpoint, unify on /get…
jinbai340997 May 16, 2026
3cad424
fix: conditionally create primary AcsClient only when credentials con…
jinbai340997 May 16, 2026
fcb3c0f
fix(rocklet): use cgroup metrics for container CPU instead of psutil …
jake11-oho May 18, 2026
c223c1c
feature(oss): add archive command builder + OSS config fields for san…
jinbai340997 May 16, 2026
1a320b5
fix: remove unused archive_ttl_days field from OssConfig
jinbai340997 May 16, 2026
4da53c2
fix oss archive command
jinbai340997 May 17, 2026
fedc655
include ArchivePrefix in /get_token response
jinbai340997 May 17, 2026
6d32eee
wrap archive_command in ArchiveCommand class
jinbai340997 May 18, 2026
3e409f5
use triple-quoted multiline bash for build_command
jinbai340997 May 18, 2026
bdbacdf
extract SandboxLogConfig and SandboxFileTransferConfig from OssConfig
jinbai340997 May 18, 2026
b0b2b2d
set _rock_config in test_sandbox_proxy fixture for SandboxLogConfig a…
jinbai340997 May 18, 2026
4c1d44f
remove ArchivePrefix from /get_token (wrong domain layering)
jinbai340997 May 18, 2026
a0bb5a9
feature(scheduler): add RayLogCleanupTask and disable worker-to-drive…
jinbai340997 May 16, 2026
0ef3d98
use triple-quoted multiline bash for ray_log_cleanup command
jinbai340997 May 18, 2026
60c3e10
feat(sandbox): add CPU overcommit with grayscale rollout, lifecycle s…
zhongwen666 May 18, 2026
a1797a5
feat(sandbox): support include_all_states parameter in get_status API…
zhangjaycee May 18, 2026
30287d4
feat(k8s): GPU support with Jinja2 templates and extensible accelerat…
zhongwen666 May 19, 2026
cc3a0f5
feature(scheduler): add BuildCacheCleanupTask for uv/pip cache pruning
jinbai340997 May 16, 2026
1e64ecb
use triple-quoted multiline bash for build_cache snippets
jinbai340997 May 18, 2026
949eb5a
fix(docker): remove dead remove_images branch + add cls to remove_image
jinbai340997 May 19, 2026
9611bef
feature(scheduler): merge dangling/BuildKit prune into ImageCleanupTask
jinbai340997 May 19, 2026
faa5fec
docs: add v1.8.0 release version (CN + EN)
jinbai340997 May 21, 2026
8e2b9b5
fix(sdk): drop wget -c so OSS upload overwrites existing target_path
jinbai340997 May 21, 2026
cb67e79
docs(v1.8.0): remove internal dingtalk links from release note
jinbai340997 May 22, 2026
238ae1c
feat(k8s): Support disk quota limits for K8s operator sandbox (#994)
Generalwin May 22, 2026
f8b456d
fix(admin): retry SandboxTable ops once on stale connection after DB …
zhangjaycee May 22, 2026
745b100
deduplicate region scheduler.tasks via base config inheritance
jinbai340997 May 22, 2026
127d18e
refactor(sandbox): introduce SandboxStateMachine for lifecycle manage…
zhangjaycee May 26, 2026
94bcc1a
fix(rocklet): add per-disk usage monitoring for rootfs, log, and kat……
jake11-oho May 26, 2026
cefdaa6
feat(datasets): make 'rock datasets list' fast on cross-region OSS (#…
xdlkc May 27, 2026
bc2c653
fix(sandbox): preserve stop reason in stop() lost in #988 FSM refacto…
zhangjaycee May 27, 2026
dca3cfe
refactor(deployments): split `docker run` into `docker create` + `doc…
zhangjaycee May 27, 2026
98c4a91
fix(rocklet): use cgroup metrics for container memory instead of psut…
jake11-oho May 27, 2026
dd5b6e4
docs(v1.8.x): add sandbox concurrent-creation benchmark report & sche…
zhongwen666 May 27, 2026
cc1854f
chore(ci): run admin+network tests only on push, skip on PRs (#1040)
BCeZn May 28, 2026
cbbfd0b
add tracking config into job config
FangwenDave Apr 23, 2026
5f92314
update docs
FangwenDave Apr 23, 2026
ec17769
add test cases
FangwenDave Apr 23, 2026
a24430d
add api_key
FangwenDave Apr 23, 2026
7a69d17
add tracking to harbor environment config
FangwenDave Apr 24, 2026
908f20d
feat(deployments): share docker rootfs XFS prjid with sandbox log dir…
zhangjaycee May 28, 2026
10285c3
refactor(meta-store): add Redis-merge semantics to archive and filter…
zhangjaycee May 29, 2026
251f9ba
feature(sandbox): support sandbox restart (#1001)
zhangjaycee May 29, 2026
a4679de
Feat/sdk support gpu params (#1047)
zhongwen666 Jun 1, 2026
33b1734
fix(sandbox): always write stop_time on stop() even when start_time a…
jinbai340997 Jun 1, 2026
31839ee
feat(scheduler): clean session_latest/logs PID-aware + logs/old in ra…
jinbai340997 May 26, 2026
db75d6c
fix(scheduler): protect agent-* and other daemon files from PART 2a P…
jinbai340997 May 26, 2026
3c05f1d
feat(scheduler): clean runtime_env_setup-* in PART 2c (covers hex suf…
jinbai340997 May 28, 2026
011e9a2
feat(scheduler): add PART 2d rotated daemon log cleanup (raylet.N.out…
jinbai340997 Jun 1, 2026
60eb249
feature(cli): add 'rock storage get' to download archived sandbox log…
jinbai340997 May 28, 2026
e1d1101
docs(v1.8.0): wrap PR numbers in release notes with GitHub links (EN …
jinbai340997 May 28, 2026
d5f1ef7
fix(scheduler): split ImageCleanupTask prune (idempotent) from docuum…
jinbai340997 May 28, 2026
cf1ac33
feat(scheduler): db-driven SandboxLogArchiveTask, drop sentinel file …
jinbai340997 May 25, 2026
5bac213
fix(scheduler): dispatch SandboxLogArchiveTask DB calls to main loop …
jinbai340997 May 26, 2026
9f61360
fix(scheduler): cap cross-loop dispatch with 60s timeout (prevent han…
jinbai340997 May 26, 2026
67a7b3d
fix(scheduler): _discover_candidates use find -type d to skip daemon …
jinbai340997 May 28, 2026
115d75e
fix(sdk): sanitize generated Harbor job names (#1031)
xdlkc Jun 1, 2026
999f081
feat(admin): add parameter validation for API endpoints (#985)
jake11-oho Jun 2, 2026
6bedee6
refactor(sandbox): make start() delegate to start_async() to fix miss…
zhangjaycee Jun 2, 2026
7eecce9
perf(scheduler): switch FileCleanupTask to find -delete and add minim…
jinbai340997 May 16, 2026
300ae25
refactor(scheduler): rename _DANGEROUS_PATHS to _PATH_BLACKLIST for c…
jinbai340997 May 28, 2026
3576823
fix: replace os.path ops with string checks for cross-platform CI
jinbai340997 May 28, 2026
09c1a14
fix(test): add os.makedirs/chmod mocks to disk_limit test so _try_set…
jinbai340997 Jun 1, 2026
a78e512
fix(test): restore docker disk-limit tests to master, drop stale log-…
jinbai340997 Jun 2, 2026
8ade404
docs: refresh README Updates with v1.4.0 – v1.8.0 minor-release lineup
jinbai340997 May 27, 2026
fe10f95
fix: correct release notes links in README to version-specific pages
jinbai340997 Jun 3, 2026
f4618cd
feat(admin): ops-jobs API with DB-persisted state, multi-pod safe (#1…
jinbai340997 Jun 3, 2026
a5e1a9b
fix(rocklet): set success=true and file_name in UploadResponse after …
jinbai340997 Jun 3, 2026
215b118
feat(sandbox): add /delete endpoint + cascade STOPPED → DELETED for -…
zhangjaycee Jun 3, 2026
c129313
fix(sandbox): handle actor not found in RayOperator.get_status() (#1062)
zhangjaycee Jun 4, 2026
7291a09
fix(rocklet): pass sandbox_id in body to /execute and /read_file (#10…
jake11-oho Jun 4, 2026
c622091
fix(sandbox): handle K8s CRD not found in K8sOperator.get_status() (#…
zhangjaycee Jun 5, 2026
f422035
docs: add rock sdk mcp migration design
Timandes Jun 5, 2026
9f7fcee
test(sdk): add mcp rock runtime tests
Timandes Jun 5, 2026
2952710
feat(sdk): add mcp rock runtime
Timandes Jun 5, 2026
54e12fe
test(sdk): add mcpenv tests
Timandes Jun 5, 2026
d199ef9
feat(sdk): add mcpenv
Timandes Jun 5, 2026
caf31d9
feat(sdk): add mcp optional dependency
Timandes Jun 5, 2026
485dcbd
docs(sdk): add mcp sdk reference
Timandes Jun 5, 2026
cca9869
test(sdk): add mcp rock integration tests
Timandes Jun 5, 2026
acea5fe
style(sdk): format mcp sdk files
Timandes Jun 5, 2026
58428e7
fix(sdk): configure scaffoldhub mcp source
Timandes Jun 6, 2026
bdeb928
chore: bump version to 1.9.0.dev1
Timandes Jun 6, 2026
f59119a
chore(sdk): upgrade scaffoldhub mcp extra
Timandes Jun 9, 2026
8426af1
chore: bump version
Timandes Jun 12, 2026
5318f40
chore: bump mcp release versions
Timandes Jun 12, 2026
861a97e
docs(mcp): design auth lease release
Timandes Jun 15, 2026
f4650b7
test(mcp): cover auth provider ownership
Timandes Jun 15, 2026
1538965
feat(mcp): own scaffoldhub auth provider
Timandes Jun 15, 2026
4e3098b
test(mcp): cover auth lease release
Timandes Jun 15, 2026
46b5b32
feat(mcp): release scaffoldhub auth leases
Timandes Jun 15, 2026
0fee8d1
build(mcp): upgrade scaffoldhub dependency
Timandes Jun 15, 2026
9e49cd5
docs(mcp): describe auth lease release
Timandes Jun 15, 2026
ed363d5
docs(mcp): clarify release retry guidance
Timandes Jun 15, 2026
c71a813
chore: bump version to 1.10.0.dev3
Timandes Jun 15, 2026
feec0a8
chore: bump mcp dev versions
Timandes Jun 16, 2026
6eb70f2
chore: bump mcp package versions
Timandes Jun 17, 2026
d946c44
fix: update MCP runtime defaults
Timandes Jun 18, 2026
27d80dc
chore: bump mcp dev package versions
Timandes Jul 2, 2026
05dcf08
chore: bump mcp base image version
Timandes Jul 2, 2026
ad77326
chore: bump mcp base image to v0.13.0
Timandes Jul 3, 2026
0badc7b
docs: add McpEnv SandboxAware design
Timandes Jul 3, 2026
7b67c2a
docs: translate McpEnv SandboxAware design
Timandes Jul 3, 2026
2a91ab8
fix: update mcp proxy sse urls
Timandes Jul 3, 2026
215e203
test: add McpEnv SandboxAware fakes
Timandes Jul 3, 2026
15beb12
test: cover McpEnv SandboxAware injection
Timandes Jul 3, 2026
bcf3b73
feat: inject sandbox into SandboxAware lifecycles
Timandes Jul 3, 2026
1183f2d
docs: document McpEnv SandboxAware injection
Timandes Jul 3, 2026
4ce8cc2
chore: update MCP dependency lockfile
Timandes Jul 3, 2026
5d9535a
chore: bump package version to 1.10.0.dev12
Timandes Jul 3, 2026
0785748
docs: design McpEnv servers validation
Timandes Jul 3, 2026
7ac02c2
fix: require McpEnv servers config
Timandes Jul 3, 2026
2d79d4b
docs: add McpEnv runtime options design
Timandes Jul 3, 2026
154a5bf
docs: translate McpEnv runtime options design
Timandes Jul 3, 2026
1bfeb57
feat: add MCP runtime options
Timandes Jul 3, 2026
f9511ad
feat: expose MCP runtime options
Timandes Jul 3, 2026
156fa52
docs: document MCP runtime options
Timandes Jul 3, 2026
bc6f472
style: format MCP runtime options
Timandes Jul 3, 2026
6993548
fix: reject invalid MCP runtime option values
Timandes Jul 3, 2026
c266e32
chore: bump package version to 1.10.0.dev13
Timandes Jul 3, 2026
450c568
chore: bump scaffoldhub to 0.1.2
Timandes Jul 6, 2026
eb65220
refactor(mcp_env): 改进 before_launch 钩子处理逻辑
Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
237 changes: 237 additions & 0 deletions .claude/skills/rock-docs/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
---
name: rock-docs
description: 为 ROCK 项目管理 Docusaurus 文档版本。支持添加新版本文档、添加 Release Note、管理中英文 i18n 文档。当用户说"添加文档版本"、"发布新版本文档"、"添加 release note"、"rock-docs"或需要操作 docs/ 目录下的版本化文档时使用。
---

# ROCK Docs

管理 ROCK 项目的 Docusaurus 版本化文档。

## 项目背景

- Docusaurus 3.9.x,部署于 `https://alibaba.github.io/ROCK/`
- 语言:英文(默认)+ 中文(zh-Hans)
- `includeCurrentVersion: false`,所有发布内容来自 `versioned_docs/`
- `versions.json` 驱动版本注册,`convertVersionsArrayToObject()` 自动生成配置
- 侧边栏:顶层手动 + 内层 `autogenerated`
- Release Notes 通过 `reverseReleaseNoteSidebars()` 自动倒序排列

## 需要操作的 6 个位置

| # | 操作 | 路径 |
|---|------|------|
| 1 | 创建英文文档目录 | `docs/versioned_docs/version-{NEW}/` |
| 2 | 创建版本侧边栏 | `docs/versioned_sidebars/version-{NEW}-sidebars.json` |
| 3 | 更新版本列表 | `docs/versions.json` |
| 4 | 更新最新版本指向 | `docs/docusaurus.config.js` 中的 `lastVersion` |
| 5 | 创建中文文档目录 | `docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}/` |
| 6 | 创建中文侧边栏翻译 | `docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}.json` |

## 标准目录结构

```
version-X.Y.x/
├── Getting Started/
├── User Guides/
├── References/
│ ├── api.md
│ └── Python SDK References/
├── Release Notes/
│ ├── index.md
│ └── vX.Y.Z.md
└── overview.md
```

## 执行流程

### Phase 0:版本冲突检测

1. 读取 `docs/versions.json` 获取已有版本列表
2. 从用户输入的版本号推断文档版本号(如 `1.4.5` → `1.4.x`)
3. 如果文档版本已存在,**跳转至「仅添加 Release Note」流程**

#### 仅添加 Release Note 流程

**Step A**:创建英文 Release Note
- 路径:`docs/versioned_docs/version-{EXISTING}/Release Notes/v{VERSION}.md`
- 使用下方英文模板

**Step B**:创建中文 Release Note
- 路径:`docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{EXISTING}/Release Notes/v{VERSION}.md`
- 使用下方中文模板

**Step C**:更新 Release Notes 索引

在英文和中文 `Release Notes/index.md` 的标题行下方第一行插入:
```markdown
* [release v{VERSION}](v{VERSION}.md)
```

完成后跳转至 Phase 5 验证。

---

如果文档版本不存在,继续执行完整流程。

### Phase 1:收集信息

1. **新版本号**:如 `1.4.x`
2. **基础版本**:从哪个版本复制?默认取 `versions.json` 第一项
3. **Release Note**:是否创建?版本号是什么?
4. **是否修改 `lastVersion`**:必须明确告知用户影响后再确认:

> ⚠️ 修改 `lastVersion` 会改变文档站点默认展示版本。当前为 `{当前 lastVersion}`,修改后为 `{NEW}`。是否确认?

**不要默认选「是」,等用户明确确认。**

具体版本号(如 `1.4.0`)自动推断为文档版本号(`1.4.x`)。

### Phase 2:创建英文文档

#### Step 1:复制英文文档目录

```bash
cp -r docs/versioned_docs/version-{BASE}/ docs/versioned_docs/version-{NEW}/
```

#### Step 1.5:清理旧版本 Release Notes(仅主版本号变更时)

当主版本号(major.minor)不同时(如 `1.4.x` → `1.5.x`):

1. 删除 `docs/versioned_docs/version-{NEW}/Release Notes/` 下除 `index.md` 外的所有 `v*.md`
2. 重写 `index.md`:

```markdown
---
sidebar_position: 1
---
# Release Notes
```

#### Step 2:复制版本侧边栏

```bash
cp docs/versioned_sidebars/version-{BASE}-sidebars.json docs/versioned_sidebars/version-{NEW}-sidebars.json
```

#### Step 3:创建 Release Note(如果需要)

**英文模板** `docs/versioned_docs/version-{NEW}/Release Notes/v{VERSION}.md`:
```markdown
# v{VERSION}

## Release Date
{Mon DD, YYYY}

---

TODO
```

**中文模板** `docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}/Release Notes/v{VERSION}.md`:
```markdown
# v{VERSION}

## 发布日期
{YYYY} 年 {M} 月 {D} 日

---

TODO
```

#### Step 3.5:更新 Release Notes 索引

在英文 `docs/versioned_docs/version-{NEW}/Release Notes/index.md` 标题行下方第一行插入:
```markdown
* [release v{VERSION}](v{VERSION}.md)
```

### Phase 3:创建中文文档

#### Step 4:复制中文文档目录

```bash
cp -r docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{BASE}/ docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}/
```

#### Step 4.5:清理中文旧版本 Release Notes(仅主版本号变更时)

与 Step 1.5 同理:
1. 删除 `docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}/Release Notes/` 下除 `index.md` 外的所有 `v*.md`
2. 重写 `index.md`(中文版标题为 `# 版本说明`):

```markdown
---
sidebar_position: 1
---
# 版本说明
```

#### Step 5:创建中文侧边栏翻译 JSON

```bash
cp docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{BASE}.json docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}.json
```

修改新 JSON 文件中的 `version.label`:

```json
{
"version.label": {
"message": "{NEW}",
"description": "The label for version {NEW}"
}
}
```

### Phase 4:更新配置

#### Step 6:更新 versions.json

在 `docs/versions.json` 数组开头插入 `{NEW}`。

#### Step 7:更新 docusaurus.config.js(仅用户明确确认后)

修改 `docs/docusaurus.config.js` 中的 `lastVersion` 从 `{BASE}` 为 `{NEW}`。用户选择不修改则跳过。

### Phase 5:验证

**Step 8:构建验证**
```bash
cd docs && npm run build
```
构建成功后启动预览:
```bash
cd docs && npm run serve
```
> `npm run serve` 基于构建产物启动,支持中英文切换验证。`npm run start` 仅加载默认语言,无法验证中文。

**Step 9:手动检查清单**

```
✅ 文档验证清单:

英文版本检查:
□ 版本下拉菜单中是否显示新版本
□ 默认展示版本是否符合预期
□ 英文文档页面是否正常渲染
□ Release Notes 是否按版本号倒序排列
□ 侧边栏导航是否完整

中文版本检查(右上角语言切换):
□ 中文文档页面是否正常显示
□ 侧边栏分类名称是否正确翻译
□ Release Notes 内容是否与英文版本对应

后续工作:
□ 更新新版本英文文档中的具体内容
□ 更新中文文档翻译内容
□ 如有 Release Note,补充具体发布内容
```

## 注意事项

- `docs/rock/` 是未发布版本源码,`includeCurrentVersion: false` 不会发布
- `HiddenSidebars` 中的文件会从侧边栏隐藏,但仍可通过直接链接访问
- 详细 i18n 配置、侧边栏管理、翻译流程参见 [references/i18n-guide.md](references/i18n-guide.md)
70 changes: 70 additions & 0 deletions .claude/skills/rock-docs/references/i18n-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Docusaurus i18n 与侧边栏管理参考

## 扩展参考

- 官方 i18n 教程:https://docusaurus.io/docs/i18n/tutorial

## 侧边栏配置

本项目采用 **"顶层手动 + 内层自动"** 的混合模式:

- **顶层分类**(Getting Started、User Guides、References、Release Notes)在侧边栏配置中**手动定义**
- **内层文档**通过 `autogenerated` 从目录中**自动生成**,新文件放入对应目录即可自动出现在侧边栏

### 添加新的顶层侧边栏分类

需要手动修改以下文件:

1. **主侧边栏配置**:`docs/sidebars.js` — 添加新的顶层 category
2. **各版本侧边栏**:`docs/versioned_sidebars/version-{VERSION}-sidebars.json` — 添加对应的 category 配置
3. **中文翻译 JSON**:`docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{VERSION}.json` — 添加 `sidebar.tutorialSidebar.category.{CategoryName}` 条目

顶层分类配置格式示例(`version-1.4.x-sidebars.json`):

```json
{
"type": "category",
"label": "New Category",
"items": [
{
"type": "autogenerated",
"dirName": "New Category"
}
]
}
```

在 `versioned_docs/version-{VERSION}/` 和对应 i18n 目录下创建同名文件夹,内层文档会自动生成侧边栏条目。

**在已有分类下添加新文档**,无需修改侧边栏配置,直接将 md 文件放入对应目录即可。

## 翻译文件结构

翻译文件存储在 `docs/i18n/zh-Hans/` 目录下:

| 文件/目录 | 用途 |
|---------|------|
| `docusaurus-plugin-content-docs/version-{V}.json` | 侧边栏分类名称和版本标签翻译 |
| `docusaurus-plugin-content-docs/version-{V}/` | 各版本文档内容中文翻译 |
| `docusaurus-theme-classic/navbar.json` | 导航栏文本翻译 |
| `docusaurus-theme-classic/footer.json` | 页脚文本翻译 |
| `code.json` | React 代码中的文本标签翻译 |

### 提取翻译 key

```bash
cd docs && npm run write-translations -- --locale zh-Hans
```

该命令自动扫描项目代码和配置,生成需要翻译的 JSON 文件。生成后编辑对应 JSON 文件填入中文翻译。

## 翻译文档内容

文档内容翻译通过在 i18n 目录下创建对应的 markdown 文件实现。文件路径必须与英文原文完全对应:

```
英文原文:docs/versioned_docs/version-1.4.x/User Guides/example.md
中文翻译:docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-1.4.x/User Guides/example.md
```

如果中文目录下不存在对应文件,Docusaurus 会回退到英文原文展示。
4 changes: 3 additions & 1 deletion .github/scripts/get-CI-result.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ fi
COMMIT_ID=$1
SECURITY=$2
REPOSITORY=$3
PIPELINE_ID="42305"
PROJECT_ID="3567319"

# 设置最大等待时间
MAX_WAIT_TIME=7200
Expand All @@ -19,7 +21,7 @@ while true; do

response=$(curl -s -H "Content-Type: application/json" \
-H "Authorization: Basic ${SECURITY}" \
-d "{\"type\": \"RETRIEVE-TASK-STATUS\", \"repositoryUrl\": \"${REPOSITORY}\", \"commitId\": \"${COMMIT_ID}\"}" "http://get-tasend-back-twkvcdsbpj.cn-hangzhou.fcapp.run")
-d "{\"type\": \"RETRIEVE-TASK-STATUS\", \"aone\": { \"projectId\": \"${PROJECT_ID}\", \"pipelineId\": \"${PIPELINE_ID}\"}, \"repositoryUrl\": \"${REPOSITORY}\",\"commitId\": \"${COMMIT_ID}\"}" "http://get-tasend-back-twkvcdsbpj.cn-hangzhou.fcapp.run")
echo "Response: $response"

# 检查curl是否成功
Expand Down
51 changes: 51 additions & 0 deletions .github/workflows/CI-request-trigger.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# This is a basic workflow to help you get started with Actions

name: CI Request Trigger

# Controls when the workflow will run
on:
pull_request:
branches: [ "master" ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# work on CI script dir
defaults:
run:
working-directory: .github/scripts
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4

# Runs trigger CI
- name: Make the script files executable
run: chmod +x trigger-CI.sh get-CI-result.sh
- name: trigger a CI
run: |
echo "=== Task started at: $(date '+%Y-%m-%d %H:%M:%S') ==="
COMMIT_ID=$([ "${{ github.event_name }}" == "pull_request" ] && echo "${{ github.event.pull_request.head.sha }}" || echo "${{ github.sha }}")
echo "Using Commit ID: $COMMIT_ID"
echo "$GITHUB_REF"
PR_ID=$(echo "$GITHUB_REF" | sed 's@refs/pull/\([0-9]\+\)/.*@\1@')
echo "PR ID is $PR_ID"
./trigger-CI.sh "$COMMIT_ID" "${{ secrets.CI_SECRET }}" "${{ github.event.pull_request.head.repo.clone_url }}" "$PR_ID"

# Runs get CI result
- name: Get CI result
run: |
echo "=== Task started at: $(date '+%Y-%m-%d %H:%M:%S') ==="
COMMIT_ID=$([ "${{ github.event_name }}" == "pull_request" ] && echo "${{ github.event.pull_request.head.sha }}" || echo "${{ github.sha }}")
echo "Using Commit ID: $COMMIT_ID"
./get-CI-result.sh "$COMMIT_ID" "${{ secrets.CI_SECRET }}" "${{ github.repository }}"
1 change: 1 addition & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ jobs:
${{ runner.os }}-node-

- run: npm install
- run: npm install webpack@5.105.4 --no-save
- run: npm run build

- name: Deploy
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/python-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,9 @@ jobs:
echo "🔐 Running admin tests..."
uv run pytest -n auto -m "need_admin" --reruns 1

# Only run after merge into master / release/v1.0 (push event), not on PRs. See #1039
- name: Run tests need admin and network
if: success()
if: success() && github.event_name == 'push'
run: |
echo "🔐 Running admin and network tests..."
uv run pytest -n auto -m "need_admin_and_network" --reruns 1
Loading