release: bump version to 0.27.1
This commit is contained in:
@@ -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`)。
|
||||||
|
|
||||||
## 必须同步更新的文件
|
## 必须同步更新的文件
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 |
|
||||||
|
|||||||
@@ -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": {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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 ─────────────────────────────────────── */
|
||||||
|
|||||||
@@ -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="搜索图层..."
|
||||||
|
|||||||
21
frontend/public/earth/js/controls.js
vendored
21
frontend/public/earth/js/controls.js
vendored
@@ -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`;
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
Reference in New Issue
Block a user