diff --git a/VERSION b/VERSION index be386c9e..85e60ed1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.33.0 +0.34.0 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index cdea90d8..3731ab7e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -8,6 +8,23 @@ This project follows the repository versioning rule: - `improvement` -> `+0.0.1`(bugfix + 小功能混合) - `bugfix` -> `+0.0.1` +## [0.34.0] — 2026-04-22 + +### ✨ Highlights +- Earth 搜索面板正式接入,支持搜索海缆、登陆点、卫星、BGP 事件与观测站,并可直接聚焦到对应对象 +- `planet.sh --allow-lan` 打通 Bun + Vite 的局域网开放链路,启动成功后自动打印推荐访问地址与后端健康检查地址 + +### 🔧 Improvements +- 前端开发启动链统一改成 Bun 直接执行 Vite 入口,不再依赖 shell 中额外暴露的 Node 路径 +- Earth 搜索结果接入登陆点详情卡片与对象聚焦,搜索后可直接进入对应详情流 +- `planet.sh` 补充局域网 IPv4 自动识别与推荐地址输出,减少 WSL 局域网调试成本 + +### 🐛 Fixes +- 修复 `./planet.sh restart --allow-lan` 全量重启时未把 `--allow-lan` 继续传给 `start()`,导致前端退回本机监听的问题 +- 修复 WSL + Bun 环境下前端偶发因 Vite 启动链不稳定而无法正确监听 `0.0.0.0:3000` 的问题 + +--- + ## [0.33.0] — 2026-04-22 ### ✨ Highlights @@ -65,8 +82,6 @@ This project follows the repository versioning rule: --- -## [0.31.0] — 2026-04-21 - ## [0.31.2] — 2026-04-21 ### ✨ Highlights @@ -103,6 +118,8 @@ This project follows the repository versioning rule: --- +## [0.31.0] — 2026-04-21 + ### ✨ Features - Earth 新增"巡航展示"模式:自动轮播 BGP 异常事件,逐帧追踪连接线位置,支持外部交互立即中断序列(cancel notifier 模式) - 巡航目标事件点高亮显示:hover 外观 + 锁定脉冲动画,并与点击行为统一展示周边受影响卫星与海缆 @@ -116,8 +133,6 @@ This project follows the repository versioning rule: --- -## [0.29.1] — 2026-04-20 - ## [0.30.0] — 2026-04-21 ### ✨ Features diff --git a/docs/version-history.md b/docs/version-history.md index 33b21828..d3350d57 100644 --- a/docs/version-history.md +++ b/docs/version-history.md @@ -16,12 +16,13 @@ ## Current Version - `main` 当前主线历史推导到:`0.16.5` -- `dev` 当前开发分支历史推导到:`0.33.0` +- `dev` 当前开发分支历史推导到:`0.34.0` ## Timeline | Version | Type | Branch | Commit | Summary | | --- | --- | --- | --- | --- | +| `0.34.0` | feature | `dev` | `pending` | Earth 搜索面板正式接入,`planet.sh --allow-lan` 打通 Bun + Vite 局域网开放链路,并自动输出推荐访问地址与健康检查地址 | | `0.33.0` | feature | `dev` | `pending` | `news_live_streams` 默认接入 iptv-org 频道目录,内置数据源支持直接编辑 override,并修复 TV 合并采集源后默认频道消失的问题 | | `0.32.0` | feature | `dev` | `pending` | Earth 设置新增默认地球大小真源,并继续收口卫星焦点层次、toolbar/scrollbar 性能与 HUD 设置面板细节 | | `0.31.3` | bugfix | `dev` | `pending` | 收口 Earth 图层注册表与启动任务框架,修复旋转/巡航切换、卫星地形遮挡与日夜关闭照明回归 | diff --git a/frontend/package.json b/frontend/package.json index 0d2d4392..bf2f5cfc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "planet-frontend", - "version": "0.33.0", + "version": "0.34.0", "private": true, "packageManager": "bun@1", "dependencies": { @@ -25,8 +25,8 @@ "vite": "^5.0.10" }, "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview" + "dev": "bun ./node_modules/vite/bin/vite.js", + "build": "bun x tsc && bun ./node_modules/vite/bin/vite.js build", + "preview": "bun ./node_modules/vite/bin/vite.js preview" } } diff --git a/frontend/public/earth/css/hud.css b/frontend/public/earth/css/hud.css index f75badf0..236cf9cb 100644 --- a/frontend/public/earth/css/hud.css +++ b/frontend/public/earth/css/hud.css @@ -453,6 +453,246 @@ user-select: none; } +.earth-search-modal { + position: fixed; + inset: 0; + z-index: 255; + visibility: hidden; + opacity: 0; + pointer-events: none; + transition: opacity 0.2s ease, visibility 0.2s ease; +} + +.earth-search-modal.is-open { + visibility: visible; + opacity: 1; + pointer-events: auto; +} + +.earth-search-backdrop { + position: fixed; + inset: 0; + background: rgba(2, 8, 20, 0.38); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + opacity: 0; + transition: opacity 0.2s ease; +} + +.earth-search-modal.is-open .earth-search-backdrop { + opacity: 1; +} + +.earth-search-sheet { + position: fixed; + top: max(calc(28px * var(--hud-scale)), 8vh); + left: 50%; + width: min(calc(680px * var(--hud-scale)), calc(100vw - (32px * var(--hud-scale)))); + max-height: min(calc(720px * var(--hud-scale)), calc(100vh - (56px * var(--hud-scale)))); + transform: translateX(-50%) scale(0.98); + transform-origin: top center; + padding: calc(var(--hud-panel-padding) * var(--hud-scale)); + display: flex; + flex-direction: column; + gap: calc(var(--hud-gap-md) * var(--hud-scale)); + overflow: hidden; + opacity: 0; + filter: blur(10px); + transition: + transform 0.22s cubic-bezier(0.2, 0.8, 0.2, 1), + opacity 0.22s ease, + filter 0.22s ease; +} + +.earth-search-modal.is-open .earth-search-sheet { + transform: translateX(-50%) scale(1); + opacity: 1; + filter: blur(0); +} + +.earth-search-header, +.earth-search-content { + position: relative; + z-index: 1; +} + +.earth-search-kicker { + color: var(--hud-text-soft); + font-size: calc(0.72rem * var(--hud-scale)); + letter-spacing: 0.16em; + text-transform: uppercase; +} + +.earth-search-content { + display: flex; + flex-direction: column; + gap: calc(var(--hud-gap-sm) * var(--hud-scale)); + min-height: 0; +} + +.earth-search-input-shell { + display: flex; + align-items: center; + gap: calc(8px * var(--hud-scale)); + min-height: calc(48px * var(--hud-scale)); + padding: calc(8px * var(--hud-scale)) calc(12px * var(--hud-scale)); + border: 1px solid rgba(214, 230, 247, 0.12); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.05), transparent), + rgba(255, 255, 255, 0.03); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); +} + +.earth-search-input-shell:focus-within { + border-color: rgba(215, 230, 249, 0.22); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.08), + 0 0 0 1px rgba(126, 174, 236, 0.1); +} + +.earth-search-input-icon { + color: var(--hud-text-muted); + font-size: calc(20px * var(--hud-scale)); +} + +.earth-search-input { + flex: 1 1 auto; + min-width: 0; + border: 0; + outline: 0; + background: transparent; + color: var(--hud-title); + font: inherit; + font-size: calc(0.9rem * var(--hud-scale)); + letter-spacing: 0.01em; +} + +.earth-search-input::placeholder { + color: rgba(190, 208, 227, 0.46); +} + +.earth-search-clear[hidden] { + display: none; +} + +.earth-search-meta { + min-height: calc(18px * var(--hud-scale)); + color: var(--hud-text-muted); + font-size: calc(0.7rem * var(--hud-scale)); + letter-spacing: 0.02em; +} + +.earth-search-results { + display: flex; + flex-direction: column; + gap: calc(8px * var(--hud-scale)); + min-height: 0; + overflow-y: auto; + padding-right: calc(4px * var(--hud-scale)); + scrollbar-width: thin; + scrollbar-color: rgba(160, 186, 216, 0.34) transparent; +} + +.earth-search-results::-webkit-scrollbar { + width: 6px; +} + +.earth-search-results::-webkit-scrollbar-track { + background: transparent; +} + +.earth-search-results::-webkit-scrollbar-thumb { + background: linear-gradient(180deg, rgba(210, 225, 242, 0.2), rgba(126, 154, 185, 0.28)); + border-radius: 999px; +} + +.earth-search-empty { + color: var(--hud-text-muted); + font-size: calc(0.76rem * var(--hud-scale)); + line-height: 1.55; + padding: calc(8px * var(--hud-scale)) calc(2px * var(--hud-scale)); +} + +.earth-search-result { + display: grid; + grid-template-columns: auto minmax(0, 1fr) auto; + align-items: center; + gap: calc(12px * var(--hud-scale)); + width: 100%; + padding: calc(12px * var(--hud-scale)) calc(14px * var(--hud-scale)); + border: 1px solid rgba(212, 227, 244, 0.09); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.05), transparent), + rgba(255, 255, 255, 0.025); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); + color: inherit; + text-align: left; + cursor: pointer; + transition: + background 0.18s ease, + border-color 0.18s ease, + transform 0.18s ease; +} + +.earth-search-result:hover, +.earth-search-result.is-active { + border-color: rgba(224, 236, 249, 0.16); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.06), transparent), + rgba(255, 255, 255, 0.04); + transform: translateY(-1px); +} + +.earth-search-result-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: calc(32px * var(--hud-scale)); + height: calc(32px * var(--hud-scale)); + border-radius: calc(10px * var(--hud-scale)); + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(214, 230, 247, 0.1); + color: var(--hud-accent-strong); +} + +.earth-search-result-icon .material-symbols-rounded { + font-size: calc(18px * var(--hud-scale)); +} + +.earth-search-result-copy { + min-width: 0; + display: flex; + flex-direction: column; + gap: 3px; +} + +.earth-search-result-title { + color: var(--hud-title); + font-size: calc(0.86rem * var(--hud-scale)); + font-weight: 600; + letter-spacing: 0.01em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.earth-search-result-subtitle { + color: var(--hud-text-soft); + font-size: calc(0.72rem * var(--hud-scale)); + line-height: 1.45; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.earth-search-result-type { + color: var(--hud-text-muted); + font-size: calc(0.68rem * var(--hud-scale)); + letter-spacing: 0.08em; + text-transform: uppercase; + white-space: nowrap; +} + .earth-settings-modal { position: fixed; inset: 0; diff --git a/frontend/public/earth/index.html b/frontend/public/earth/index.html index c4882284..78f7a776 100644 --- a/frontend/public/earth/index.html +++ b/frontend/public/earth/index.html @@ -156,11 +156,11 @@