From 085bdf9a80fedd206b4045690b90c0b85c443b35 Mon Sep 17 00:00:00 2001 From: linkong Date: Thu, 21 May 2026 01:46:43 +0800 Subject: [PATCH] release: bump version to 0.63.0 --- README.md | 3 ++ VERSION | 2 +- docs/CHANGELOG.md | 16 +++++++ docs/version-history.md | 3 +- frontend/package.json | 2 +- planet.sh | 101 +++++++++++++++++++++++++++++++++++++++- pyproject.toml | 2 +- uv.lock | 2 +- 8 files changed, 125 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 08e8f238..de98845a 100644 --- a/README.md +++ b/README.md @@ -189,6 +189,9 @@ # 查看服务状态 ./planet.sh health + +# 删除容器、卷、镜像和本地编译状态,执行前需要输入 Y 确认 +./planet.sh destroy ``` 前端命令约定: diff --git a/VERSION b/VERSION index 4d74f323..70cd2261 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.62.0 +0.63.0 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index a6648a45..f213b5b4 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -8,6 +8,22 @@ This project follows the repository versioning rule: - `improvement` -> `+0.0.1`(bugfix + 小功能混合) - `bugfix` -> `+0.0.1` +## [0.63.0] — 2026-05-21 + +Released: 2026-05-21 + +### Highlights +- 新增 `./planet.sh init` 首次初始化入口,将 uv/bun 依赖同步、env 模板补齐、数据库容器启动、建表 seed 和默认用户生成串成一条空项目引导路径。 +- 新增 `./planet.sh destroy` 破坏性重置入口,带 CLI 确认保护,可清理 Planet 容器、卷、镜像和本地编译/运行状态,同时保留源码与 `.env` 配置。 +- 改进 `planet.sh` 日志体验,只在带状态标签的输出行末尾追加时间戳,并让 `init` 在应用服务已运行时自动跳过重复初始化。 + +### Added / Fixed / Improved +- `init` 复用现有 Docker/依赖 helper,支持重复执行时不覆盖 env、不清空数据,并在完成后提示默认本地登录账号。 +- `destroy` 停止本地服务后清理 Docker compose 状态、项目镜像、数据卷、`.venv`、`node_modules`、前端构建产物和 Planet state/cache。 +- README 快速启动补充 `init` 和 `destroy` 命令说明,明确首次引导和重置路径。 + +--- + ## [0.62.0] — 2026-05-21 Released: 2026-05-21 diff --git a/docs/version-history.md b/docs/version-history.md index c6ea51a9..06843ee6 100644 --- a/docs/version-history.md +++ b/docs/version-history.md @@ -16,12 +16,13 @@ ## Current Version - `main` 当前主线历史推导到:`0.16.5` -- `dev` 当前开发分支历史推导到:`0.62.0` +- `dev` 当前开发分支历史推导到:`0.63.0` ## Timeline | Version | Type | Branch | Commit | Summary | | --- | --- | --- | --- | --- | +| `0.63.0` | feature | `dev` | `pending` | `planet.sh` 新增空项目 `init` 和破坏性 `destroy` 入口,补齐服务运行中初始化保护、状态日志时间戳和 README 快速启动说明 | | `0.62.0` | feature | `dev` | `pending` | Admin Next 转正并迁移旧 AntD 到 `/legacy/admin/*`,补齐采集/AI Provider/Earth/日志/BGP/告警工作台,抽出 Tactile UI 组件库并优化懒加载、Markdown 和移动端详情 | | `0.61.0` | feature | `dev` | `pending` | Earth 图层新增 Redis 读穿缓存、防击穿、stale 兜底、payload budget、缓存状态/清理接口和采集后主动失效,降低船只与重图层演示 OOM 风险 | | `0.60.0` | feature | `dev` | `pending` | Earth 内容/国界运行体验、新闻中文摘要展示、AI Provider 纯净边界和提示词运维配置落地,并补充 Agent Runtime 与 Earth LLM 指令计划 | diff --git a/frontend/package.json b/frontend/package.json index cf0d7796..7dcdcbc5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "planet-frontend", - "version": "0.62.0", + "version": "0.63.0", "private": true, "packageManager": "bun@1", "dependencies": { diff --git a/planet.sh b/planet.sh index 5863e585..644f5d1b 100755 --- a/planet.sh +++ b/planet.sh @@ -3242,6 +3242,101 @@ stop() { log_success "已停止" } +confirm_destroy() { + local answer="" + + clear_wait_spinner + log_warn "即将执行破坏性清理" + log_note "destroy 会停止服务并删除 Planet 的 Docker 容器、卷、镜像和本地编译/运行状态。" + log_note "这会清空本地 PostgreSQL/Redis 数据卷;源码和现有 .env 配置文件会保留。" + printf "%b请输入 Y 确认,N 取消 [Y/N]: %b" "$YELLOW" "$NC" + read -r answer + + case "$answer" in + Y|y) + return 0 + ;; + *) + log_warn "已取消 destroy" + return 1 + ;; + esac +} + +compose_destroy() { + if compose_available; then + docker compose down --volumes --rmi all --remove-orphans >/dev/null 2>&1 || true + return 0 + fi + + if compose_v1_available; then + docker-compose down --volumes --rmi all --remove-orphans >/dev/null 2>&1 || true + return 0 + fi + + log_warn "未检测到 Docker Compose,跳过 compose 级清理" +} + +remove_planet_docker_state() { + local container_ids="" + local volume_names="" + + compose_destroy + + container_ids="$(docker ps -aq --filter "name=^/planet_" 2>/dev/null || true)" + if [ -n "$container_ids" ]; then + printf "%s\n" "$container_ids" | awk '/^[0-9a-f]{12,64}$/' | xargs -r docker rm -f >/dev/null 2>&1 || true + fi + + docker image rm "$AI_PROVIDER_IMAGE_NAME" postgres:15 redis:7-alpine >/dev/null 2>&1 || true + + volume_names="$(docker volume ls -q --filter label=com.docker.compose.project=planet 2>/dev/null || true)" + if [ -n "$volume_names" ]; then + printf "%s\n" "$volume_names" | xargs -r docker volume rm -f >/dev/null 2>&1 || true + fi + docker volume rm -f planet_postgres_data planet_redis_data postgres_data redis_data >/dev/null 2>&1 || true +} + +remove_planet_build_state() { + rm -rf \ + "$SCRIPT_DIR/.venv" \ + "$SCRIPT_DIR/.uv" \ + "$SCRIPT_DIR/.uv-cache" \ + "$SCRIPT_DIR/.pytest_cache" \ + "$SCRIPT_DIR/.ruff_cache" \ + "$SCRIPT_DIR/node_modules" \ + "$SCRIPT_DIR/dist" \ + "$SCRIPT_DIR/frontend/node_modules" \ + "$SCRIPT_DIR/frontend/dist" \ + "$SCRIPT_DIR/frontend/dist-ssr" \ + "$PLANET_STATE_DIR" \ + "$PLANET_CACHE_DIR" +} + +destroy() { + confirm_destroy || return 0 + + log_warn "开始 destroy" + + stop_backend_service + stop_ai_provider_service + stop_frontend_service + stop_motion_agent_service + + start_wait_session "清理 Docker 状态" + remove_planet_docker_state + stop_wait_session + log_success "Docker 容器、卷和镜像已清理" + + start_wait_session "清理本地编译状态" + remove_planet_build_state + stop_wait_session + log_success "本地编译和运行状态已清理" + + log_success "destroy 完成" + log_note "已保留源码和 .env 配置文件;重新开始可执行 ./planet.sh init" +} + stop_local_services_for_restart() { log_warn "正在停止本地服务" stop_backend_service @@ -3428,6 +3523,9 @@ case "$1" in stop) stop ;; + destroy) + destroy + ;; restart) shift restart "$@" @@ -3442,11 +3540,12 @@ case "$1" in log "$2" ;; *) - log_error "用法: ./planet.sh {init|start|stop|restart|createuser|health|log}" + log_error "用法: ./planet.sh {init|start|stop|destroy|restart|createuser|health|log}" log_note "全局参数: -v, --verbose 在状态提示之间增量输出命令日志" log_note "init 首次初始化空项目: 同步 uv/bun 依赖、生成缺失 env、启动数据库并写入默认数据" log_note "start 启动服务,可选: -b <后端端口> -f <前端端口> -a -m/--motion-agent --motion-agent-port <端口> --motion-agent-camera-indexes 0,1 --motion-agent-camera-urls rtsp://... --motion-agent-dry-run --allow-lan --verbose" log_note "stop 停止服务" + log_note "destroy 删除 Planet 容器、卷、镜像和本地编译状态,执行前需要输入 Y 确认" log_note "restart 重启服务,可选: -b [后端端口] -f [前端端口] -a [AI Provider 端口] -m [Motion Agent] -d --allow-lan --verbose" log_note "createuser 交互创建用户" log_note "health 检查健康状态" diff --git a/pyproject.toml b/pyproject.toml index 41bf5601..932b8b71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "planet" -version = "0.62.0" +version = "0.63.0" description = "智能星球计划 - 态势感知系统" requires-python = ">=3.14" dependencies = [ diff --git a/uv.lock b/uv.lock index e0063907..c565cc77 100644 --- a/uv.lock +++ b/uv.lock @@ -757,7 +757,7 @@ wheels = [ [[package]] name = "planet" -version = "0.62.0" +version = "0.63.0" source = { virtual = "." } dependencies = [ { name = "aiofiles" },