release: bump version to 0.27.1

This commit is contained in:
linkong
2026-04-14 10:22:05 +08:00
parent 07e26d6d5a
commit 11179e7e67
12 changed files with 64 additions and 27 deletions

View File

@@ -8,13 +8,14 @@ allowed-tools: ["Read", "Edit", "Bash", "Glob", "Grep"]
## 版本号规则 ## 版本号规则
| 变更类型 | 版本跳动 | | 变更类型 | 版本跳动 | 适用场景 |
|---------|---------| |---------|---------|---------|
| `feature` | `+0.1.0` | | `feature` | `+0.1.0` | 纯新功能,无 bugfix |
| `bugfix` | `+0.0.1` | | `improvement` | `+0.0.1` | UI 调整、小功能增强、bugfix 混合,或以 UI/体验改进为主的迭代 |
| `bugfix` | `+0.0.1` | 纯 bug 修复,无新功能 |
| `docs` / `maintenance` / `refactor` | 默认不发版,除非用户明确要求 | | `docs` / `maintenance` / `refactor` | 默认不发版,除非用户明确要求 |
意图混合时以用户明确描述为准。 意图混合时以用户明确描述为准bugfix + 小 feature 混合默认判定为 `improvement``+0.0.1`
## 必须同步更新的文件 ## 必须同步更新的文件

View File

@@ -1 +1 @@
0.27.0 0.27.1

View File

@@ -5,8 +5,22 @@ All notable changes to `planet` are documented here.
This project follows the repository versioning rule: This project follows the repository versioning rule:
- `feature` -> `+0.1.0` - `feature` -> `+0.1.0`
- `improvement` -> `+0.0.1`bugfix + 小功能混合)
- `bugfix` -> `+0.0.1` - `bugfix` -> `+0.0.1`
## [0.27.1] — 2026-04-14
### 🔧 Improvements
- 面板拖拽新增 L 形边界约束,其他面板无法覆盖 brand 面板区域,并从右侧/底部自然卡边
- brand 组件引入 `--brand-scale` 整体缩放变量padding 与内容尺寸独立控制
- 图层控制面板宽度收窄260px与 brand 面板错落排列,间距调大
### 🐛 Fixes
- 修复搜索框 `type="search"` 导致清除按钮重复显示的问题
- 修复 `[hidden]` 属性被组件 `display` 规则覆盖的问题
---
## 0.27.0 ## 0.27.0
Released: 2026-04-14 Released: 2026-04-14

View File

@@ -16,12 +16,13 @@
## Current Version ## Current Version
- `main` 当前主线历史推导到:`0.16.5` - `main` 当前主线历史推导到:`0.16.5`
- `dev` 当前开发分支历史推导到:`0.27.0` - `dev` 当前开发分支历史推导到:`0.27.1`
## Timeline ## Timeline
| Version | Type | Branch | Commit | Summary | | Version | Type | Branch | Commit | Summary |
| --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- |
| `0.27.1` | improvement | `dev` | — | HUD 面板拖拽 L 形边界约束、brand 组件整体缩放、图层面板宽度优化、搜索叉叉修复 |
| `0.27.0` | feature | `dev` | — | Earth HUD 重构图层面板、信息卡片悬浮定位、Fresnel 大气层渲染 | | `0.27.0` | feature | `dev` | — | Earth HUD 重构图层面板、信息卡片悬浮定位、Fresnel 大气层渲染 |
| `0.0.1-beta` | bootstrap | `main` | `e7033775` | first commit | | `0.0.1-beta` | bootstrap | `main` | `e7033775` | first commit |
| `0.1.0` | feature | `main` | `6cb4398f` | Modularize 3D Earth page with ES Modules | | `0.1.0` | feature | `main` | `6cb4398f` | Modularize 3D Earth page with ES Modules |

View File

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

View File

