{"allowContribute":false,"item":{"artifactHtml":"\u003cstyle\u003e\n  :root { --paper:#FFFBF5; --ink:#1C1E1E; --ink-2:#5E6A6B; --accent:#C2410C; --accent-2:#9A3412; --soft:#FFF1E6; --soft-2:#FFF7ED; --hair:#E8DDD0; --ok:#0F766E; --muted:#F1EDE8; }\n  :root[data-theme=\"dark\"] { --paper:#141412; --ink:#EDE9E3; --ink-2:#A8B0B1; --accent:#FB7135; --accent-2:#F97316; --soft:#2A1E14; --soft-2:#231A12; --hair:#2D2A26; --ok:#2DD4BF; --muted:#1E1E1C; }\n  .doc { background:var(--paper); color:var(--ink); padding:28px 30px; font:16px/1.72 -apple-system,\"PingFang TC\",\"Noto Sans TC\",sans-serif; max-width:860px; margin:0 auto; }\n  .eyebrow { font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.16em; color:var(--accent); text-transform:uppercase; }\n  h1 { font-size:24px; line-height:1.3; letter-spacing:-.02em; margin:10px 0 0; }\n  .lede { color:var(--ink-2); font-size:14px; margin:10px 0 0; line-height:1.65; }\n  .meta { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 0; }\n  .meta span { font:600 11px ui-monospace,Menlo,monospace; letter-spacing:.04em; padding:5px 9px; border-radius:999px; border:1px solid var(--hair); background:var(--muted); color:var(--ink-2); }\n  .meta span.bad { background:var(--soft); color:var(--accent-2); border-color:#FDBA74; }\n  :root[data-theme=\"dark\"] .meta span.bad { border-color:#7C2D12; }\n  .stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin:20px 0; }\n  .stat { background:var(--soft-2); border:1px solid var(--hair); border-radius:10px; padding:13px 14px; }\n  .stat.bad { background:var(--soft); border-color:#FDBA74; }\n  :root[data-theme=\"dark\"] .stat.bad { border-color:#7C2D12; }\n  .stat .k { font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.08em; color:var(--accent); }\n  .stat .v { font-size:20px; font-weight:800; margin-top:4px; letter-spacing:-.02em; line-height:1.2; }\n  .stat .n { font-size:12px; color:var(--ink-2); margin-top:2px; line-height:1.5; }\n  .callout { display:flex; gap:13px; padding:14px 16px; background:var(--soft); border:1px solid #FDBA74; border-radius:10px; margin:18px 0; }\n  :root[data-theme=\"dark\"] .callout { border-color:#7C2D12; }\n  .callout .tag { flex:none; font:800 11px ui-monospace,Menlo,monospace; letter-spacing:.08em; color:var(--accent); padding-top:2px; }\n  .callout div { font-size:14px; line-height:1.7; color:var(--ink); }\n  h2 { font-size:18px; margin:28px 0 10px; letter-spacing:-.01em; padding-bottom:8px; border-bottom:1px solid var(--hair); }\n  h3 { font-size:14px; margin:18px 0 8px; color:var(--accent-2); letter-spacing:.04em; }\n  p { color:var(--ink-2); margin:0 0 10px; font-size:14.5px; line-height:1.78; }\n  ul,ol { margin:0 0 14px 18px; padding:0; color:var(--ink-2); font-size:14.5px; line-height:1.78; }\n  li { margin:4px 0; }\n  li strong { color:var(--ink); }\n  code { font:600 13px ui-monospace,Menlo,monospace; background:var(--muted); padding:1px 6px; border-radius:4px; border:1px solid var(--hair); }\n  .tableWrap { overflow-x:auto; margin:12px 0 16px; border:1px solid var(--hair); border-radius:10px; }\n  table { border-collapse:collapse; width:100%; font-size:13.5px; min-width:520px; }\n  th,td { text-align:left; padding:10px 12px; border-bottom:1px solid var(--hair); vertical-align:top; }\n  th { font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.06em; color:var(--ink-2); background:var(--muted); white-space:nowrap; }\n  td { color:var(--ink-2); }\n  td:first-child { font-weight:700; color:var(--ink); white-space:nowrap; }\n  .steps { list-style:none; margin:10px 0 14px; padding:0; counter-reset:step; }\n  .steps li { counter-increment:step; display:flex; gap:12px; padding:12px 14px; background:var(--muted); border:1px solid var(--hair); border-radius:10px; margin:8px 0; }\n  .steps li::before { content:counter(step); flex:none; width:28px; height:28px; display:grid; place-items:center; background:var(--accent); color:#fff; border-radius:999px; font:800 12px ui-monospace,Menlo,monospace; margin-top:1px; }\n  .grid2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:12px 0; }\n  .card { border:1px solid var(--hair); border-radius:10px; padding:14px; background:var(--muted); }\n  .card .num { font:800 11px ui-monospace,Menlo,monospace; color:var(--accent); }\n  .card .title { font-weight:800; font-size:14px; margin:4px 0 6px; }\n  .card p { font-size:13px; margin:0; line-height:1.65; }\n  .pill { display:inline-block; font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.06em; padding:3px 8px; border-radius:999px; border:1px solid var(--hair); background:var(--paper); color:var(--ink-2); margin-right:6px; }\n  .pill.bad { background:var(--soft); color:var(--accent-2); border-color:#FDBA74; }\n  :root[data-theme=\"dark\"] .pill.bad { border-color:#7C2D12; }\n  .shot { border:1px solid var(--hair); border-radius:10px; overflow:hidden; margin:10px 0 14px; background:var(--muted); }\n  .shot .cap { font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.06em; color:var(--ink-2); padding:8px 12px; border-bottom:1px solid var(--hair); background:var(--paper); }\n  .shot ul { margin:8px 0 10px 18px; }\n  .foot { margin-top:24px; padding:14px 16px; background:var(--muted); border:1px dashed var(--hair); border-radius:10px; font-size:12.5px; color:var(--ink-2); line-height:1.7; }\n  @media (max-width:640px) { .doc { padding:20px 16px; } h1 { font-size:20px; } .grid2 { grid-template-columns:1fr; } }\n\u003c/style\u003e\u003cdiv class=\"doc\"\u003e\n  \u003cheader\u003e\n    \u003cdiv class=\"eyebrow\"\u003eCubeLV 平台 Bug 回報 · 市集 / 組合包\u003c/div\u003e\n    \u003ch1\u003eCubeLV 平台 Bug 回報：市集「我的組合包」彈窗直排跑版＋已上架組合包無就地更新入口\u003c/h1\u003e\n    \u003cp class=\"lede\"\u003e市集「組合包」分頁的「我的組合包」彈窗，長標題與描述被擠成一字一行直排、難讀；已上架組合包無法在「上架 / 我的上架」就地更新版本，必須繞回 \u003ccode\u003e市集 → 組合包 → 我的組合包 → 編輯 → 放上市集\u003c/code\u003e 並以語意不明的按鈕覆蓋，更新心智負擔高。\u003c/p\u003e\n    \u003cdiv class=\"meta\"\u003e\n      \u003cspan\u003e回報日 2026-09-01 15:32\u003c/span\u003e\n      \u003cspan class=\"bad\"\u003eBug A：UI 跑版 · 一字一行直排\u003c/span\u003e\n      \u003cspan class=\"bad\"\u003eBug B：流程缺陷 · 無更新入口\u003c/span\u003e\n      \u003cspan\u003e裝置：Android 直式窄螢幕\u003c/span\u003e\n      \u003cspan\u003e严重度 🟡 中 · 影響發布與閱讀\u003c/span\u003e\n    \u003c/div\u003e\n  \u003c/header\u003e\n\n  \u003csection class=\"stats\" data-cube=\"stats\"\u003e\n    \u003cdiv class=\"stat bad\"\u003e\u003cdiv class=\"k\"\u003eBug A\u003c/div\u003e\u003cdiv class=\"v\"\u003e排版跑版\u003c/div\u003e\u003cdiv class=\"n\"\u003e彈窗內長字串\u003cbr\u003e一字一行直排\u003c/div\u003e\u003c/div\u003e\n    \u003cdiv class=\"stat bad\"\u003e\u003cdiv class=\"k\"\u003eBug B\u003c/div\u003e\u003cdiv class=\"v\"\u003e無更新入口\u003c/div\u003e\u003cdiv class=\"n\"\u003e已上架包\u003cbr\u003e無法就地更新版本\u003c/div\u003e\u003c/div\u003e\n    \u003cdiv class=\"stat\"\u003e\u003cdiv class=\"k\"\u003e復現率\u003c/div\u003e\u003cdiv class=\"v\"\u003e100%\u003c/div\u003e\u003cdiv class=\"n\"\u003e組合包分頁\u003cbr\u003e→ 我的組合包即現\u003c/div\u003e\u003c/div\u003e\n    \u003cdiv class=\"stat\"\u003e\u003cdiv class=\"k\"\u003e影響\u003c/div\u003e\u003cdiv class=\"v\"\u003e創作者阻礙\u003c/div\u003e\u003cdiv class=\"n\"\u003e難讀＋不敢按\u003cbr\u003e→ 不敢更新\u003c/div\u003e\u003c/div\u003e\n  \u003c/section\u003e\n\n  \u003cdiv class=\"callout\"\u003e\u003cspan class=\"tag\"\u003e核心判斷\u003c/span\u003e\u003cdiv\u003e\u003cstrong\u003e兩個 bug 在同一張彈窗上疊加：\u003c/strong\u003eBug A 讓人看不懂自己寫的包在講什麼；Bug B 讓人找不到「更新」按鈕 —— 看不懂 + 找不到 ＝ 創作者不會更新，市集上的包就永遠停在舊版。\u003c/div\u003e\u003c/div\u003e\n\n  \u003ch2\u003e一、Bug A：彈窗直排跑版\u003c/h2\u003e\n  \u003cp\u003e「我的組合包」彈窗內的卡片，標題與描述在窄螢幕下被壓成\u003cstrong\u003e垂直直排、一字一行\u003c/strong\u003e，應為橫向自動換行。此為容器寬度計算錯誤，非手機設定問題。\u003c/p\u003e\n  \u003cdiv class=\"shot\"\u003e\n    \u003cdiv class=\"cap\"\u003e截圖證據（2026-09-01 15:32，三張連續截圖同一彈窗上下捲動）\u003c/div\u003e\n    \u003cul\u003e\n      \u003cli\u003e\u003cstrong\u003e圖 1：\u003c/strong\u003e左側文字直排顯示 \u003ccode\u003e金額：稅率改 0.2% 支援小數股、破底翻選、總經資金面分析師\u003c/code\u003e —— 每字一行\u003c/li\u003e\n      \u003cli\u003e\u003cstrong\u003e圖 2：\u003c/strong\u003e中段文字直排顯示 \u003ccode\u003e配、Cube LV 雙軌戰法｜價值底線 × AI 均線回測、YouTube 影片摘要任務、\u003c/code\u003e —— 每字一行，右側可見 \u003ccode\u003e編輯 / 複製連結 / 放上市集 / 刪除\u003c/code\u003e 四按鈕\u003c/li\u003e\n      \u003cli\u003e\u003cstrong\u003e圖 3：\u003c/strong\u003e下段文字直排顯示 \u003ccode\u003e自製研究部、回測紀錄、破底翻信號、凹單戰情、每日研究、技\u003c/code\u003e —— 仍為直排，底部被截斷\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/div\u003e\n  \u003ch3\u003e重現步驟\u003c/h3\u003e\n  \u003col class=\"steps\"\u003e\n    \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e進入市集 → 組合包分頁\u003c/div\u003e\u003cdiv class=\"d\"\u003e頂部頁籤切到 \u003ccode\u003e組合包\u003c/code\u003e（紫色底線），右上角可見 \u003ccode\u003e上架\u003c/code\u003e 按鈕\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e\n    \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e點擊右上角「上架」→ 打開「我的組合包」彈窗\u003c/div\u003e\u003cdiv class=\"d\"\u003e彈窗標題為 \u003ccode\u003e我的組合包\u003c/code\u003e，底部有 \u003ccode\u003e關閉 / 新增組合包\u003c/code\u003e\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e\n    \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e觀察彈窗內卡片文字\u003c/div\u003e\u003cdiv class=\"d\"\u003e任何標題或描述較長的包，在直式窄螢幕下立即復現一字一行直排\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n  \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際行為\u003c/th\u003e\u003cth\u003e預期行為\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\n    \u003ctr\u003e\u003ctd\u003e文字排版\u003c/td\u003e\u003ctd\u003e長字串無空白斷點時被擠成一字一行直排、難讀、底部截斷\u003c/td\u003e\u003ctd\u003e橫向自動換行，必要時 \u003ccode\u003eword-break: break-word / overflow-wrap: anywhere\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e容器寬度\u003c/td\u003e\u003ctd\u003e卡片容器寬度被父層或 flex 擠壓，未設 \u003ccode\u003emin-width: 0\u003c/code\u003e / 正確 flex 比例\u003c/td\u003e\u003ctd\u003e彈窗內卡片 \u003ccode\u003eflex: 1; min-width: 0; width: 100%\u003c/code\u003e，文字區可伸縮且可換行\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e按鈕區\u003c/td\u003e\u003ctd\u003e按鈕與文字擠在同一列導致文字區被壓到僅剩一字寬\u003c/td\u003e\u003ctd\u003e窄螢幕下按鈕自動換行或收合為選單，優先保障文字區可讀寬度\u003c/td\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n  \u003ch3\u003e可能原因推測\u003c/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e彈窗內卡片採用 \u003ccode\u003eflex row\u003c/code\u003e 但文字區未設 \u003ccode\u003emin-width: 0\u003c/code\u003e，導致 flex 子項無法正確收縮\u003c/li\u003e\n    \u003cli\u003e長字串（中文無空格）缺少 \u003ccode\u003eoverflow-wrap / word-break\u003c/code\u003e 處理，瀏覽器以字為單位被迫直排\u003c/li\u003e\n    \u003cli\u003e按鈕區 \u003ccode\u003eflex-shrink: 0\u003c/code\u003e 或固定寬度過大，進一步壓縮文字區\u003c/li\u003e\n    \u003cli\u003e彈窗本身 \u003ccode\u003emax-width / padding\u003c/code\u003e 在窄螢幕下未做響應式調整\u003c/li\u003e\n  \u003c/ul\u003e\n\n  \u003ch2\u003e二、Bug B：已上架組合包無就地「更新版本」入口\u003c/h2\u003e\n  \u003cp\u003e使用者回饋：\u003cem\u003e「我更新自己的組合包要到市集自己去找，無法在發布那邊自己更新版本」\u003c/em\u003e。當前已上架的組合包沒有在「我的上架 / 發布管理」就地更新版本的入口，必須繞回市集，且按鈕語意讓人不敢按。\u003c/p\u003e\n  \u003ch3\u003e當前路徑 vs 期望路徑\u003c/h3\u003e\n  \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e\u003c/th\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e按鈕文案\u003c/th\u003e\u003cth\u003e問題\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\n    \u003ctr\u003e\u003ctd\u003e實際\u003c/td\u003e\u003ctd\u003e市集 → 組合包 → 右上角「上架」→ 我的組合包 → 選包 → 編輯 → 放上市集\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e放上市集\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e藏得深；已上架時仍顯示「放上」而非「更新」，使用者誤以為會建第二包、不敢按\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e預期\u003c/td\u003e\u003ctd\u003e市集 → 我的上架 / 發布管理 → 選已上架包 → 更新版本\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e更新版本 / 同步最新 / 檢視差異\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e就地更新，一鍵把本地最新插件內容同步到線上版，明確提示「將覆蓋線上版」\u003c/td\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n  \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際行為\u003c/th\u003e\u003cth\u003e預期行為\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\n    \u003ctr\u003e\u003ctd\u003e入口\u003c/td\u003e\u003ctd\u003e無獨立「我的上架」更新入口，只能回市集彈窗找\u003c/td\u003e\u003ctd\u003e在「我的上架」列表每包提供 \u003ccode\u003e更新版本\u003c/code\u003e 主按鈕\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e語意\u003c/td\u003e\u003ctd\u003e已上架包仍顯示 \u003ccode\u003e放上市集\u003c/code\u003e，無法區分新建 vs 更新\u003c/td\u003e\u003ctd\u003e已上架 → \u003ccode\u003e更新版本\u003c/code\u003e；未上架 → \u003ccode\u003e放上市集\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e差異提示\u003c/td\u003e\u003ctd\u003e無版本差異提示，無法確認線上是否為最新\u003c/td\u003e\u003ctd\u003e顯示 \u003ccode\u003e本地已更新 / 線上為舊版 / 一致\u003c/code\u003e 標籤，提供 \u003ccode\u003e檢視變更\u003c/code\u003e 與 \u003ccode\u003e一鍵同步\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e結果\u003c/td\u003e\u003ctd\u003e使用者放棄更新，市集上長期停留舊版\u003c/td\u003e\u003ctd\u003e創作者願意頻繁小步更新，市集品質提升\u003c/td\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n  \u003ch3\u003e影響\u003c/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003cspan class=\"pill bad\"\u003e創作者\u003c/span\u003e不敢按「放上市集」，怕重複上架或覆蓋錯誤，乾脆不更新\u003c/li\u003e\n    \u003cli\u003e\u003cspan class=\"pill bad\"\u003e訪客\u003c/span\u003e看到的永遠是舊版，排版 bug 修了也推不上去\u003c/li\u003e\n    \u003cli\u003e與 Bug A 疊加：即使想更新，也因看不懂彈窗內容而無法確認要更新哪一包\u003c/li\u003e\n  \u003c/ul\u003e\n\n  \u003ch2\u003e三、影響範圍\u003c/h2\u003e\n  \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e功能\u003c/th\u003e\u003cth\u003e影響\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\n    \u003ctr\u003e\u003ctd\u003e我的組合包可讀性\u003c/td\u003e\u003ctd\u003e🔴 難讀\u003c/td\u003e\u003ctd\u003e直排文字在所有窄螢幕手機上復現，標題與描述無法閱讀\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e組合包更新\u003c/td\u003e\u003ctd\u003e🟡 阻礙\u003c/td\u003e\u003ctd\u003e無就地更新入口 + 語意不清 → 創作者更新意願低，線上版落後\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e市集品質\u003c/td\u003e\u003ctd\u003e🟡 間接\u003c/td\u003e\u003ctd\u003e舊版長期滯留，訪客體驗受損\u003c/td\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n\n  \u003ch2\u003e四、建議修復方向\u003c/h2\u003e\n  \u003cdiv class=\"grid2\"\u003e\n    \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 01\u003c/div\u003e\u003cdiv class=\"title\"\u003e修彈窗文字容器\u003c/div\u003e\u003cp\u003e文字區加 \u003ccode\u003emin-width: 0; overflow-wrap: anywhere; word-break: break-word;\u003c/code\u003e，按鈕區改為可換行或收合，彈窗加響應式 \u003ccode\u003emax-width: 92vw\u003c/code\u003e。\u003c/p\u003e\u003c/div\u003e\n    \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 02\u003c/div\u003e\u003cdiv class=\"title\"\u003e語意改為「更新版本」\u003c/div\u003e\u003cp\u003e已上架的包按鈕文案改為 \u003ccode\u003e更新版本\u003c/code\u003e，二次確認彈窗寫明「將以本地最新內容覆蓋線上版 vN → vN+1」。\u003c/p\u003e\u003c/div\u003e\n    \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 03\u003c/div\u003e\u003cdiv class=\"title\"\u003e新增就地更新入口\u003c/div\u003e\u003cp\u003e在「我的上架 / 發布管理」列表每包提供 \u003ccode\u003e更新版本 / 檢視差異\u003c/code\u003e，並標示 \u003ccode\u003e本地有更新 / 已是最新\u003c/code\u003e 狀態。\u003c/p\u003e\u003c/div\u003e\n    \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 04\u003c/div\u003e\u003cdiv class=\"title\"\u003e版本差異提示\u003c/div\u003e\u003cp\u003e更新前顯示變更摘要（插件版本、內容差異），更新後回寫新版號與更新時間，減少誤操作焦慮。\u003c/p\u003e\u003c/div\u003e\n  \u003c/div\u003e\n\n  \u003ch2\u003e五、暫時規避（給創作者）\u003c/h2\u003e\n  \u003cul\u003e\n    \u003cli\u003e需更新時走 \u003ccode\u003e市集 → 組合包 → 上架 → 我的組合包 → 編輯 → 放上市集\u003c/code\u003e，點擊「放上市集」即為「覆蓋更新」——\u003cstrong\u003e不會產生第二包\u003c/strong\u003e\u003c/li\u003e\n    \u003cli\u003e文字看不清時，點 \u003ccode\u003e編輯\u003c/code\u003e 進詳情頁即可看到正常橫排的完整內容，確認後再回來按「放上市集」\u003c/li\u003e\n    \u003cli\u003e更新前可先在本地確認插件皆為最新 bundle（本例 2026-09-01 的 bundle 皆為最新），再執行覆蓋\u003c/li\u003e\n  \u003c/ul\u003e\n\n  \u003cdiv class=\"foot\"\u003e\n    \u003cstrong\u003e備註：\u003c/strong\u003eBug A 為純前端 CSS 響應式問題，應可快速 hotfix；Bug B 為流程與文案問題，建議與 FIX 02/03 一併處理。此筆記含三張現場截圖描述，下游可直接對照彈窗 DOM（flex 容器、文字區、按鈕區）定位。\u003cbr\u003e\n    \u003cspan style=\"color:var(--ink-2)\"\u003e分類：市集 · 組合包 · 我的組合包彈窗 \u0026nbsp;|\u0026nbsp; 關鍵字：組合包 / 我的組合包 / 直排 / 跑版 / 更新版本 / 放上市集 / flex / word-break\u003c/span\u003e\n  \u003c/div\u003e\n\u003c/div\u003e","content":"\u003cdiv class=\"doc\"\u003e  \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003eBug A\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e排版跑版\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e彈窗內長字串一字一行直排\u003c/p\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003eBug B\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e無更新入口\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e已上架包無法就地更新版本\u003c/p\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e復現率\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e100%\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e組合包分頁→ 我的組合包即現\u003c/p\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e影響\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e創作者阻礙\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e難讀＋不敢按→ 不敢更新\u003c/p\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout\"\u003e\u003cspan class=\"tag\"\u003e核心判斷\u003c/span\u003e\u003cdiv\u003e\u003cstrong\u003e兩個 bug 在同一張彈窗上疊加：\u003c/strong\u003eBug A 讓人看不懂自己寫的包在講什麼；Bug B 讓人找不到「更新」按鈕 —— 看不懂 + 找不到 ＝ 創作者不會更新，市集上的包就永遠停在舊版。\u003c/div\u003e\u003c/div\u003e \u003ch2\u003e一、Bug A：彈窗直排跑版\u003c/h2\u003e \u003cp\u003e「我的組合包」彈窗內的卡片，標題與描述在窄螢幕下被壓成\u003cstrong\u003e垂直直排、一字一行\u003c/strong\u003e，應為橫向自動換行。此為容器寬度計算錯誤，非手機設定問題。\u003c/p\u003e \u003cdiv class=\"shot\"\u003e \u003cdiv class=\"cap\"\u003e截圖證據（2026-09-01 15:32，三張連續截圖同一彈窗上下捲動）\u003c/div\u003e \u003cul\u003e \u003cli\u003e\u003cstrong\u003e圖 1：\u003c/strong\u003e左側文字直排顯示 \u003ccode\u003e金額：稅率改 0.2% 支援小數股、破底翻選、總經資金面分析師\u003c/code\u003e —— 每字一行\u003c/li\u003e \u003cli\u003e\u003cstrong\u003e圖 2：\u003c/strong\u003e中段文字直排顯示 \u003ccode\u003e配、Cube LV 雙軌戰法｜價值底線 × AI 均線回測、YouTube 影片摘要任務、\u003c/code\u003e —— 每字一行，右側可見 \u003ccode\u003e編輯 / 複製連結 / 放上市集 / 刪除\u003c/code\u003e 四按鈕\u003c/li\u003e \u003cli\u003e\u003cstrong\u003e圖 3：\u003c/strong\u003e下段文字直排顯示 \u003ccode\u003e自製研究部、回測紀錄、破底翻信號、凹單戰情、每日研究、技\u003c/code\u003e —— 仍為直排，底部被截斷\u003c/li\u003e \u003c/ul\u003e \u003c/div\u003e \u003ch3\u003e重現步驟\u003c/h3\u003e \u003col class=\"steps\"\u003e \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e進入市集 → 組合包分頁\u003c/div\u003e\u003cdiv class=\"d\"\u003e頂部頁籤切到 \u003ccode\u003e組合包\u003c/code\u003e（紫色底線），右上角可見 \u003ccode\u003e上架\u003c/code\u003e 按鈕\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e點擊右上角「上架」→ 打開「我的組合包」彈窗\u003c/div\u003e\u003cdiv class=\"d\"\u003e彈窗標題為 \u003ccode\u003e我的組合包\u003c/code\u003e，底部有 \u003ccode\u003e關閉 / 新增組合包\u003c/code\u003e\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e觀察彈窗內卡片文字\u003c/div\u003e\u003cdiv class=\"d\"\u003e任何標題或描述較長的包，在直式窄螢幕下立即復現一字一行直排\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e \u003c/ol\u003e \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際行為\u003c/th\u003e\u003cth\u003e預期行為\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e \u003ctr\u003e\u003ctd\u003e文字排版\u003c/td\u003e\u003ctd\u003e長字串無空白斷點時被擠成一字一行直排、難讀、底部截斷\u003c/td\u003e\u003ctd\u003e橫向自動換行，必要時 \u003ccode\u003eword-break: break-word / overflow-wrap: anywhere\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e容器寬度\u003c/td\u003e\u003ctd\u003e卡片容器寬度被父層或 flex 擠壓，未設 \u003ccode\u003emin-width: 0\u003c/code\u003e / 正確 flex 比例\u003c/td\u003e\u003ctd\u003e彈窗內卡片 \u003ccode\u003eflex: 1; min-width: 0; width: 100%\u003c/code\u003e，文字區可伸縮且可換行\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e按鈕區\u003c/td\u003e\u003ctd\u003e按鈕與文字擠在同一列導致文字區被壓到僅剩一字寬\u003c/td\u003e\u003ctd\u003e窄螢幕下按鈕自動換行或收合為選單，優先保障文字區可讀寬度\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e \u003ch3\u003e可能原因推測\u003c/h3\u003e \u003cul\u003e \u003cli\u003e彈窗內卡片採用 \u003ccode\u003eflex row\u003c/code\u003e 但文字區未設 \u003ccode\u003emin-width: 0\u003c/code\u003e，導致 flex 子項無法正確收縮\u003c/li\u003e \u003cli\u003e長字串（中文無空格）缺少 \u003ccode\u003eoverflow-wrap / word-break\u003c/code\u003e 處理，瀏覽器以字為單位被迫直排\u003c/li\u003e \u003cli\u003e按鈕區 \u003ccode\u003eflex-shrink: 0\u003c/code\u003e 或固定寬度過大，進一步壓縮文字區\u003c/li\u003e \u003cli\u003e彈窗本身 \u003ccode\u003emax-width / padding\u003c/code\u003e 在窄螢幕下未做響應式調整\u003c/li\u003e \u003c/ul\u003e \u003ch2\u003e二、Bug B：已上架組合包無就地「更新版本」入口\u003c/h2\u003e \u003cp\u003e使用者回饋：\u003cem\u003e「我更新自己的組合包要到市集自己去找，無法在發布那邊自己更新版本」\u003c/em\u003e。當前已上架的組合包沒有在「我的上架 / 發布管理」就地更新版本的入口，必須繞回市集，且按鈕語意讓人不敢按。\u003c/p\u003e \u003ch3\u003e當前路徑 vs 期望路徑\u003c/h3\u003e \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e\u003c/th\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e按鈕文案\u003c/th\u003e\u003cth\u003e問題\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e \u003ctr\u003e\u003ctd\u003e實際\u003c/td\u003e\u003ctd\u003e市集 → 組合包 → 右上角「上架」→ 我的組合包 → 選包 → 編輯 → 放上市集\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e放上市集\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e藏得深；已上架時仍顯示「放上」而非「更新」，使用者誤以為會建第二包、不敢按\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e預期\u003c/td\u003e\u003ctd\u003e市集 → 我的上架 / 發布管理 → 選已上架包 → 更新版本\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e更新版本 / 同步最新 / 檢視差異\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e就地更新，一鍵把本地最新插件內容同步到線上版，明確提示「將覆蓋線上版」\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際行為\u003c/th\u003e\u003cth\u003e預期行為\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e \u003ctr\u003e\u003ctd\u003e入口\u003c/td\u003e\u003ctd\u003e無獨立「我的上架」更新入口，只能回市集彈窗找\u003c/td\u003e\u003ctd\u003e在「我的上架」列表每包提供 \u003ccode\u003e更新版本\u003c/code\u003e 主按鈕\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e語意\u003c/td\u003e\u003ctd\u003e已上架包仍顯示 \u003ccode\u003e放上市集\u003c/code\u003e，無法區分新建 vs 更新\u003c/td\u003e\u003ctd\u003e已上架 → \u003ccode\u003e更新版本\u003c/code\u003e；未上架 → \u003ccode\u003e放上市集\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e差異提示\u003c/td\u003e\u003ctd\u003e無版本差異提示，無法確認線上是否為最新\u003c/td\u003e\u003ctd\u003e顯示 \u003ccode\u003e本地已更新 / 線上為舊版 / 一致\u003c/code\u003e 標籤，提供 \u003ccode\u003e檢視變更\u003c/code\u003e 與 \u003ccode\u003e一鍵同步\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e結果\u003c/td\u003e\u003ctd\u003e使用者放棄更新，市集上長期停留舊版\u003c/td\u003e\u003ctd\u003e創作者願意頻繁小步更新，市集品質提升\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e \u003ch3\u003e影響\u003c/h3\u003e \u003cul\u003e \u003cli\u003e\u003cspan class=\"pill bad\"\u003e創作者\u003c/span\u003e不敢按「放上市集」，怕重複上架或覆蓋錯誤，乾脆不更新\u003c/li\u003e \u003cli\u003e\u003cspan class=\"pill bad\"\u003e訪客\u003c/span\u003e看到的永遠是舊版，排版 bug 修了也推不上去\u003c/li\u003e \u003cli\u003e與 Bug A 疊加：即使想更新，也因看不懂彈窗內容而無法確認要更新哪一包\u003c/li\u003e \u003c/ul\u003e \u003ch2\u003e三、影響範圍\u003c/h2\u003e \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e功能\u003c/th\u003e\u003cth\u003e影響\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e \u003ctr\u003e\u003ctd\u003e我的組合包可讀性\u003c/td\u003e\u003ctd\u003e🔴 難讀\u003c/td\u003e\u003ctd\u003e直排文字在所有窄螢幕手機上復現，標題與描述無法閱讀\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e組合包更新\u003c/td\u003e\u003ctd\u003e🟡 阻礙\u003c/td\u003e\u003ctd\u003e無就地更新入口 + 語意不清 → 創作者更新意願低，線上版落後\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e市集品質\u003c/td\u003e\u003ctd\u003e🟡 間接\u003c/td\u003e\u003ctd\u003e舊版長期滯留，訪客體驗受損\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e \u003ch2\u003e四、建議修復方向\u003c/h2\u003e \u003cdiv class=\"grid2\"\u003e \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 01\u003c/div\u003e\u003cdiv class=\"title\"\u003e修彈窗文字容器\u003c/div\u003e\u003cp\u003e文字區加 \u003ccode\u003emin-width: 0; overflow-wrap: anywhere; word-break: break-word;\u003c/code\u003e，按鈕區改為可換行或收合，彈窗加響應式 \u003ccode\u003emax-width: 92vw\u003c/code\u003e。\u003c/p\u003e\u003c/div\u003e \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 02\u003c/div\u003e\u003cdiv class=\"title\"\u003e語意改為「更新版本」\u003c/div\u003e\u003cp\u003e已上架的包按鈕文案改為 \u003ccode\u003e更新版本\u003c/code\u003e，二次確認彈窗寫明「將以本地最新內容覆蓋線上版 vN → vN+1」。\u003c/p\u003e\u003c/div\u003e \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 03\u003c/div\u003e\u003cdiv class=\"title\"\u003e新增就地更新入口\u003c/div\u003e\u003cp\u003e在「我的上架 / 發布管理」列表每包提供 \u003ccode\u003e更新版本 / 檢視差異\u003c/code\u003e，並標示 \u003ccode\u003e本地有更新 / 已是最新\u003c/code\u003e 狀態。\u003c/p\u003e\u003c/div\u003e \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 04\u003c/div\u003e\u003cdiv class=\"title\"\u003e版本差異提示\u003c/div\u003e\u003cp\u003e更新前顯示變更摘要（插件版本、內容差異），更新後回寫新版號與更新時間，減少誤操作焦慮。\u003c/p\u003e\u003c/div\u003e \u003c/div\u003e \u003ch2\u003e五、暫時規避（給創作者）\u003c/h2\u003e \u003cul\u003e \u003cli\u003e需更新時走 \u003ccode\u003e市集 → 組合包 → 上架 → 我的組合包 → 編輯 → 放上市集\u003c/code\u003e，點擊「放上市集」即為「覆蓋更新」——\u003cstrong\u003e不會產生第二包\u003c/strong\u003e\u003c/li\u003e \u003cli\u003e文字看不清時，點 \u003ccode\u003e編輯\u003c/code\u003e 進詳情頁即可看到正常橫排的完整內容，確認後再回來按「放上市集」\u003c/li\u003e \u003cli\u003e更新前可先在本地確認插件皆為最新 bundle（本例 2026-09-01 的 bundle 皆為最新），再執行覆蓋\u003c/li\u003e \u003c/ul\u003e \u003cdiv class=\"foot\"\u003e \u003cstrong\u003e備註：\u003c/strong\u003eBug A 為純前端 CSS 響應式問題，應可快速 hotfix；Bug B 為流程與文案問題，建議與 FIX 02/03 一併處理。此筆記含三張現場截圖描述，下游可直接對照彈窗 DOM（flex 容器、文字區、按鈕區）定位。\u003cbr\u003e \u003cspan style=\"color:var(--ink-2)\"\u003e分類：市集 · 組合包 · 我的組合包彈窗 \u0026nbsp;|\u0026nbsp; 關鍵字：組合包 / 我的組合包 / 直排 / 跑版 / 更新版本 / 放上市集 / flex / word-break\u003c/span\u003e \u003c/div\u003e \u003c/div\u003e","createdAt":1788248349540,"deletedAt":null,"displayMode":"artifact","embedRenders":{},"id":"c13832797c28fc6df44ca26b","isNew":false,"isPublic":true,"itemType":"NOTE","name":"CubeLV 平台 Bug 回報：市集「我的組合包」彈窗直排跑版＋已上架組合包無就地更新入口","parents":{"4465d0a863da5d1b345d888c":1788248349540},"preParentID":null,"updatedAt":1789093071188,"updatedBy":{"userId":"6a3dcfc700e9b9fd06d5ef","userName":"蔡其樺"},"version":6},"ownerName":"蔡其樺","subtree":[{"artifactHtml":"\u003cstyle\u003e\n  :root { --paper:#FFFBF5; --ink:#1C1E1E; --ink-2:#5E6A6B; --accent:#C2410C; --accent-2:#9A3412; --soft:#FFF1E6; --soft-2:#FFF7ED; --hair:#E8DDD0; --ok:#0F766E; --muted:#F1EDE8; }\n  :root[data-theme=\"dark\"] { --paper:#141412; --ink:#EDE9E3; --ink-2:#A8B0B1; --accent:#FB7135; --accent-2:#F97316; --soft:#2A1E14; --soft-2:#231A12; --hair:#2D2A26; --ok:#2DD4BF; --muted:#1E1E1C; }\n  .doc { background:var(--paper); color:var(--ink); padding:28px 30px; font:16px/1.72 -apple-system,\"PingFang TC\",\"Noto Sans TC\",sans-serif; max-width:860px; margin:0 auto; }\n  .eyebrow { font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.16em; color:var(--accent); text-transform:uppercase; }\n  h1 { font-size:24px; line-height:1.3; letter-spacing:-.02em; margin:10px 0 0; }\n  .lede { color:var(--ink-2); font-size:14px; margin:10px 0 0; line-height:1.65; }\n  .meta { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 0; }\n  .meta span { font:600 11px ui-monospace,Menlo,monospace; letter-spacing:.04em; padding:5px 9px; border-radius:999px; border:1px solid var(--hair); background:var(--muted); color:var(--ink-2); }\n  .meta span.bad { background:var(--soft); color:var(--accent-2); border-color:#FDBA74; }\n  :root[data-theme=\"dark\"] .meta span.bad { border-color:#7C2D12; }\n  .stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin:20px 0; }\n  .stat { background:var(--soft-2); border:1px solid var(--hair); border-radius:10px; padding:13px 14px; }\n  .stat.bad { background:var(--soft); border-color:#FDBA74; }\n  :root[data-theme=\"dark\"] .stat.bad { border-color:#7C2D12; }\n  .stat .k { font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.08em; color:var(--accent); }\n  .stat .v { font-size:20px; font-weight:800; margin-top:4px; letter-spacing:-.02em; line-height:1.2; }\n  .stat .n { font-size:12px; color:var(--ink-2); margin-top:2px; line-height:1.5; }\n  .callout { display:flex; gap:13px; padding:14px 16px; background:var(--soft); border:1px solid #FDBA74; border-radius:10px; margin:18px 0; }\n  :root[data-theme=\"dark\"] .callout { border-color:#7C2D12; }\n  .callout .tag { flex:none; font:800 11px ui-monospace,Menlo,monospace; letter-spacing:.08em; color:var(--accent); padding-top:2px; }\n  .callout div { font-size:14px; line-height:1.7; color:var(--ink); }\n  h2 { font-size:18px; margin:28px 0 10px; letter-spacing:-.01em; padding-bottom:8px; border-bottom:1px solid var(--hair); }\n  h3 { font-size:14px; margin:18px 0 8px; color:var(--accent-2); letter-spacing:.04em; }\n  p { color:var(--ink-2); margin:0 0 10px; font-size:14.5px; line-height:1.78; }\n  ul,ol { margin:0 0 14px 18px; padding:0; color:var(--ink-2); font-size:14.5px; line-height:1.78; }\n  li { margin:4px 0; }\n  li strong { color:var(--ink); }\n  code { font:600 13px ui-monospace,Menlo,monospace; background:var(--muted); padding:1px 6px; border-radius:4px; border:1px solid var(--hair); }\n  .tableWrap { overflow-x:auto; margin:12px 0 16px; border:1px solid var(--hair); border-radius:10px; }\n  table { border-collapse:collapse; width:100%; font-size:13.5px; min-width:520px; }\n  th,td { text-align:left; padding:10px 12px; border-bottom:1px solid var(--hair); vertical-align:top; }\n  th { font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.06em; color:var(--ink-2); background:var(--muted); white-space:nowrap; }\n  td { color:var(--ink-2); }\n  td:first-child { font-weight:700; color:var(--ink); white-space:nowrap; }\n  .steps { list-style:none; margin:10px 0 14px; padding:0; counter-reset:step; }\n  .steps li { counter-increment:step; display:flex; gap:12px; padding:12px 14px; background:var(--muted); border:1px solid var(--hair); border-radius:10px; margin:8px 0; }\n  .steps li::before { content:counter(step); flex:none; width:28px; height:28px; display:grid; place-items:center; background:var(--accent); color:#fff; border-radius:999px; font:800 12px ui-monospace,Menlo,monospace; margin-top:1px; }\n  .grid2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:12px 0; }\n  .card { border:1px solid var(--hair); border-radius:10px; padding:14px; background:var(--muted); }\n  .card .num { font:800 11px ui-monospace,Menlo,monospace; color:var(--accent); }\n  .card .title { font-weight:800; font-size:14px; margin:4px 0 6px; }\n  .card p { font-size:13px; margin:0; line-height:1.65; }\n  .pill { display:inline-block; font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.06em; padding:3px 8px; border-radius:999px; border:1px solid var(--hair); background:var(--paper); color:var(--ink-2); margin-right:6px; }\n  .pill.bad { background:var(--soft); color:var(--accent-2); border-color:#FDBA74; }\n  :root[data-theme=\"dark\"] .pill.bad { border-color:#7C2D12; }\n  .shot { border:1px solid var(--hair); border-radius:10px; overflow:hidden; margin:10px 0 14px; background:var(--muted); }\n  .shot .cap { font:700 11px ui-monospace,Menlo,monospace; letter-spacing:.06em; color:var(--ink-2); padding:8px 12px; border-bottom:1px solid var(--hair); background:var(--paper); }\n  .shot ul { margin:8px 0 10px 18px; }\n  .foot { margin-top:24px; padding:14px 16px; background:var(--muted); border:1px dashed var(--hair); border-radius:10px; font-size:12.5px; color:var(--ink-2); line-height:1.7; }\n  @media (max-width:640px) { .doc { padding:20px 16px; } h1 { font-size:20px; } .grid2 { grid-template-columns:1fr; } }\n\u003c/style\u003e\u003cdiv class=\"doc\"\u003e\n  \u003cheader\u003e\n    \u003cdiv class=\"eyebrow\"\u003eCubeLV 平台 Bug 回報 · 市集 / 組合包\u003c/div\u003e\n    \u003ch1\u003eCubeLV 平台 Bug 回報：市集「我的組合包」彈窗直排跑版＋已上架組合包無就地更新入口\u003c/h1\u003e\n    \u003cp class=\"lede\"\u003e市集「組合包」分頁的「我的組合包」彈窗，長標題與描述被擠成一字一行直排、難讀；已上架組合包無法在「上架 / 我的上架」就地更新版本，必須繞回 \u003ccode\u003e市集 → 組合包 → 我的組合包 → 編輯 → 放上市集\u003c/code\u003e 並以語意不明的按鈕覆蓋，更新心智負擔高。\u003c/p\u003e\n    \u003cdiv class=\"meta\"\u003e\n      \u003cspan\u003e回報日 2026-09-01 15:32\u003c/span\u003e\n      \u003cspan class=\"bad\"\u003eBug A：UI 跑版 · 一字一行直排\u003c/span\u003e\n      \u003cspan class=\"bad\"\u003eBug B：流程缺陷 · 無更新入口\u003c/span\u003e\n      \u003cspan\u003e裝置：Android 直式窄螢幕\u003c/span\u003e\n      \u003cspan\u003e严重度 🟡 中 · 影響發布與閱讀\u003c/span\u003e\n    \u003c/div\u003e\n  \u003c/header\u003e\n\n  \u003csection class=\"stats\" data-cube=\"stats\"\u003e\n    \u003cdiv class=\"stat bad\"\u003e\u003cdiv class=\"k\"\u003eBug A\u003c/div\u003e\u003cdiv class=\"v\"\u003e排版跑版\u003c/div\u003e\u003cdiv class=\"n\"\u003e彈窗內長字串\u003cbr\u003e一字一行直排\u003c/div\u003e\u003c/div\u003e\n    \u003cdiv class=\"stat bad\"\u003e\u003cdiv class=\"k\"\u003eBug B\u003c/div\u003e\u003cdiv class=\"v\"\u003e無更新入口\u003c/div\u003e\u003cdiv class=\"n\"\u003e已上架包\u003cbr\u003e無法就地更新版本\u003c/div\u003e\u003c/div\u003e\n    \u003cdiv class=\"stat\"\u003e\u003cdiv class=\"k\"\u003e復現率\u003c/div\u003e\u003cdiv class=\"v\"\u003e100%\u003c/div\u003e\u003cdiv class=\"n\"\u003e組合包分頁\u003cbr\u003e→ 我的組合包即現\u003c/div\u003e\u003c/div\u003e\n    \u003cdiv class=\"stat\"\u003e\u003cdiv class=\"k\"\u003e影響\u003c/div\u003e\u003cdiv class=\"v\"\u003e創作者阻礙\u003c/div\u003e\u003cdiv class=\"n\"\u003e難讀＋不敢按\u003cbr\u003e→ 不敢更新\u003c/div\u003e\u003c/div\u003e\n  \u003c/section\u003e\n\n  \u003cdiv class=\"callout\"\u003e\u003cspan class=\"tag\"\u003e核心判斷\u003c/span\u003e\u003cdiv\u003e\u003cstrong\u003e兩個 bug 在同一張彈窗上疊加：\u003c/strong\u003eBug A 讓人看不懂自己寫的包在講什麼；Bug B 讓人找不到「更新」按鈕 —— 看不懂 + 找不到 ＝ 創作者不會更新，市集上的包就永遠停在舊版。\u003c/div\u003e\u003c/div\u003e\n\n  \u003ch2\u003e一、Bug A：彈窗直排跑版\u003c/h2\u003e\n  \u003cp\u003e「我的組合包」彈窗內的卡片，標題與描述在窄螢幕下被壓成\u003cstrong\u003e垂直直排、一字一行\u003c/strong\u003e，應為橫向自動換行。此為容器寬度計算錯誤，非手機設定問題。\u003c/p\u003e\n  \u003cdiv class=\"shot\"\u003e\n    \u003cdiv class=\"cap\"\u003e截圖證據（2026-09-01 15:32，三張連續截圖同一彈窗上下捲動）\u003c/div\u003e\n    \u003cul\u003e\n      \u003cli\u003e\u003cstrong\u003e圖 1：\u003c/strong\u003e左側文字直排顯示 \u003ccode\u003e金額：稅率改 0.2% 支援小數股、破底翻選、總經資金面分析師\u003c/code\u003e —— 每字一行\u003c/li\u003e\n      \u003cli\u003e\u003cstrong\u003e圖 2：\u003c/strong\u003e中段文字直排顯示 \u003ccode\u003e配、Cube LV 雙軌戰法｜價值底線 × AI 均線回測、YouTube 影片摘要任務、\u003c/code\u003e —— 每字一行，右側可見 \u003ccode\u003e編輯 / 複製連結 / 放上市集 / 刪除\u003c/code\u003e 四按鈕\u003c/li\u003e\n      \u003cli\u003e\u003cstrong\u003e圖 3：\u003c/strong\u003e下段文字直排顯示 \u003ccode\u003e自製研究部、回測紀錄、破底翻信號、凹單戰情、每日研究、技\u003c/code\u003e —— 仍為直排，底部被截斷\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/div\u003e\n  \u003ch3\u003e重現步驟\u003c/h3\u003e\n  \u003col class=\"steps\"\u003e\n    \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e進入市集 → 組合包分頁\u003c/div\u003e\u003cdiv class=\"d\"\u003e頂部頁籤切到 \u003ccode\u003e組合包\u003c/code\u003e（紫色底線），右上角可見 \u003ccode\u003e上架\u003c/code\u003e 按鈕\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e\n    \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e點擊右上角「上架」→ 打開「我的組合包」彈窗\u003c/div\u003e\u003cdiv class=\"d\"\u003e彈窗標題為 \u003ccode\u003e我的組合包\u003c/code\u003e，底部有 \u003ccode\u003e關閉 / 新增組合包\u003c/code\u003e\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e\n    \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e觀察彈窗內卡片文字\u003c/div\u003e\u003cdiv class=\"d\"\u003e任何標題或描述較長的包，在直式窄螢幕下立即復現一字一行直排\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n  \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際行為\u003c/th\u003e\u003cth\u003e預期行為\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\n    \u003ctr\u003e\u003ctd\u003e文字排版\u003c/td\u003e\u003ctd\u003e長字串無空白斷點時被擠成一字一行直排、難讀、底部截斷\u003c/td\u003e\u003ctd\u003e橫向自動換行，必要時 \u003ccode\u003eword-break: break-word / overflow-wrap: anywhere\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e容器寬度\u003c/td\u003e\u003ctd\u003e卡片容器寬度被父層或 flex 擠壓，未設 \u003ccode\u003emin-width: 0\u003c/code\u003e / 正確 flex 比例\u003c/td\u003e\u003ctd\u003e彈窗內卡片 \u003ccode\u003eflex: 1; min-width: 0; width: 100%\u003c/code\u003e，文字區可伸縮且可換行\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e按鈕區\u003c/td\u003e\u003ctd\u003e按鈕與文字擠在同一列導致文字區被壓到僅剩一字寬\u003c/td\u003e\u003ctd\u003e窄螢幕下按鈕自動換行或收合為選單，優先保障文字區可讀寬度\u003c/td\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n  \u003ch3\u003e可能原因推測\u003c/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e彈窗內卡片採用 \u003ccode\u003eflex row\u003c/code\u003e 但文字區未設 \u003ccode\u003emin-width: 0\u003c/code\u003e，導致 flex 子項無法正確收縮\u003c/li\u003e\n    \u003cli\u003e長字串（中文無空格）缺少 \u003ccode\u003eoverflow-wrap / word-break\u003c/code\u003e 處理，瀏覽器以字為單位被迫直排\u003c/li\u003e\n    \u003cli\u003e按鈕區 \u003ccode\u003eflex-shrink: 0\u003c/code\u003e 或固定寬度過大，進一步壓縮文字區\u003c/li\u003e\n    \u003cli\u003e彈窗本身 \u003ccode\u003emax-width / padding\u003c/code\u003e 在窄螢幕下未做響應式調整\u003c/li\u003e\n  \u003c/ul\u003e\n\n  \u003ch2\u003e二、Bug B：已上架組合包無就地「更新版本」入口\u003c/h2\u003e\n  \u003cp\u003e使用者回饋：\u003cem\u003e「我更新自己的組合包要到市集自己去找，無法在發布那邊自己更新版本」\u003c/em\u003e。當前已上架的組合包沒有在「我的上架 / 發布管理」就地更新版本的入口，必須繞回市集，且按鈕語意讓人不敢按。\u003c/p\u003e\n  \u003ch3\u003e當前路徑 vs 期望路徑\u003c/h3\u003e\n  \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e\u003c/th\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e按鈕文案\u003c/th\u003e\u003cth\u003e問題\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\n    \u003ctr\u003e\u003ctd\u003e實際\u003c/td\u003e\u003ctd\u003e市集 → 組合包 → 右上角「上架」→ 我的組合包 → 選包 → 編輯 → 放上市集\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e放上市集\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e藏得深；已上架時仍顯示「放上」而非「更新」，使用者誤以為會建第二包、不敢按\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e預期\u003c/td\u003e\u003ctd\u003e市集 → 我的上架 / 發布管理 → 選已上架包 → 更新版本\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e更新版本 / 同步最新 / 檢視差異\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e就地更新，一鍵把本地最新插件內容同步到線上版，明確提示「將覆蓋線上版」\u003c/td\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n  \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際行為\u003c/th\u003e\u003cth\u003e預期行為\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\n    \u003ctr\u003e\u003ctd\u003e入口\u003c/td\u003e\u003ctd\u003e無獨立「我的上架」更新入口，只能回市集彈窗找\u003c/td\u003e\u003ctd\u003e在「我的上架」列表每包提供 \u003ccode\u003e更新版本\u003c/code\u003e 主按鈕\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e語意\u003c/td\u003e\u003ctd\u003e已上架包仍顯示 \u003ccode\u003e放上市集\u003c/code\u003e，無法區分新建 vs 更新\u003c/td\u003e\u003ctd\u003e已上架 → \u003ccode\u003e更新版本\u003c/code\u003e；未上架 → \u003ccode\u003e放上市集\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e差異提示\u003c/td\u003e\u003ctd\u003e無版本差異提示，無法確認線上是否為最新\u003c/td\u003e\u003ctd\u003e顯示 \u003ccode\u003e本地已更新 / 線上為舊版 / 一致\u003c/code\u003e 標籤，提供 \u003ccode\u003e檢視變更\u003c/code\u003e 與 \u003ccode\u003e一鍵同步\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e結果\u003c/td\u003e\u003ctd\u003e使用者放棄更新，市集上長期停留舊版\u003c/td\u003e\u003ctd\u003e創作者願意頻繁小步更新，市集品質提升\u003c/td\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n  \u003ch3\u003e影響\u003c/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003cspan class=\"pill bad\"\u003e創作者\u003c/span\u003e不敢按「放上市集」，怕重複上架或覆蓋錯誤，乾脆不更新\u003c/li\u003e\n    \u003cli\u003e\u003cspan class=\"pill bad\"\u003e訪客\u003c/span\u003e看到的永遠是舊版，排版 bug 修了也推不上去\u003c/li\u003e\n    \u003cli\u003e與 Bug A 疊加：即使想更新，也因看不懂彈窗內容而無法確認要更新哪一包\u003c/li\u003e\n  \u003c/ul\u003e\n\n  \u003ch2\u003e三、影響範圍\u003c/h2\u003e\n  \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e功能\u003c/th\u003e\u003cth\u003e影響\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\n    \u003ctr\u003e\u003ctd\u003e我的組合包可讀性\u003c/td\u003e\u003ctd\u003e🔴 難讀\u003c/td\u003e\u003ctd\u003e直排文字在所有窄螢幕手機上復現，標題與描述無法閱讀\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e組合包更新\u003c/td\u003e\u003ctd\u003e🟡 阻礙\u003c/td\u003e\u003ctd\u003e無就地更新入口 + 語意不清 → 創作者更新意願低，線上版落後\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e市集品質\u003c/td\u003e\u003ctd\u003e🟡 間接\u003c/td\u003e\u003ctd\u003e舊版長期滯留，訪客體驗受損\u003c/td\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n\n  \u003ch2\u003e四、建議修復方向\u003c/h2\u003e\n  \u003cdiv class=\"grid2\"\u003e\n    \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 01\u003c/div\u003e\u003cdiv class=\"title\"\u003e修彈窗文字容器\u003c/div\u003e\u003cp\u003e文字區加 \u003ccode\u003emin-width: 0; overflow-wrap: anywhere; word-break: break-word;\u003c/code\u003e，按鈕區改為可換行或收合，彈窗加響應式 \u003ccode\u003emax-width: 92vw\u003c/code\u003e。\u003c/p\u003e\u003c/div\u003e\n    \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 02\u003c/div\u003e\u003cdiv class=\"title\"\u003e語意改為「更新版本」\u003c/div\u003e\u003cp\u003e已上架的包按鈕文案改為 \u003ccode\u003e更新版本\u003c/code\u003e，二次確認彈窗寫明「將以本地最新內容覆蓋線上版 vN → vN+1」。\u003c/p\u003e\u003c/div\u003e\n    \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 03\u003c/div\u003e\u003cdiv class=\"title\"\u003e新增就地更新入口\u003c/div\u003e\u003cp\u003e在「我的上架 / 發布管理」列表每包提供 \u003ccode\u003e更新版本 / 檢視差異\u003c/code\u003e，並標示 \u003ccode\u003e本地有更新 / 已是最新\u003c/code\u003e 狀態。\u003c/p\u003e\u003c/div\u003e\n    \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 04\u003c/div\u003e\u003cdiv class=\"title\"\u003e版本差異提示\u003c/div\u003e\u003cp\u003e更新前顯示變更摘要（插件版本、內容差異），更新後回寫新版號與更新時間，減少誤操作焦慮。\u003c/p\u003e\u003c/div\u003e\n  \u003c/div\u003e\n\n  \u003ch2\u003e五、暫時規避（給創作者）\u003c/h2\u003e\n  \u003cul\u003e\n    \u003cli\u003e需更新時走 \u003ccode\u003e市集 → 組合包 → 上架 → 我的組合包 → 編輯 → 放上市集\u003c/code\u003e，點擊「放上市集」即為「覆蓋更新」——\u003cstrong\u003e不會產生第二包\u003c/strong\u003e\u003c/li\u003e\n    \u003cli\u003e文字看不清時，點 \u003ccode\u003e編輯\u003c/code\u003e 進詳情頁即可看到正常橫排的完整內容，確認後再回來按「放上市集」\u003c/li\u003e\n    \u003cli\u003e更新前可先在本地確認插件皆為最新 bundle（本例 2026-09-01 的 bundle 皆為最新），再執行覆蓋\u003c/li\u003e\n  \u003c/ul\u003e\n\n  \u003cdiv class=\"foot\"\u003e\n    \u003cstrong\u003e備註：\u003c/strong\u003eBug A 為純前端 CSS 響應式問題，應可快速 hotfix；Bug B 為流程與文案問題，建議與 FIX 02/03 一併處理。此筆記含三張現場截圖描述，下游可直接對照彈窗 DOM（flex 容器、文字區、按鈕區）定位。\u003cbr\u003e\n    \u003cspan style=\"color:var(--ink-2)\"\u003e分類：市集 · 組合包 · 我的組合包彈窗 \u0026nbsp;|\u0026nbsp; 關鍵字：組合包 / 我的組合包 / 直排 / 跑版 / 更新版本 / 放上市集 / flex / word-break\u003c/span\u003e\n  \u003c/div\u003e\n\u003c/div\u003e","content":"\u003cdiv class=\"doc\"\u003e  \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003eBug A\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e排版跑版\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e彈窗內長字串一字一行直排\u003c/p\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003eBug B\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e無更新入口\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e已上架包無法就地更新版本\u003c/p\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e復現率\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e100%\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e組合包分頁→ 我的組合包即現\u003c/p\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003cp\u003e影響\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e創作者阻礙\u003c/p\u003e\u003c/td\u003e\u003ctd\u003e\u003cp\u003e難讀＋不敢按→ 不敢更新\u003c/p\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout\"\u003e\u003cspan class=\"tag\"\u003e核心判斷\u003c/span\u003e\u003cdiv\u003e\u003cstrong\u003e兩個 bug 在同一張彈窗上疊加：\u003c/strong\u003eBug A 讓人看不懂自己寫的包在講什麼；Bug B 讓人找不到「更新」按鈕 —— 看不懂 + 找不到 ＝ 創作者不會更新，市集上的包就永遠停在舊版。\u003c/div\u003e\u003c/div\u003e \u003ch2\u003e一、Bug A：彈窗直排跑版\u003c/h2\u003e \u003cp\u003e「我的組合包」彈窗內的卡片，標題與描述在窄螢幕下被壓成\u003cstrong\u003e垂直直排、一字一行\u003c/strong\u003e，應為橫向自動換行。此為容器寬度計算錯誤，非手機設定問題。\u003c/p\u003e \u003cdiv class=\"shot\"\u003e \u003cdiv class=\"cap\"\u003e截圖證據（2026-09-01 15:32，三張連續截圖同一彈窗上下捲動）\u003c/div\u003e \u003cul\u003e \u003cli\u003e\u003cstrong\u003e圖 1：\u003c/strong\u003e左側文字直排顯示 \u003ccode\u003e金額：稅率改 0.2% 支援小數股、破底翻選、總經資金面分析師\u003c/code\u003e —— 每字一行\u003c/li\u003e \u003cli\u003e\u003cstrong\u003e圖 2：\u003c/strong\u003e中段文字直排顯示 \u003ccode\u003e配、Cube LV 雙軌戰法｜價值底線 × AI 均線回測、YouTube 影片摘要任務、\u003c/code\u003e —— 每字一行，右側可見 \u003ccode\u003e編輯 / 複製連結 / 放上市集 / 刪除\u003c/code\u003e 四按鈕\u003c/li\u003e \u003cli\u003e\u003cstrong\u003e圖 3：\u003c/strong\u003e下段文字直排顯示 \u003ccode\u003e自製研究部、回測紀錄、破底翻信號、凹單戰情、每日研究、技\u003c/code\u003e —— 仍為直排，底部被截斷\u003c/li\u003e \u003c/ul\u003e \u003c/div\u003e \u003ch3\u003e重現步驟\u003c/h3\u003e \u003col class=\"steps\"\u003e \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e進入市集 → 組合包分頁\u003c/div\u003e\u003cdiv class=\"d\"\u003e頂部頁籤切到 \u003ccode\u003e組合包\u003c/code\u003e（紫色底線），右上角可見 \u003ccode\u003e上架\u003c/code\u003e 按鈕\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e點擊右上角「上架」→ 打開「我的組合包」彈窗\u003c/div\u003e\u003cdiv class=\"d\"\u003e彈窗標題為 \u003ccode\u003e我的組合包\u003c/code\u003e，底部有 \u003ccode\u003e關閉 / 新增組合包\u003c/code\u003e\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e \u003cli\u003e\u003cdiv\u003e\u003cdiv class=\"t\"\u003e觀察彈窗內卡片文字\u003c/div\u003e\u003cdiv class=\"d\"\u003e任何標題或描述較長的包，在直式窄螢幕下立即復現一字一行直排\u003c/div\u003e\u003c/div\u003e\u003c/li\u003e \u003c/ol\u003e \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際行為\u003c/th\u003e\u003cth\u003e預期行為\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e \u003ctr\u003e\u003ctd\u003e文字排版\u003c/td\u003e\u003ctd\u003e長字串無空白斷點時被擠成一字一行直排、難讀、底部截斷\u003c/td\u003e\u003ctd\u003e橫向自動換行，必要時 \u003ccode\u003eword-break: break-word / overflow-wrap: anywhere\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e容器寬度\u003c/td\u003e\u003ctd\u003e卡片容器寬度被父層或 flex 擠壓，未設 \u003ccode\u003emin-width: 0\u003c/code\u003e / 正確 flex 比例\u003c/td\u003e\u003ctd\u003e彈窗內卡片 \u003ccode\u003eflex: 1; min-width: 0; width: 100%\u003c/code\u003e，文字區可伸縮且可換行\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e按鈕區\u003c/td\u003e\u003ctd\u003e按鈕與文字擠在同一列導致文字區被壓到僅剩一字寬\u003c/td\u003e\u003ctd\u003e窄螢幕下按鈕自動換行或收合為選單，優先保障文字區可讀寬度\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e \u003ch3\u003e可能原因推測\u003c/h3\u003e \u003cul\u003e \u003cli\u003e彈窗內卡片採用 \u003ccode\u003eflex row\u003c/code\u003e 但文字區未設 \u003ccode\u003emin-width: 0\u003c/code\u003e，導致 flex 子項無法正確收縮\u003c/li\u003e \u003cli\u003e長字串（中文無空格）缺少 \u003ccode\u003eoverflow-wrap / word-break\u003c/code\u003e 處理，瀏覽器以字為單位被迫直排\u003c/li\u003e \u003cli\u003e按鈕區 \u003ccode\u003eflex-shrink: 0\u003c/code\u003e 或固定寬度過大，進一步壓縮文字區\u003c/li\u003e \u003cli\u003e彈窗本身 \u003ccode\u003emax-width / padding\u003c/code\u003e 在窄螢幕下未做響應式調整\u003c/li\u003e \u003c/ul\u003e \u003ch2\u003e二、Bug B：已上架組合包無就地「更新版本」入口\u003c/h2\u003e \u003cp\u003e使用者回饋：\u003cem\u003e「我更新自己的組合包要到市集自己去找，無法在發布那邊自己更新版本」\u003c/em\u003e。當前已上架的組合包沒有在「我的上架 / 發布管理」就地更新版本的入口，必須繞回市集，且按鈕語意讓人不敢按。\u003c/p\u003e \u003ch3\u003e當前路徑 vs 期望路徑\u003c/h3\u003e \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e\u003c/th\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e按鈕文案\u003c/th\u003e\u003cth\u003e問題\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e \u003ctr\u003e\u003ctd\u003e實際\u003c/td\u003e\u003ctd\u003e市集 → 組合包 → 右上角「上架」→ 我的組合包 → 選包 → 編輯 → 放上市集\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e放上市集\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e藏得深；已上架時仍顯示「放上」而非「更新」，使用者誤以為會建第二包、不敢按\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e預期\u003c/td\u003e\u003ctd\u003e市集 → 我的上架 / 發布管理 → 選已上架包 → 更新版本\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e更新版本 / 同步最新 / 檢視差異\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e就地更新，一鍵把本地最新插件內容同步到線上版，明確提示「將覆蓋線上版」\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際行為\u003c/th\u003e\u003cth\u003e預期行為\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e \u003ctr\u003e\u003ctd\u003e入口\u003c/td\u003e\u003ctd\u003e無獨立「我的上架」更新入口，只能回市集彈窗找\u003c/td\u003e\u003ctd\u003e在「我的上架」列表每包提供 \u003ccode\u003e更新版本\u003c/code\u003e 主按鈕\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e語意\u003c/td\u003e\u003ctd\u003e已上架包仍顯示 \u003ccode\u003e放上市集\u003c/code\u003e，無法區分新建 vs 更新\u003c/td\u003e\u003ctd\u003e已上架 → \u003ccode\u003e更新版本\u003c/code\u003e；未上架 → \u003ccode\u003e放上市集\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e差異提示\u003c/td\u003e\u003ctd\u003e無版本差異提示，無法確認線上是否為最新\u003c/td\u003e\u003ctd\u003e顯示 \u003ccode\u003e本地已更新 / 線上為舊版 / 一致\u003c/code\u003e 標籤，提供 \u003ccode\u003e檢視變更\u003c/code\u003e 與 \u003ccode\u003e一鍵同步\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e結果\u003c/td\u003e\u003ctd\u003e使用者放棄更新，市集上長期停留舊版\u003c/td\u003e\u003ctd\u003e創作者願意頻繁小步更新，市集品質提升\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e \u003ch3\u003e影響\u003c/h3\u003e \u003cul\u003e \u003cli\u003e\u003cspan class=\"pill bad\"\u003e創作者\u003c/span\u003e不敢按「放上市集」，怕重複上架或覆蓋錯誤，乾脆不更新\u003c/li\u003e \u003cli\u003e\u003cspan class=\"pill bad\"\u003e訪客\u003c/span\u003e看到的永遠是舊版，排版 bug 修了也推不上去\u003c/li\u003e \u003cli\u003e與 Bug A 疊加：即使想更新，也因看不懂彈窗內容而無法確認要更新哪一包\u003c/li\u003e \u003c/ul\u003e \u003ch2\u003e三、影響範圍\u003c/h2\u003e \u003cdiv class=\"tableWrap\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e功能\u003c/th\u003e\u003cth\u003e影響\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e \u003ctr\u003e\u003ctd\u003e我的組合包可讀性\u003c/td\u003e\u003ctd\u003e🔴 難讀\u003c/td\u003e\u003ctd\u003e直排文字在所有窄螢幕手機上復現，標題與描述無法閱讀\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e組合包更新\u003c/td\u003e\u003ctd\u003e🟡 阻礙\u003c/td\u003e\u003ctd\u003e無就地更新入口 + 語意不清 → 創作者更新意願低，線上版落後\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e市集品質\u003c/td\u003e\u003ctd\u003e🟡 間接\u003c/td\u003e\u003ctd\u003e舊版長期滯留，訪客體驗受損\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e \u003ch2\u003e四、建議修復方向\u003c/h2\u003e \u003cdiv class=\"grid2\"\u003e \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 01\u003c/div\u003e\u003cdiv class=\"title\"\u003e修彈窗文字容器\u003c/div\u003e\u003cp\u003e文字區加 \u003ccode\u003emin-width: 0; overflow-wrap: anywhere; word-break: break-word;\u003c/code\u003e，按鈕區改為可換行或收合，彈窗加響應式 \u003ccode\u003emax-width: 92vw\u003c/code\u003e。\u003c/p\u003e\u003c/div\u003e \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 02\u003c/div\u003e\u003cdiv class=\"title\"\u003e語意改為「更新版本」\u003c/div\u003e\u003cp\u003e已上架的包按鈕文案改為 \u003ccode\u003e更新版本\u003c/code\u003e，二次確認彈窗寫明「將以本地最新內容覆蓋線上版 vN → vN+1」。\u003c/p\u003e\u003c/div\u003e \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 03\u003c/div\u003e\u003cdiv class=\"title\"\u003e新增就地更新入口\u003c/div\u003e\u003cp\u003e在「我的上架 / 發布管理」列表每包提供 \u003ccode\u003e更新版本 / 檢視差異\u003c/code\u003e，並標示 \u003ccode\u003e本地有更新 / 已是最新\u003c/code\u003e 狀態。\u003c/p\u003e\u003c/div\u003e \u003cdiv class=\"card\"\u003e\u003cdiv class=\"num\"\u003eFIX 04\u003c/div\u003e\u003cdiv class=\"title\"\u003e版本差異提示\u003c/div\u003e\u003cp\u003e更新前顯示變更摘要（插件版本、內容差異），更新後回寫新版號與更新時間，減少誤操作焦慮。\u003c/p\u003e\u003c/div\u003e \u003c/div\u003e \u003ch2\u003e五、暫時規避（給創作者）\u003c/h2\u003e \u003cul\u003e \u003cli\u003e需更新時走 \u003ccode\u003e市集 → 組合包 → 上架 → 我的組合包 → 編輯 → 放上市集\u003c/code\u003e，點擊「放上市集」即為「覆蓋更新」——\u003cstrong\u003e不會產生第二包\u003c/strong\u003e\u003c/li\u003e \u003cli\u003e文字看不清時，點 \u003ccode\u003e編輯\u003c/code\u003e 進詳情頁即可看到正常橫排的完整內容，確認後再回來按「放上市集」\u003c/li\u003e \u003cli\u003e更新前可先在本地確認插件皆為最新 bundle（本例 2026-09-01 的 bundle 皆為最新），再執行覆蓋\u003c/li\u003e \u003c/ul\u003e \u003cdiv class=\"foot\"\u003e \u003cstrong\u003e備註：\u003c/strong\u003eBug A 為純前端 CSS 響應式問題，應可快速 hotfix；Bug B 為流程與文案問題，建議與 FIX 02/03 一併處理。此筆記含三張現場截圖描述，下游可直接對照彈窗 DOM（flex 容器、文字區、按鈕區）定位。\u003cbr\u003e \u003cspan style=\"color:var(--ink-2)\"\u003e分類：市集 · 組合包 · 我的組合包彈窗 \u0026nbsp;|\u0026nbsp; 關鍵字：組合包 / 我的組合包 / 直排 / 跑版 / 更新版本 / 放上市集 / flex / word-break\u003c/span\u003e \u003c/div\u003e \u003c/div\u003e","createdAt":1788248349540,"deletedAt":null,"displayMode":"artifact","embedRenders":{},"id":"c13832797c28fc6df44ca26b","isNew":false,"isPublic":true,"itemType":"NOTE","name":"CubeLV 平台 Bug 回報：市集「我的組合包」彈窗直排跑版＋已上架組合包無就地更新入口","parents":{"4465d0a863da5d1b345d888c":1788248349540},"preParentID":null,"updatedAt":1789093071188,"updatedBy":{"userId":"6a3dcfc700e9b9fd06d5ef","userName":"蔡其樺"},"version":6}]}