Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae1a4b3942 | ||
|
|
35e478642b | ||
|
|
33734b08b8 | ||
|
|
bbe47c5759 | ||
|
|
361bf258e4 | ||
|
|
83c552f9b2 | ||
|
|
15fed1e121 | ||
|
|
f4514b588e |
@@ -8,6 +8,109 @@ This project follows the repository versioning rule:
|
||||
- `improvement` -> `+0.0.1`(bugfix + 小功能混合)
|
||||
- `bugfix` -> `+0.0.1`
|
||||
|
||||
## [0.76.16] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
### Highlights
|
||||
- 修复 ticker breaking class 每 120ms 重置导致的边框闪烁、扫光停滞和方向反转。
|
||||
|
||||
### Added / Fixed / Improved
|
||||
- watcher 仅在当前 breaking 等级变化时更新 class,动画可以完整播放。
|
||||
- ticker 与卡片扫光方向统一为左到右,ticker 扫光覆盖完整 ticker 区域。
|
||||
|
||||
---
|
||||
|
||||
## [0.76.15] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
### Highlights
|
||||
- 将 ticker 扫光限制在上下边线以内,消除 breaking 边框被扫光伪元素带动闪烁。
|
||||
|
||||
### Added / Fixed / Improved
|
||||
- ticker 扫光与卡片扫光保持独立横向移动,边线保持稳定,只响应 hover/等级颜色。
|
||||
|
||||
---
|
||||
|
||||
## [0.76.14] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
### Highlights
|
||||
- 修复卡片扫光从中途出现的问题,让反射从卡片左边界完整扫到右边界。
|
||||
|
||||
### Added / Fixed / Improved
|
||||
- 卡片反射改用内部 `background-position` 扫描,不再使用卡片外部 transform 起始。
|
||||
- ticker 上下边线保持静态,横向扫光独立运行。
|
||||
|
||||
---
|
||||
|
||||
## [0.76.13] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
### Highlights
|
||||
- 修正 breaking hover 强度基准,hover 会在自身 breaking 高亮上继续增强。
|
||||
|
||||
### Added / Fixed / Improved
|
||||
- ticker hover 从 breaking 原始色相和强度继续增强,不再回落到普通新闻强度。
|
||||
- breaking 卡片边框 hover 同样相对自身等级增强,保持红/橙/黄颜色连续。
|
||||
|
||||
---
|
||||
|
||||
## [0.76.12] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
### Highlights
|
||||
- 修复 breaking ticker 和黄卡 hover 被白色混合漂淡的问题。
|
||||
|
||||
### Added / Fixed / Improved
|
||||
- hover 使用共享强度参数与等级色相,玻璃底复用深色 HUD surface。
|
||||
- 红色 ticker 保持红色边线,黄色卡片保持黄色 tint,不再被白色边框稀释。
|
||||
|
||||
---
|
||||
|
||||
## [0.76.11] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
### Highlights
|
||||
- 修正 breaking 卡片整卡扫光层级,并将 ticker hover 亮度对齐共享 HUD 面板。
|
||||
|
||||
### Added / Fixed / Improved
|
||||
- 卡片扫光覆层位于内容之上,整张卡片 hover/focus 时才扫过。
|
||||
- ticker 上下边线 hover 使用共享 HUD 边框 hover 强度,breaking 只替换色相。
|
||||
|
||||
---
|
||||
|
||||
## [0.76.10] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
### Highlights
|
||||
- 将 breaking 卡片扫光限制为当前 hover/focus 卡片,避免所有卡片同时动态闪烁。
|
||||
|
||||
### Added / Fixed / Improved
|
||||
- 卡片反射层默认关闭,只在当前交互卡片上启动对应等级颜色扫光。
|
||||
- ticker 的全宽 breaking 扫光保持独立,不影响卡片浏览。
|
||||
|
||||
---
|
||||
|
||||
## [0.76.9] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
### Highlights
|
||||
- 修复 breaking 卡片黄色 hover 变淡,并补齐 ticker 上下边线的 hover 高亮反馈。
|
||||
|
||||
### Added / Fixed / Improved
|
||||
- 卡片 hover 使用不透明等级色相和统一混合强度,红/橙/黄表现一致。
|
||||
- ticker hover 只强化上下两条边,普通新闻使用蓝色,breaking 使用对应等级颜色。
|
||||
|
||||
---
|
||||
|
||||
## [0.76.8] — 2026-10-02
|
||||
|
||||
Released: 2026-10-02
|
||||
|
||||
@@ -16,12 +16,20 @@
|
||||
## Current Version
|
||||
|
||||
- `main` 当前主线历史推导到:`0.16.5`
|
||||
- `dev` 当前开发分支历史推导到:`0.76.8`
|
||||
- `dev` 当前开发分支历史推导到:`0.76.16`
|
||||
|
||||
## Timeline
|
||||
|
||||
| Version | Type | Branch | Commit | Summary |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `0.76.16` | bugfix | `dev` | `v0.76.16` | 修复 breaking class 重置导致的边框闪烁、扫光停滞与方向反转 |
|
||||
| `0.76.15` | bugfix | `dev` | `v0.76.15` | ticker 扫光限制在上下边线以内,消除 breaking 边框闪烁并与卡片特效分离 |
|
||||
| `0.76.14` | bugfix | `dev` | `v0.76.14` | 修复卡片扫光起点,改为从卡片左边界到右边界的内部背景扫描 |
|
||||
| `0.76.13` | bugfix | `dev` | `v0.76.13` | breaking hover 以自身高亮为基准继续增强,修复红 ticker/卡片变暗 |
|
||||
| `0.76.12` | bugfix | `dev` | `v0.76.12` | 修复 breaking ticker 与黄卡 hover 被白色混合漂淡,保留等级色相 |
|
||||
| `0.76.11` | bugfix | `dev` | `v0.76.11` | breaking 卡片整卡扫光及 ticker hover 强度对齐共享 HUD |
|
||||
| `0.76.10` | bugfix | `dev` | `v0.76.10` | breaking 卡片扫光仅在 hover/focus 时启动,避免全列表同时闪烁 |
|
||||
| `0.76.9` | bugfix | `dev` | `v0.76.9` | 统一 breaking 卡片 hover 强度并增加 ticker 上下边线 hover 高亮 |
|
||||
| `0.76.8` | bugfix | `dev` | `v0.76.8` | 展开新闻面板时冻结卡片 DOM,隔离 ticker/realtime 更新并修复 hover 抖动 |
|
||||
| `0.76.7` | bugfix | `dev` | `v0.76.7` | 统一 breaking 卡片 hover 行为并通过卡片等级变量注入颜色 tint |
|
||||
| `0.76.6` | bugfix | `dev` | `v0.76.6` | breaking ticker 全域扫光闪烁,新闻列表首卡增加顶部呼吸空间 |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "planet-frontend",
|
||||
"version": "0.76.8",
|
||||
"version": "0.76.16",
|
||||
"private": true,
|
||||
"packageManager": "bun@1",
|
||||
"dependencies": {
|
||||
|
||||
@@ -4,7 +4,10 @@
|
||||
--news-ticker-width: min(calc(820px * var(--hud-scale)), 58vw);
|
||||
--news-ticker-edge-fade: calc(96px * var(--hud-scale));
|
||||
--news-ticker-rule-color: var(--hud-border);
|
||||
--news-ticker-line-color: var(--news-ticker-rule-color);
|
||||
--news-ticker-hover-rule-color: var(--hud-border-hover);
|
||||
--news-breaking-color: rgba(255, 166, 102, 0.46);
|
||||
--news-breaking-hue: rgb(255 166 102);
|
||||
position: absolute;
|
||||
top: calc(var(--hud-offset) + calc(2px * var(--hud-scale)));
|
||||
left: 50%;
|
||||
@@ -42,15 +45,15 @@
|
||||
z-index: -1;
|
||||
pointer-events: none;
|
||||
background:
|
||||
linear-gradient(90deg, transparent, var(--news-ticker-rule-color) var(--news-ticker-edge-fade), var(--news-ticker-rule-color) calc(100% - var(--news-ticker-edge-fade)), transparent) top / 100% 1px no-repeat,
|
||||
linear-gradient(90deg, transparent, var(--news-ticker-rule-color) var(--news-ticker-edge-fade), var(--news-ticker-rule-color) calc(100% - var(--news-ticker-edge-fade)), transparent) bottom / 100% 1px no-repeat,
|
||||
linear-gradient(90deg, transparent, var(--news-ticker-line-color) var(--news-ticker-edge-fade), var(--news-ticker-line-color) calc(100% - var(--news-ticker-edge-fade)), transparent) top / 100% 1px no-repeat,
|
||||
linear-gradient(90deg, transparent, var(--news-ticker-line-color) var(--news-ticker-edge-fade), var(--news-ticker-line-color) calc(100% - var(--news-ticker-edge-fade)), transparent) bottom / 100% 1px no-repeat,
|
||||
linear-gradient(90deg, rgba(17, 31, 53, 0), rgba(17, 31, 53, 0.84) var(--news-ticker-edge-fade), rgba(7, 17, 31, 0.84) calc(100% - var(--news-ticker-edge-fade)), rgba(7, 17, 31, 0));
|
||||
}
|
||||
|
||||
.earth-news-ticker::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: calc(-8px * var(--hud-scale)) calc(-14px * var(--hud-scale));
|
||||
inset: calc(4px * var(--hud-scale)) calc(-14px * var(--hud-scale));
|
||||
z-index: 0;
|
||||
pointer-events: none;
|
||||
opacity: 0;
|
||||
@@ -63,8 +66,8 @@
|
||||
color-mix(in srgb, var(--news-breaking-color) 18%, transparent) 57%,
|
||||
transparent 66%,
|
||||
transparent 100%
|
||||
) 140% 0 / 220% 100% no-repeat;
|
||||
filter: blur(calc(8px * var(--hud-scale)));
|
||||
) -100% 0 / 200% 100% no-repeat;
|
||||
filter: blur(calc(2px * var(--hud-scale)));
|
||||
mix-blend-mode: screen;
|
||||
}
|
||||
|
||||
@@ -76,24 +79,42 @@
|
||||
.earth-news-ticker.has-breaking-watch::after,
|
||||
.earth-news-ticker.has-breaking-breaking::after,
|
||||
.earth-news-ticker.has-breaking-critical::after {
|
||||
animation: earthNewsBreakingGlassPulse 2.4s ease-in-out infinite;
|
||||
animation: earthNewsBreakingGlassSweep 2.4s linear infinite;
|
||||
}
|
||||
|
||||
.earth-news-ticker.has-breaking-watch {
|
||||
--news-breaking-color: rgba(255, 213, 128, 0.42);
|
||||
--news-breaking-hue: rgb(255 213 128);
|
||||
--news-ticker-rule-color: var(--news-breaking-color);
|
||||
}
|
||||
|
||||
.earth-news-ticker.has-breaking-breaking {
|
||||
--news-breaking-color: rgba(255, 151, 78, 0.5);
|
||||
--news-breaking-hue: rgb(255 151 78);
|
||||
--news-ticker-rule-color: var(--news-breaking-color);
|
||||
}
|
||||
|
||||
.earth-news-ticker.has-breaking-critical {
|
||||
--news-breaking-color: rgba(255, 95, 95, 0.56);
|
||||
--news-breaking-hue: rgb(255 95 95);
|
||||
--news-ticker-rule-color: var(--news-breaking-color);
|
||||
}
|
||||
|
||||
.earth-news-ticker.has-breaking-watch,
|
||||
.earth-news-ticker.has-breaking-breaking,
|
||||
.earth-news-ticker.has-breaking-critical {
|
||||
--news-ticker-hover-rule-color: color-mix(
|
||||
in srgb,
|
||||
var(--news-breaking-hue) 68%,
|
||||
transparent
|
||||
);
|
||||
}
|
||||
|
||||
.earth-news-ticker:hover,
|
||||
.earth-news-ticker:focus-visible {
|
||||
--news-ticker-line-color: var(--news-ticker-hover-rule-color);
|
||||
}
|
||||
|
||||
.earth-news-ticker__region {
|
||||
position: relative;
|
||||
z-index: 3;
|
||||
@@ -265,34 +286,29 @@
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes earthNewsBreakingGlassPulse {
|
||||
0%,
|
||||
100% {
|
||||
opacity: 0;
|
||||
background-position: 140% 0;
|
||||
@keyframes earthNewsBreakingGlassSweep {
|
||||
from {
|
||||
opacity: 0.68;
|
||||
background-position: 100% 0;
|
||||
}
|
||||
18%,
|
||||
74% {
|
||||
opacity: 0.76;
|
||||
}
|
||||
50% {
|
||||
opacity: 0.9;
|
||||
background-position: -40% 0;
|
||||
to {
|
||||
opacity: 0.68;
|
||||
background-position: -100% 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes earthNewsBreakingCardReflection {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateX(-125%);
|
||||
background-position: 100% 0;
|
||||
}
|
||||
16%,
|
||||
64% {
|
||||
10%,
|
||||
88% {
|
||||
opacity: 0.58;
|
||||
}
|
||||
100% {
|
||||
opacity: 0;
|
||||
transform: translateX(125%);
|
||||
background-position: -100% 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -537,7 +553,8 @@
|
||||
}
|
||||
|
||||
.news-story-card {
|
||||
--news-hover-tint: rgba(214, 235, 255, 0.16);
|
||||
--news-hover-color: rgb(214 235 255);
|
||||
--news-hover-border-strength: 24%;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
flex: 0 0 auto;
|
||||
@@ -567,12 +584,12 @@
|
||||
}
|
||||
|
||||
.news-story-card:hover {
|
||||
border-color: color-mix(in srgb, var(--news-hover-tint) 76%, rgba(214, 235, 255, 0.16));
|
||||
border-color: color-mix(in srgb, var(--news-hover-color) var(--news-hover-border-strength), transparent);
|
||||
background:
|
||||
linear-gradient(
|
||||
180deg,
|
||||
color-mix(in srgb, var(--news-hover-tint) 30%, rgba(255, 255, 255, 0.05)),
|
||||
color-mix(in srgb, var(--news-hover-tint) 24%, rgba(92, 151, 218, 0.03))
|
||||
color-mix(in srgb, var(--news-hover-color) 16%, var(--hud-surface-top)),
|
||||
color-mix(in srgb, var(--news-hover-color) 12%, var(--hud-surface-bottom))
|
||||
);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
@@ -591,9 +608,15 @@
|
||||
0 0 18px rgba(255, 184, 77, 0.12);
|
||||
}
|
||||
|
||||
.news-story-card--breaking-watch,
|
||||
.news-story-card--breaking-breaking,
|
||||
.news-story-card--breaking-critical {
|
||||
--news-hover-border-strength: 68%;
|
||||
}
|
||||
|
||||
.news-story-card--breaking-watch {
|
||||
--news-breaking-color: rgba(255, 213, 128, 0.42);
|
||||
--news-hover-tint: var(--news-breaking-color);
|
||||
--news-hover-color: rgb(255 213 128);
|
||||
border-color: var(--news-breaking-color);
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 248, 220, 0.08), rgba(255, 184, 77, 0.05));
|
||||
@@ -601,7 +624,7 @@
|
||||
|
||||
.news-story-card--breaking-breaking {
|
||||
--news-breaking-color: rgba(255, 151, 78, 0.5);
|
||||
--news-hover-tint: var(--news-breaking-color);
|
||||
--news-hover-color: rgb(255 151 78);
|
||||
border-color: var(--news-breaking-color);
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 205, 150, 0.1), rgba(255, 135, 80, 0.07));
|
||||
@@ -609,7 +632,7 @@
|
||||
|
||||
.news-story-card--breaking-critical {
|
||||
--news-breaking-color: rgba(255, 95, 95, 0.56);
|
||||
--news-hover-tint: var(--news-breaking-color);
|
||||
--news-hover-color: rgb(255 95 95);
|
||||
border-color: var(--news-breaking-color);
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 155, 155, 0.11), rgba(205, 58, 58, 0.08));
|
||||
@@ -621,15 +644,25 @@
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 0;
|
||||
z-index: 2;
|
||||
pointer-events: none;
|
||||
background: linear-gradient(
|
||||
105deg,
|
||||
transparent 32%,
|
||||
var(--news-breaking-color) 49%,
|
||||
transparent 66%
|
||||
);
|
||||
) -100% 0 / 200% 100% no-repeat;
|
||||
mix-blend-mode: screen;
|
||||
opacity: 0;
|
||||
animation: none;
|
||||
}
|
||||
|
||||
.news-story-card--breaking-watch:hover::after,
|
||||
.news-story-card--breaking-watch:focus-visible::after,
|
||||
.news-story-card--breaking-breaking:hover::after,
|
||||
.news-story-card--breaking-breaking:focus-visible::after,
|
||||
.news-story-card--breaking-critical:hover::after,
|
||||
.news-story-card--breaking-critical:focus-visible::after {
|
||||
animation: earthNewsBreakingCardReflection 3.2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@@ -721,9 +754,12 @@
|
||||
.earth-news-ticker.has-breaking-watch::after,
|
||||
.earth-news-ticker.has-breaking-breaking::after,
|
||||
.earth-news-ticker.has-breaking-critical::after,
|
||||
.news-story-card--breaking-watch::after,
|
||||
.news-story-card--breaking-breaking::after,
|
||||
.news-story-card--breaking-critical::after {
|
||||
.news-story-card--breaking-watch:hover::after,
|
||||
.news-story-card--breaking-watch:focus-visible::after,
|
||||
.news-story-card--breaking-breaking:hover::after,
|
||||
.news-story-card--breaking-breaking:focus-visible::after,
|
||||
.news-story-card--breaking-critical:hover::after,
|
||||
.news-story-card--breaking-critical:focus-visible::after {
|
||||
animation: none;
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
@@ -780,6 +780,7 @@ function stopTickerBreakingWatcher() {
|
||||
"has-breaking-breaking",
|
||||
"has-breaking-critical",
|
||||
);
|
||||
document.getElementById("desktop-news-ticker")?.removeAttribute("data-breaking-level");
|
||||
}
|
||||
|
||||
function updateTickerBreakingState() {
|
||||
@@ -802,8 +803,12 @@ function updateTickerBreakingState() {
|
||||
best = { overlap, distance, level: normalizeBreakingLevel(item.dataset.breakingLevel) };
|
||||
}
|
||||
}
|
||||
ticker.classList.remove("has-breaking-watch", "has-breaking-breaking", "has-breaking-critical");
|
||||
if (best?.level && best.level !== "none") ticker.classList.add(`has-breaking-${best.level}`);
|
||||
const nextLevel = best?.level && best.level !== "none" ? best.level : "none";
|
||||
if (ticker.dataset.breakingLevel !== nextLevel) {
|
||||
ticker.classList.remove("has-breaking-watch", "has-breaking-breaking", "has-breaking-critical");
|
||||
if (nextLevel !== "none") ticker.classList.add(`has-breaking-${nextLevel}`);
|
||||
ticker.dataset.breakingLevel = nextLevel;
|
||||
}
|
||||
tickerBreakingTimer = window.setTimeout(updateTickerBreakingState, 120);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "planet"
|
||||
version = "0.76.8"
|
||||
version = "0.76.16"
|
||||
description = "智能星球计划 - 态势感知系统"
|
||||
requires-python = ">=3.14"
|
||||
dependencies = [
|
||||
|
||||
Reference in New Issue
Block a user