Spaces:
Running
修收合圖示被擠成8px、輸入框留白與可輸入、exec對齊標題、深色分界線
Browse files收合導覽圖示看不見(真因是尺寸不是顏色):實測圖示在收合狀態只渲染成 8px。
60px 欄寬扣 nav 的 16px 左右內距剩 28px,再扣按鈕 .6rem 內距(19.2px),
留給圖示僅 ~9px,而 img 是 flex 子項預設可壓縮,就一路縮到 8px。修法三件:
收合時欄內距縮 8px(展開仍 16px)、按鈕內距 .6→.45rem、圖示 flex:none
不可壓縮;尺寸 20→22px、opacity .82→1。實測四類圖示皆 22px、清晰可辨。
對話輸入框(#15):
- 下方 61px 空縫:輸入框原本 flex:1 佔 1/7 欄高(153px)但內容只佔一小塊。
改 flex:0 0 auto 縮到內容高度、對話視窗改 flex:1 1 auto 吃掉剩餘,縫隙歸零
- 左右不對稱(左14/右18):Gradio 內層 full-container 12px + input-wrapper
右 4px。統一 full-container 對稱 10px 12px、input-wrapper 歸零 → 左右各 14
- 改 interactive=True:可打字(雖然目前不接任何作用),實測輸入正常
技術執行紀錄對齊標題(#16):.exec-log 水平 padding 歸零——canvas-result 已提供
1.25rem 讓內容與標題齊平,這裡再加 .75rem 會把文字推遠 12px。實測標題與
log 文字皆 256px 對齊
深色模式分界線看不清(#17):.app-header 底線在深色是 --c-border
rgba(14,165,233,.11),疊在深色底幾乎不可見。深色改 rgba(148,163,184,.28),
.dark class 與系統深色媒體查詢兩條路都覆蓋
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- app_agent.py +39 -14
|
@@ -2079,9 +2079,17 @@ footer {
|
|
| 2079 |
position: relative;
|
| 2080 |
margin: 0 0 1.25rem;
|
| 2081 |
border: none;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2082 |
border-bottom: 1px solid var(--c-border);
|
| 2083 |
background: none;
|
| 2084 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2085 |
/* 注意:這三個選擇器的漸層文字底色(background-image: linear-gradient(...var()...))
|
| 2086 |
改在 launch(head=...) 注入的 <style> 裡設定(見 _DARK_MODE_HEAD_CSS)——
|
| 2087 |
這裡只保留其餘不受影響的樣式(字型、間距等)。
|
|
@@ -2451,10 +2459,13 @@ div[role="log"][aria-label="chatbot conversation"],
|
|
| 2451 |
本身也會捲動,兩個捲動容器疊在一起、捲軸位置又離得很近,看起來像「兩條
|
| 2452 |
捲軸」造成混亂——拿掉內部捲動限制,讓內容自然撐開高度,只用頁面本身的
|
| 2453 |
捲軸,維持單一捲動體驗 */
|
|
|
|
|
|
|
|
|
|
| 2454 |
.exec-log {
|
| 2455 |
background: transparent !important;
|
| 2456 |
border: none !important;
|
| 2457 |
-
padding: .55rem
|
| 2458 |
margin-top: 0 !important;
|
| 2459 |
}
|
| 2460 |
.exec-log p {
|
|
@@ -2549,7 +2560,7 @@ div[role="log"][aria-label="chatbot conversation"],
|
|
| 2549 |
行為(.bubble-wrap 內部自己有捲軸),外層 wrapper 用 overflow:hidden
|
| 2550 |
避免出現雙捲軸。 */
|
| 2551 |
.main-chat {
|
| 2552 |
-
flex:
|
| 2553 |
min-height: 0 !important;
|
| 2554 |
height: auto !important;
|
| 2555 |
overflow: hidden !important;
|
|
@@ -2852,14 +2863,22 @@ img.button-icon { opacity: .82; }
|
|
| 2852 |
.nav-col.collapsed .reset-btn,
|
| 2853 |
.nav-col.collapsed #result_nav_col .result-nav-btn {
|
| 2854 |
justify-content: center !important;
|
| 2855 |
-
padding: .
|
| 2856 |
font-size: 0 !important;
|
| 2857 |
}
|
| 2858 |
-
/* 收合
|
| 2859 |
-
|
| 2860 |
-
|
| 2861 |
-
|
| 2862 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2863 |
.nav-col.collapsed .result-nav { padding-top: .8rem !important; }
|
| 2864 |
}
|
| 2865 |
|
|
@@ -2982,16 +3001,21 @@ img.button-icon { opacity: .82; }
|
|
| 2982 |
已經由 gap 統一處理,這裡不用再疊加 margin-top(舊註解提到的「技術
|
| 2983 |
執行紀錄」分組已在 Phase 8-B 搬去 canvas-col,跟這裡無關,是過期
|
| 2984 |
說明)。改成跟 .main-chat 同一套 5:1 flex-grow 比例分配高度。 */
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2985 |
#chat_upload_zone {
|
| 2986 |
-
flex:
|
| 2987 |
min-height: 0 !important;
|
| 2988 |
display: flex !important;
|
| 2989 |
flex-direction: column !important;
|
| 2990 |
}
|
| 2991 |
-
|
| 2992 |
-
|
| 2993 |
-
|
| 2994 |
-
}
|
|
|
|
| 2995 |
/* 格式要求直接寫在上傳卡片裡,跟卡片本身有明顯區隔但仍在同一張卡片內,
|
| 2996 |
使用者不用往上捲回對話視窗找 AI 說過的規則 */
|
| 2997 |
/* 已經在 upload-zone 卡片裡了,卡片本身就有外框,這裡不再加第二層框線/底色。
|
|
@@ -4404,7 +4428,8 @@ def create_app():
|
|
| 4404 |
placeholder="對話輸入框(功能開發中)",
|
| 4405 |
show_label=False,
|
| 4406 |
lines=3,
|
| 4407 |
-
submit_btn=False,
|
|
|
|
| 4408 |
)
|
| 4409 |
|
| 4410 |
with gr.Column(scale=7, min_width=380, elem_classes=["canvas-col"]):
|
|
|
|
| 2079 |
position: relative;
|
| 2080 |
margin: 0 0 1.25rem;
|
| 2081 |
border: none;
|
| 2082 |
+
/* 頂部標題與內容的分界線。--c-border 在深色是 rgba(14,165,233,.11),
|
| 2083 |
+
疊在深色底上幾乎看不見(#17);深色模式改用較亮的中性灰讓分界清楚。
|
| 2084 |
+
兩種深色觸發都要蓋:.dark class(切換鈕強制)與系統深色(媒體查詢,
|
| 2085 |
+
且未被 .light 覆蓋)。 */
|
| 2086 |
border-bottom: 1px solid var(--c-border);
|
| 2087 |
background: none;
|
| 2088 |
}
|
| 2089 |
+
.dark .app-header { border-bottom-color: rgba(148, 163, 184, .28) !important; }
|
| 2090 |
+
@media (prefers-color-scheme: dark) {
|
| 2091 |
+
:root:not(.light) .app-header { border-bottom-color: rgba(148, 163, 184, .28) !important; }
|
| 2092 |
+
}
|
| 2093 |
/* 注意:這三個選擇器的漸層文字底色(background-image: linear-gradient(...var()...))
|
| 2094 |
改在 launch(head=...) 注入的 <style> 裡設定(見 _DARK_MODE_HEAD_CSS)——
|
| 2095 |
這裡只保留其餘不受影響的樣式(字型、間距等)。
|
|
|
|
| 2459 |
本身也會捲動,兩個捲動容器疊在一起、捲軸位置又離得很近,看起來像「兩條
|
| 2460 |
捲軸」造成混亂——拿掉內部捲動限制,讓內容自然撐開高度,只用頁面本身的
|
| 2461 |
捲軸,維持單一捲動體驗 */
|
| 2462 |
+
/* 2026-07-24(#16):水平 padding 歸零——canvas-result 已提供 1.25rem 左內距
|
| 2463 |
+
讓內容跟標題(都在 96px)齊平,這裡原本再加 .75rem(12px) 會把 log 文字推到
|
| 2464 |
+
108px、比標題與其他結果頁多縮 12px。只留上下間距。 */
|
| 2465 |
.exec-log {
|
| 2466 |
background: transparent !important;
|
| 2467 |
border: none !important;
|
| 2468 |
+
padding: .55rem 0 !important;
|
| 2469 |
margin-top: 0 !important;
|
| 2470 |
}
|
| 2471 |
.exec-log p {
|
|
|
|
| 2560 |
行為(.bubble-wrap 內部自己有捲軸),外層 wrapper 用 overflow:hidden
|
| 2561 |
避免出現雙捲軸。 */
|
| 2562 |
.main-chat {
|
| 2563 |
+
flex: 1 1 auto !important; /* 2026-07-24:吃掉輸入框以外的全部高度(見 #chat_upload_zone) */
|
| 2564 |
min-height: 0 !important;
|
| 2565 |
height: auto !important;
|
| 2566 |
overflow: hidden !important;
|
|
|
|
| 2863 |
.nav-col.collapsed .reset-btn,
|
| 2864 |
.nav-col.collapsed #result_nav_col .result-nav-btn {
|
| 2865 |
justify-content: center !important;
|
| 2866 |
+
padding: .45rem !important; /* 2026-07-24 收窄:原本 .6rem 把圖示擠到 8px(見下方註解) */
|
| 2867 |
font-size: 0 !important;
|
| 2868 |
}
|
| 2869 |
+
/* 千卉回報「收合後看不見 icon」的真因(2026-07-24 量出來才發現):不是顏色
|
| 2870 |
+
太淡,是圖示被擠成 8px。60px 欄寬扣掉 nav 的 16px 左右內距只剩 28px,再扣
|
| 2871 |
+
按鈕自己的 .6rem 左右內距(19.2px),留給圖示的空間只剩 ~9px,而 img 是
|
| 2872 |
+
flex 子項、預設可被壓縮,就一路縮到 8px。
|
| 2873 |
+
修法三件:①收合時欄內距縮到 8px(展開仍維持 16px)②按鈕內距縮到 .45rem
|
| 2874 |
+
③圖示 flex:none 明確不可壓縮。可用寬 = 60-16-14.4 ≈ 29.6px > 22px。
|
| 2875 |
+
另外 opacity 拉到 1(預設 .82 沒有文字陪襯時偏淡);disabled 的淡化來自
|
| 2876 |
+
按鈕本身 opacity:.38(父層),不受影響。 */
|
| 2877 |
+
.nav-col.collapsed { padding-left: 8px !important; padding-right: 8px !important; }
|
| 2878 |
+
.nav-col.collapsed .button-icon {
|
| 2879 |
+
width: 22px !important; height: 22px !important;
|
| 2880 |
+
flex: none !important; opacity: 1 !important;
|
| 2881 |
+
}
|
| 2882 |
.nav-col.collapsed .result-nav { padding-top: .8rem !important; }
|
| 2883 |
}
|
| 2884 |
|
|
|
|
| 3001 |
已經由 gap 統一處理,這裡不用再疊加 margin-top(舊註解提到的「技術
|
| 3002 |
執行紀錄」分組已在 Phase 8-B 搬去 canvas-col,跟這裡無關,是過期
|
| 3003 |
說明)。改成跟 .main-chat 同一套 5:1 flex-grow 比例分配高度。 */
|
| 3004 |
+
/* 2026-07-24(#15):輸入框改「自然高度、貼齊底部」,不再用 flex:1 佔 1/7
|
| 3005 |
+
欄高——原本被撐成 153px 但內容只佔一小塊,底下留 61px 空縫(千卉標的
|
| 3006 |
+
下方縫隙)。對話視窗改 flex:1 1 auto 吃掉剩餘全部高度,輸入框 flex:0 0 auto
|
| 3007 |
+
縮到內容高度。 */
|
| 3008 |
#chat_upload_zone {
|
| 3009 |
+
flex: 0 0 auto !important;
|
| 3010 |
min-height: 0 !important;
|
| 3011 |
display: flex !important;
|
| 3012 |
flex-direction: column !important;
|
| 3013 |
}
|
| 3014 |
+
/* Gradio MultimodalTextbox 的內層 padding 左右不對稱(full-container 12px、
|
| 3015 |
+
input-wrapper 右 4px、textarea 0)造成左 14/右 18 不一致(#15)。統一:
|
| 3016 |
+
full-container 對稱 12px、input-wrapper 歸零,textarea 左右緣一致。 */
|
| 3017 |
+
#chat_upload_zone .full-container { padding: 10px 12px !important; }
|
| 3018 |
+
#chat_upload_zone .input-wrapper { padding: 0 !important; }
|
| 3019 |
/* 格式要求直接寫在上傳卡片裡,跟卡片本身有明顯區隔但仍在同一張卡片內,
|
| 3020 |
使用者不用往上捲回對話視窗找 AI 說過的規則 */
|
| 3021 |
/* 已經在 upload-zone 卡片裡了,卡片本身就有外框,這裡不再加第二層框線/底色。
|
|
|
|
| 4428 |
placeholder="對話輸入框(功能開發中)",
|
| 4429 |
show_label=False,
|
| 4430 |
lines=3,
|
| 4431 |
+
submit_btn=False, # 2026-07-24 千卉:拿掉送出鈕
|
| 4432 |
+
interactive=True, # 2026-07-24 千卉:要可打字(雖然目前不接任何作用)
|
| 4433 |
)
|
| 4434 |
|
| 4435 |
with gr.Column(scale=7, min_width=380, elem_classes=["canvas-col"]):
|