@@ -55,6 +55,9 @@ body,
height: 100%; height: 100%;
} }
/* Ensure [hidden] always wins over component display rules */
[hidden] { display: none !important; }
body.earth-page { body.earth-page {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
background-color: #0a0a1a; background-color: #0a0a1a;

View File

@@ -24,8 +24,9 @@
/* ── Brand panel ──────────────────────────────────────────────── */ /* ── Brand panel ──────────────────────────────────────────────── */
.hud-panel-brand { .hud-panel-brand {
--brand-scale: 0.88;
border-radius: 0; border-radius: 0;
padding: calc(12px * var(--hud-scale)) calc(14px * var(--hud-scale)); padding: calc(18px * var(--hud-scale)) calc(20px * var(--hud-scale));
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@@ -36,15 +37,15 @@
.hud-panel-brand .earth-brand { .hud-panel-brand .earth-brand {
display: flex; display: flex;
align-items: center; align-items: center;
gap: calc(10px * var(--hud-scale)); gap: calc(10px * var(--hud-scale) * var(--brand-scale));
min-width: 0; min-width: 0;
} }
.hud-panel-brand .earth-brand__logo { .hud-panel-brand .earth-brand__logo {
display: block; display: block;
flex: 0 0 auto; flex: 0 0 auto;
width: calc(128px * var(--hud-scale)); width: calc(128px * var(--hud-scale) * var(--brand-scale));
height: calc(128px * var(--hud-scale)); height: calc(128px * var(--hud-scale) * var(--brand-scale));
object-fit: contain; object-fit: contain;
} }
@@ -54,28 +55,28 @@
min-width: 0; min-width: 0;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
gap: calc(5px * var(--hud-scale)); gap: calc(5px * var(--hud-scale) * var(--brand-scale));
} }
.hud-panel-brand .earth-brand__title { .hud-panel-brand .earth-brand__title {
display: block; display: block;
width: min(100%, calc(160px * var(--hud-scale))); width: min(100%, calc(160px * var(--hud-scale) * var(--brand-scale)));
max-width: 100%; max-width: 100%;
height: auto; height: auto;
min-height: calc(20px * var(--hud-scale)); min-height: calc(20px * var(--hud-scale) * var(--brand-scale));
object-fit: contain; object-fit: contain;
} }
.hud-panel-brand .earth-brand__meta { .hud-panel-brand .earth-brand__meta {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: calc(2px * var(--hud-scale)); gap: calc(2px * var(--hud-scale) * var(--brand-scale));
width: fit-content; width: fit-content;
} }
.hud-panel-brand .earth-brand__subtitle { .hud-panel-brand .earth-brand__subtitle {
color: var(--hud-text-muted); color: var(--hud-text-muted);
font-size: calc(0.74rem * var(--hud-scale)); font-size: calc(0.74rem * var(--hud-scale) * var(--brand-scale));
line-height: 1.3; line-height: 1.3;
font-weight: 500; font-weight: 500;
letter-spacing: 0.01em; letter-spacing: 0.01em;
@@ -89,7 +90,7 @@
.hud-panel-brand .earth-brand__description { .hud-panel-brand .earth-brand__description {
color: var(--hud-text-soft); color: var(--hud-text-soft);
font-size: calc(0.6rem * var(--hud-scale)); font-size: calc(0.6rem * var(--hud-scale) * var(--brand-scale));
line-height: 1.3; line-height: 1.3;
letter-spacing: 0.08em; letter-spacing: 0.08em;
width: fit-content; width: fit-content;
@@ -100,7 +101,7 @@
} }
.hud-panel-brand .earth-brand--en .earth-brand__title { .hud-panel-brand .earth-brand--en .earth-brand__title {
width: min(100%, calc(172px * var(--hud-scale))); width: min(100%, calc(172px * var(--hud-scale) * var(--brand-scale)));
} }
.hud-panel-brand .earth-brand--en .earth-brand__subtitle, .hud-panel-brand .earth-brand--en .earth-brand__subtitle,

View File

@@ -1,13 +1,13 @@
/* layer-panel.css — layer toggle panel (below brand, in left column) */ /* layer-panel.css — layer toggle panel (below brand, in left column) */
.hud-panel-layers { .hud-panel-layers {
/* Lives inside .earth-left-column — position is relative via column rule */ /* Lives inside .earth-left-column — narrower than brand panel intentionally */
border-radius: 0; border-radius: 0;
padding: 0; padding: 0;
width: 100%; width: calc(260px * var(--hud-scale));
z-index: 10; z-index: 10;
overflow: hidden; overflow: hidden;
margin-top: calc(6px * var(--hud-scale)); margin-top: calc(12px * var(--hud-scale));
} }
/* ── Header / drag handle ─────────────────────────────────────── */ /* ── Header / drag handle ─────────────────────────────────────── */

View File

@@ -71,7 +71,7 @@
<div class="layer-panel-search"> <div class="layer-panel-search">
<span class="material-symbols-rounded layer-panel-search-icon">search</span> <span class="material-symbols-rounded layer-panel-search-icon">search</span>
<input <input
type="search" type="text"
id="layer-search-input" id="layer-search-input"
class="layer-panel-search-input" class="layer-panel-search-input"
placeholder="搜索图层..." placeholder="搜索图层..."

View File

@@ -193,14 +193,31 @@ function setupDraggableHudPanels() {
if (!isDragging) return; if (!isDragging) return;
const appRect = app.getBoundingClientRect(); const appRect = app.getBoundingClientRect();
const panelRect = panel.getBoundingClientRect(); const panelRect = panel.getBoundingClientRect();
const nextLeft = Math.min( const brandPanel = document.getElementById("brand-panel");
const brandRect = brandPanel ? brandPanel.getBoundingClientRect() : null;
const brandBottom = brandRect ? brandRect.bottom - appRect.top : 0;
const brandRight = brandRect ? brandRect.right - appRect.left : 0;
let nextLeft = Math.min(
Math.max(startLeft + (event.clientX - startPointerX), 0), Math.max(startLeft + (event.clientX - startPointerX), 0),
appRect.width - panelRect.width, appRect.width - panelRect.width,
); );
const nextTop = Math.min( let nextTop = Math.min(
Math.max(startTop + (event.clientY - startPointerY), 0), Math.max(startTop + (event.clientY - startPointerY), 0),
appRect.height - panelRect.height, appRect.height - panelRect.height,
); );
// Brand 面板形成 L 形禁区panel 不能进入 brand 左上角矩形区域。
// 当两个轴同时越界时,比较两侧超出量——哪侧需要的调整量更小就卡哪侧。
// 从右侧滑入 → leftAdjust 小 → 卡右边;从下方滑入 → topAdjust 小 → 卡底边。
if (brandRect && nextLeft < brandRight && nextTop < brandBottom) {
const leftAdjust = brandRight - nextLeft;
const topAdjust = brandBottom - nextTop;
if (leftAdjust <= topAdjust) {
nextLeft = brandRight;
} else {
nextTop = brandBottom;
}
}
panel.style.left = `${nextLeft}px`; panel.style.left = `${nextLeft}px`;
panel.style.top = `${nextTop}px`; panel.style.top = `${nextTop}px`;

View File

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

2
uv.lock generated
View File

@@ -475,7 +475,7 @@ wheels = [
[[package]] [[package]]
name = "planet" name = "planet"
version = "0.27.0" version = "0.27.1"
source = { virtual = "." } source = { virtual = "." }
dependencies = [ dependencies = [
{ name = "aiofiles" }, { name = "aiofiles" },