Compare commits

..

3 Commits

Author SHA1 Message Date
linkong
69789d7505 release: bump version to 0.63.1
Some checks failed
ci / backend (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / delivery (push) Has been cancelled
release / images (push) Has been cancelled
2026-05-21 02:14:11 +08:00
linkong
4f124121e7 fix: include admin next utils module
Some checks failed
ci / backend (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / delivery (push) Has been cancelled
2026-05-21 02:07:39 +08:00
linkong
085bdf9a80 release: bump version to 0.63.0
Some checks failed
ci / backend (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / delivery (push) Has been cancelled
release / images (push) Has been cancelled
2026-05-21 01:46:43 +08:00
9 changed files with 149 additions and 6 deletions

View File

@@ -189,6 +189,9 @@
# 查看服务状态
./planet.sh health
# 删除容器、卷、镜像和本地编译状态,执行前需要输入 Y 确认
./planet.sh destroy
```
前端命令约定:

View File

@@ -1 +1 @@
0.62.0
0.63.1

View File

@@ -8,6 +8,35 @@ This project follows the repository versioning rule:
- `improvement` -> `+0.0.1`bugfix + 小功能混合)
- `bugfix` -> `+0.0.1`
## [0.63.1] — 2026-05-21
Released: 2026-05-21
### Highlights
- 修复新设备初始化后 Admin Next 无法打开的问题:补上被 `.gitignore``lib/` 规则误忽略的 Admin Next utility module。
### Added / Fixed / Improved
-`frontend/src/admin-next/lib/utils.ts` 纳入版本控制,恢复 `DashboardNext``AdminNextLayout` 等页面对 `cn``formatNumber` 的运行时依赖。
- 避免 Vite dev server 在新 clone 环境中因缺失源码模块而对 `/src/admin-next/*` 返回 500并导致动态导入 AdminNextRoutes 失败。
---
## [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

View File

@@ -16,12 +16,14 @@
## Current Version
- `main` 当前主线历史推导到:`0.16.5`
- `dev` 当前开发分支历史推导到:`0.62.0`
- `dev` 当前开发分支历史推导到:`0.63.1`
## Timeline
| Version | Type | Branch | Commit | Summary |
| --- | --- | --- | --- | --- |
| `0.63.1` | bugfix | `dev` | `pending` | 补上被 `lib/` ignore 规则漏提交的 Admin Next utility module修复新设备初始化后 AdminNextRoutes 动态导入 500 |
| `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 指令计划 |

View File

@@ -1,6 +1,6 @@
{
"name": "planet-frontend",
"version": "0.62.0",
"version": "0.63.1",
"private": true,
"packageManager": "bun@1",
"dependencies": {

View File

@@ -0,0 +1,10 @@
import { clsx, type ClassValue } from 'clsx'
import { twMerge } from 'tailwind-merge'
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
}
export function formatNumber(value: number | null | undefined) {
return Number(value || 0).toLocaleString()
}

101
planet.sh
View File

@@ -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 <AI Provider 端口> -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 检查健康状态"

View File

@@ -1,6 +1,6 @@
[project]
name = "planet"
version = "0.62.0"
version = "0.63.1"
description = "智能星球计划 - 态势感知系统"
requires-python = ">=3.14"
dependencies = [

2
uv.lock generated
View File

@@ -757,7 +757,7 @@ wheels = [
[[package]]
name = "planet"
version = "0.62.0"
version = "0.63.1"
source = { virtual = "." }
dependencies = [
{ name = "aiofiles" },