Skip to content

Commit 2ddc813

Browse files
committed
网页态用 100vw,Electron subtitle host 里改用 --compact-desktop-workarea-width,避免 BrowserWindow 小视口导致 clamp 上下界反转
1 parent 396ea79 commit 2ddc813

2 files changed

Lines changed: 12 additions & 14 deletions

File tree

frontend/react-neko-chat/src/styles.css

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2308,26 +2308,22 @@ body.electron-chat-window.subtitle-web-host .compact-chat-surface-shell {
23082308
min(calc(var(--compact-export-surface-width) * 1.18), 63vh)
23092309
);
23102310
--compact-export-history-viewport-gutter: 24px;
2311+
--compact-export-history-viewport-inline-size: 100vw;
23112312
--compact-export-history-width-ratio: 1.36;
2312-
--compact-export-history-max-inline-size: calc(100vw - var(--compact-export-history-viewport-gutter));
2313+
--compact-export-history-max-inline-size: calc(var(--compact-export-history-viewport-inline-size) - var(--compact-export-history-viewport-gutter));
23132314
--compact-export-history-inline-size: min(
23142315
calc(var(--compact-export-surface-width) * var(--compact-export-history-width-ratio)),
23152316
var(--compact-export-history-max-inline-size)
23162317
);
23172318
--compact-export-history-half-inline-size: calc(var(--compact-export-history-inline-size) / 2);
23182319
--compact-export-history-safe-inset: calc(var(--compact-export-history-viewport-gutter) / 2);
23192320
--compact-export-history-center-x: calc(var(--desktop-compact-surface-left, var(--compact-surface-left, 50vw)) + (var(--compact-export-surface-width) / 2));
2320-
--compact-export-history-surface-gap: 20px;
23212321
left: clamp(
23222322
calc(var(--compact-export-history-half-inline-size) + var(--compact-export-history-safe-inset)),
23232323
var(--compact-export-history-center-x),
2324-
calc(100vw - var(--compact-export-history-half-inline-size) - var(--compact-export-history-safe-inset))
2325-
);
2326-
bottom: calc(
2327-
100vh
2328-
- var(--desktop-compact-surface-top, var(--compact-surface-top, 68vh))
2329-
+ var(--compact-export-history-surface-gap, 20px)
2324+
calc(var(--compact-export-history-viewport-inline-size) - var(--compact-export-history-half-inline-size) - var(--compact-export-history-safe-inset))
23302325
);
2326+
bottom: calc(100vh - var(--desktop-compact-surface-top, var(--compact-surface-top, 68vh)) + 34px);
23312327
/* Geometry-critical: derive collapse compensation from control metrics; do not animate layout properties here. */
23322328
--compact-export-controls-padding-y: clamp(4px, calc(var(--compact-export-surface-width) * 0.0116), 6px);
23332329
--compact-export-controls-border-width: 1px;
@@ -2364,8 +2360,9 @@ body.electron-chat-window.subtitle-web-host .compact-export-history-anchor {
23642360
--compact-history-slot-height,
23652361
min(calc(var(--compact-export-surface-width) * 1.18), calc(var(--compact-desktop-workarea-height, 900px) * 0.63))
23662362
);
2363+
--compact-export-history-viewport-inline-size: var(--compact-desktop-workarea-width, 1440px);
23672364
--compact-export-history-max-inline-size: calc(
2368-
var(--compact-desktop-workarea-width, 1440px) - var(--compact-export-history-viewport-gutter)
2365+
var(--compact-export-history-viewport-inline-size) - var(--compact-export-history-viewport-gutter)
23692366
);
23702367
max-height: min(calc(var(--compact-export-surface-width) * 1.46), calc(var(--compact-desktop-workarea-height, 900px) * 0.78));
23712368
}

tests/unit/test_react_chat_window_static.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,15 +240,16 @@ def test_compact_history_size_tokens_are_ratio_based_for_ui_optimization():
240240
assert "--compact-export-history-half-inline-size: calc(var(--compact-export-history-inline-size) / 2);" in anchor_block
241241
assert "--compact-export-history-safe-inset: calc(var(--compact-export-history-viewport-gutter) / 2);" in anchor_block
242242
assert "--compact-export-history-center-x: calc(var(--desktop-compact-surface-left, var(--compact-surface-left, 50vw)) + (var(--compact-export-surface-width) / 2));" in anchor_block
243-
assert "--compact-export-history-surface-gap: 20px;" in anchor_block
243+
assert "--compact-export-history-viewport-inline-size: 100vw;" in anchor_block
244244
assert "left: clamp(" in anchor_block
245245
assert "var(--compact-export-history-center-x)" in anchor_block
246-
assert "calc(100vw - var(--compact-export-history-half-inline-size) - var(--compact-export-history-safe-inset))" in anchor_block
247-
assert "+ var(--compact-export-history-surface-gap, 20px)" in anchor_block
246+
assert "calc(var(--compact-export-history-viewport-inline-size) - var(--compact-export-history-half-inline-size) - var(--compact-export-history-safe-inset))" in anchor_block
247+
assert "bottom: calc(100vh - var(--desktop-compact-surface-top, var(--compact-surface-top, 68vh)) + 34px);" in anchor_block
248248
assert "width: var(--compact-export-history-inline-size);" in anchor_block
249-
assert "--compact-export-history-max-inline-size: calc(100vw - var(--compact-export-history-viewport-gutter));" in anchor_block
249+
assert "--compact-export-history-max-inline-size: calc(var(--compact-export-history-viewport-inline-size) - var(--compact-export-history-viewport-gutter));" in anchor_block
250+
assert "--compact-export-history-viewport-inline-size: var(--compact-desktop-workarea-width, 1440px);" in desktop_history_block
250251
assert "--compact-export-history-max-inline-size: calc(" in desktop_history_block
251-
assert "var(--compact-desktop-workarea-width, 1440px) - var(--compact-export-history-viewport-gutter)" in desktop_history_block
252+
assert "var(--compact-export-history-viewport-inline-size) - var(--compact-export-history-viewport-gutter)" in desktop_history_block
252253
assert "max-width: var(--compact-history-bubble-max-ratio, var(--compact-export-history-bubble-max-ratio));" in bubble_block
253254
assert "max-width: var(--compact-history-bubble-max-ratio, var(--compact-export-history-system-bubble-max-ratio));" in system_bubble_block
254255
assert "max-width: var(--compact-export-preview-bubble-max-ratio);" in preview_bubble_block

0 commit comments

Comments
 (0)