diff --git a/01_content/src/client/styles.ts b/01_content/src/client/styles.ts index 871f938..9d117be 100644 --- a/01_content/src/client/styles.ts +++ b/01_content/src/client/styles.ts @@ -52,7 +52,7 @@ export const css = [ '.dsh-wt_manageRow:hover{border-color:var(--dsw-alias-border-l2,#3a4150)}', '.dsh-wt_manageRowOff{opacity:.45}', '.dsh-wt_manageGrip{flex:none;color:var(--dsw-alias-label-tertiary,#6e7683);font-size:12px;cursor:grab;user-select:none;-webkit-user-select:none}', - '.dsh-wt_manageIcon{flex:none;width:18px;font-size:13px;text-align:center}', + '.dsh-wt_manageIcon{flex:none;width:20px;font-size:15px;text-align:center}', '.dsh-wt_manageInput{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--dsw-alias-label-primary,#e6e8eb);font:inherit;font-size:12px;line-height:18px;padding:2px 0}', '.dsh-wt_manageBtn{flex:none;display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--dsw-alias-label-secondary,#9aa4b2);font-size:11px;line-height:1;cursor:pointer}', '.dsh-wt_manageBtn:hover{color:var(--dsw-alias-label-primary,#e6e8eb);background:var(--dsw-alias-fill-l1,rgba(255,255,255,.06))}', @@ -63,7 +63,7 @@ export const css = [ '.dsh-wt_shortcuts{display:flex;flex-direction:column;gap:4px}', '.dsh-wt_shortcut{display:flex;align-items:center;gap:7px;padding:6px 8px;border:1px solid var(--dsw-alias-border-l1,#262b36);border-radius:8px;background:var(--dsw-alias-fill-l1,rgba(255,255,255,.02));color:var(--dsw-alias-label-primary,#e6e8eb);text-decoration:none;font-size:12px;line-height:18px}', '.dsh-wt_shortcut:hover{border-color:var(--dsw-alias-state-accent-primary,#4f8ef7);background:var(--dsw-alias-fill-l1,rgba(255,255,255,.05))}', - '.dsh-wt_shortcutIcon{flex:none;font-size:13px}', + '.dsh-wt_shortcutIcon{flex:none;font-size:15px}', '.dsh-wt_shortcutName{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}', '.dsh-wt_shortcutBadge{flex:none;font-size:9px;line-height:14px;padding:0 5px;border-radius:8px;background:var(--dsw-alias-fill-l1,rgba(255,255,255,.06));color:var(--dsw-alias-label-tertiary,#6e7683)}', // 项目区 @@ -101,7 +101,7 @@ export const css = [ '.dsh-wt_layout:hover{border-color:var(--dsw-alias-state-accent-primary,#4f8ef7);background:var(--dsw-alias-fill-l1,rgba(255,255,255,.05))}', '.dsh-wt_layout[data-on=true]{border-color:var(--dsw-alias-state-accent-primary,#4f8ef7);background:var(--dsw-alias-fill-l1,rgba(255,255,255,.05))}', '.dsh-wt_layout[data-on=true] .dsh-wt_layoutName{color:var(--dsw-alias-state-accent-primary,#4f8ef7)}', - '.dsh-wt_layoutIcon{flex:none;font-size:13px}', + '.dsh-wt_layoutIcon{flex:none;font-size:15px}', '.dsh-wt_layoutText{flex:1;min-width:0;display:flex;flex-direction:column;gap:0}', '.dsh-wt_layoutName{font-size:12px;font-weight:400;line-height:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}', '.dsh-wt_layoutArrow{flex:none;color:var(--dsw-alias-label-tertiary,#6e7683);font-size:14px;line-height:20px}', @@ -119,13 +119,15 @@ export const css = [ '.dsh-wt_iconCell:hover{background:var(--dsw-alias-fill-l1,rgba(255,255,255,.05));border-color:var(--dsw-alias-border-l2,#3a4150)}', '.dsh-wt_iconCell[data-on=true]{background:var(--dsw-alias-fill-l1,rgba(255,255,255,.08));border-color:var(--dsw-alias-state-accent-primary,#4f8ef7)}', // 可点图标(布局卡 / 管理行 / 快捷方式上的图标,点击换 emoji) - '.dsh-wt_iconPick{flex:none;display:inline-flex;align-items:center;justify-content:center;padding:1px;border:none;background:transparent;font:inherit;cursor:pointer;border-radius:4px}', + '.dsh-wt_iconPick{flex:none;display:inline-flex;align-items:center;justify-content:center;padding:1px;border:none;background:transparent;cursor:pointer;border-radius:4px}', '.dsh-wt_iconPick:hover{background:var(--dsw-alias-fill-l1,rgba(255,255,255,.08))}', + // 四类项目卡片统一竖向高度(常驻×2 / 布局 / 快捷方式;新建条目自动继承) + '.dsh-wt_projects .ta_card,.dsh-wt_projects .pr_card,.dsh-wt_layout,.dsh-wt_shortcut{height:34px;box-sizing:border-box}', // 入驻项目卡片图标覆盖:data-wt-icon 存在时用 attr() 替换显示(原字符字号压到 0) '.dsh-wt_projects .ta_cardIcon[data-wt-icon],.dsh-wt_projects .pr_cardIcon[data-wt-icon]{font-size:0;line-height:20px}', - '.dsh-wt_projects .ta_cardIcon[data-wt-icon]::before,.dsh-wt_projects .pr_cardIcon[data-wt-icon]::before{content:attr(data-wt-icon);font-size:13px;line-height:20px}', - // 常驻项目卡片与新建项目统一:emoji 字号 13px、名称不加粗 - '.dsh-wt_projects .ta_cardIcon,.dsh-wt_projects .pr_cardIcon{font-size:13px;line-height:20px}', + '.dsh-wt_projects .ta_cardIcon[data-wt-icon]::before,.dsh-wt_projects .pr_cardIcon[data-wt-icon]::before{content:attr(data-wt-icon);font-size:15px;line-height:20px}', + // 常驻项目卡片与新建项目统一:emoji 字号 15px、名称不加粗 + '.dsh-wt_projects .ta_cardIcon,.dsh-wt_projects .pr_cardIcon{font-size:15px;line-height:20px}', '.dsh-wt_projects .ta_cardName,.dsh-wt_projects .pr_cardName{font-weight:400}', // 头部按钮内的官方 SVG 图标 '.dsh-wt_iconBtn svg{display:block}', diff --git a/02_process/worklogs/2026-08-16_worktable-v2.md b/02_process/worklogs/2026-08-16_worktable-v2.md index 2327b48..6f1f2d6 100644 --- a/02_process/worklogs/2026-08-16_worktable-v2.md +++ b/02_process/worklogs/2026-08-16_worktable-v2.md @@ -570,3 +570,15 @@ 管理行 ✕ → confirmShown=true → 取消(卡片仍在)→ 再 ✕ 删除 → cardsAfter pr:0 + removed=['planreview']; 布局 ✕ 确认后 layoutsLeft=0;rowsAfterDelete=2;全 STEP 回归 ERROR_COUNT: 0。 - 备注:纯客户端改动,F5 即生效,无需重启 dsh web。 +## 补记(图标统一放大 15px + 四类卡片竖向高度统一) + +- 用户反馈:① 项目 emoji 放大到 15;② 现有四个项目卡片框的竖向高度不一致,统一; + ③ 后续新建的项目也要继承统一高度。 +- 处理: + ① 全部项目图标 15px:布局卡/快捷方式/常驻卡(含 data-wt-icon ::before 覆盖)/管理行(20px 盒); + 顺带修掉 .dsh-wt_iconPick 的 font:inherit 简写(会把字号重置回父级 12px,覆盖 15px 设置)。 + ② 四类卡片统一 height:34px + box-sizing:border-box:.ta_card/.pr_card/.dsh-wt_layout/.dsh-wt_shortcut; + 按类名生效,新建条目自动继承。 +- 验证(functional-diag STEP10 扩展 + 种子加 1 条快捷方式):heights ta/pr/layout/shortcut 全 34px; + 四类图标 computed 全 15px;删除确认等既有断言不变;ERRORS_COUNT: 0。 +- 备注:纯客户端改动,F5 即生效,无需重启 dsh web。 diff --git a/04_test/functional-diag.cjs b/04_test/functional-diag.cjs index 19323fa..fb5e2b2 100644 --- a/04_test/functional-diag.cjs +++ b/04_test/functional-diag.cjs @@ -48,7 +48,7 @@ const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); await send('Log.enable'); await send('Page.enable'); await send('Page.addScriptToEvaluateOnNewDocument', { - source: "try{ if(location.origin==='http://127.0.0.1:3080'){ localStorage.setItem('dsh.worktable.view.v1', JSON.stringify({query:'',searchOpen:false,orderBy:'manual',dock:'footer',floatTop:null,sortMigratedV2:true})); localStorage.setItem('dsh.worktable.projects.v1', JSON.stringify({order:[],lastUsed:{},hidden:[],nameOverrides:{},shortcuts:[],layouts:[{id:'t-layout',title:'\u6d4b\u8bd5\u5e03\u5c40',top:null,left:null,main:[{id:'p1',title:'\u5185\u5bb91',min:200,content:null}],leftWidth:{default:260,min:160,max:480},chatWidth:{default:360,min:240,max:600},topHeight:{default:200,min:120,max:480},chatSide:'right',chatFullHeight:false}]})); } }catch(e){}", + source: "try{ if(location.origin==='http://127.0.0.1:3080'){ localStorage.setItem('dsh.worktable.view.v1', JSON.stringify({query:'',searchOpen:false,orderBy:'manual',dock:'footer',floatTop:null,sortMigratedV2:true})); localStorage.setItem('dsh.worktable.projects.v1', JSON.stringify({order:[],lastUsed:{},hidden:[],nameOverrides:{},shortcuts:[{id:'t-sc',name:'\u6d4b\u8bd5\u5feb\u6377',icon:'\ud83d\udd17',href:'https://example.com'}],layouts:[{id:'t-layout',title:'\u6d4b\u8bd5\u5e03\u5c40',top:null,left:null,main:[{id:'p1',title:'\u5185\u5bb91',min:200,content:null}],leftWidth:{default:260,min:160,max:480},chatWidth:{default:360,min:240,max:600},topHeight:{default:200,min:120,max:480},chatSide:'right',chatFullHeight:false}]})); } }catch(e){}", }); await send('Page.navigate', { url: 'http://127.0.0.1:3080/' }); await sleep(11000); @@ -192,12 +192,18 @@ const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); var out={}; var prIcon=document.querySelector('.dsh-wt_projects .pr_cardIcon'); var taIcon=document.querySelector('.dsh-wt_projects .ta_cardIcon'); + var layIcon=document.querySelector('.dsh-wt_layoutIcon'); + var scIcon=document.querySelector('.dsh-wt_shortcutIcon'); var taName=document.querySelector('.dsh-wt_projects .ta_cardName'); var laName=document.querySelector('.dsh-wt_layoutName'); if(prIcon) out.prIconSize=getComputedStyle(prIcon).fontSize; if(taIcon) out.taIconBeforeSize=getComputedStyle(taIcon,'::before').fontSize; + if(layIcon) out.layIconSize=getComputedStyle(layIcon).fontSize; + if(scIcon) out.scIconSize=getComputedStyle(scIcon).fontSize; if(taName) out.taNameWeight=getComputedStyle(taName).fontWeight; if(laName) out.laNameWeight=getComputedStyle(laName).fontWeight; + function h(sel){ var el=document.querySelector(sel); return el?Math.round(el.getBoundingClientRect().height):null; } + out.heights={ta:h('.dsh-wt_projects .ta_card'),pr:h('.dsh-wt_projects .pr_card'),layout:h('.dsh-wt_layout'),shortcut:h('.dsh-wt_shortcut')}; out.cardsBefore={ta:document.querySelectorAll('.dsh-wt_projects .ta_card').length,pr:document.querySelectorAll('.dsh-wt_projects .pr_card').length}; var btn=document.querySelector('.dsh-wt_actions .dsh-wt_iconBtn:nth-child(2)'); if(btn){ btn.click(); } @@ -227,7 +233,7 @@ const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); out.cardsAfter={ta:document.querySelectorAll('.dsh-wt_projects .ta_card').length,pr:document.querySelectorAll('.dsh-wt_projects .pr_card').length}; try{ out.removed=JSON.parse(localStorage.getItem('dsh.worktable.projects.v1')).removed }catch(e){ out.removed='ERR' } out.rowsAfterDelete=document.querySelectorAll('.dsh-wt_manage.dsh-wt_pop .dsh-wt_manageRow').length; - var rows3=document.querySelectorAll('.dsh-wt_manage.dsh-wt_pop .dsh-wt_manageRow'); + var rows3=document.querySelectorAll('.dsh-wt_manage.dsh-wt_pop .dsh-wt_manageRow:not(.dsh-wt_manageRowSc)'); var lastRow=rows3[rows3.length-1]; var xBtn3=lastRow&&lastRow.querySelectorAll('.dsh-wt_manageBtn')[lastRow.querySelectorAll('.dsh-wt_manageBtn').length-1]; if(xBtn3){ xBtn3.click(); }