@ash-qw/dsh-theme-prts 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -64,7 +64,7 @@ function settingButtons(key, label, options) {
64
64
  : key === 'sessionFlowPalette'
65
65
  ? '<small data-prts-setting-note>同时适配日间与夜间模式</small>'
66
66
  : ''
67
- if (['cursor', 'railDefaultHidden', 'sessionFlow', 'sessionGlow', 'bakerGroupAvatars', 'conversationEmblem', 'sessionPreview', 'previewOngoing', 'previewWarning', 'previewDone', 'previewDoubleClick'].includes(key)) return `<div data-prts-setting-row="${key}">
67
+ if (['cursor', 'railDefaultHidden', 'sessionFlow', 'sessionGlow', 'bakerGroupAvatars', 'conversationEmblem', 'sessionPreview', 'previewOngoing', 'previewWarning', 'previewDone', 'previewDoubleClick', 'previewFollowOngoing', 'previewFollowWarning'].includes(key)) return `<div data-prts-setting-row="${key}">
68
68
  <span><strong>${label}</strong>${note}</span>
69
69
  <button type="button" role="switch" aria-label="${label}" aria-checked="false" data-prts-setting-switch="${key}" ${key === 'cursor' ? 'data-prts-cursor-switch' : ''}><span aria-hidden="true"></span></button>
70
70
  </div>`
@@ -195,8 +195,16 @@ export function themeSettingsMarkup() {
195
195
  <section data-prts-preview-setting-group>
196
196
  <header><strong>悬停预览</strong><small>选择哪些状态显示详细浮窗</small></header>
197
197
  ${previewSetting('previewOngoing', '运行中预览', '逐轮查看已完成的回复,最新内容置顶')}
198
+ <div data-prts-preview-details="previewOngoing">
199
+ <label data-prts-setting-row="previewReplyLimit"><span><strong>回复条数</strong><small data-prts-preview-setting-description>仅保留最新回复</small></span><select data-prts-preview-reply-limit aria-label="最多显示回复"><option value="5">最新 5 条</option><option value="10">最新 10 条</option><option value="0">不限制</option></select></label>
200
+ ${previewSetting('previewFollowOngoing', '运行结束后跟随', '转为待处理或已完成时,自动切换预览')}
201
+ </div>
198
202
  ${previewSetting('previewWarning', '待处理预览(回答与审批)', '查看问题或审批请求,并直接提交选择')}
203
+ <div data-prts-preview-details="previewWarning">
204
+ ${previewSetting('previewFollowWarning', '待处理结束后跟随', '回答或审批后继续跟随;关闭则留在待处理列表')}
205
+ </div>
199
206
  ${previewSetting('previewDone', '已完成预览', '查看本轮最终回复')}
207
+
200
208
  </section>
201
209
  <section data-prts-preview-setting-group>
202
210
  <header><strong>快捷操作</strong></header>
@@ -515,6 +523,11 @@ export function createThemeSettingsOverlay({
515
523
  toggle.setAttribute('aria-checked', String(enabled))
516
524
  toggle.classList.toggle('is-active', enabled)
517
525
  }
526
+ const replyLimitSelect = panel.querySelector('[data-prts-preview-reply-limit]')
527
+ if (replyLimitSelect) replyLimitSelect.value = String(currentPreferences.previewReplyLimit)
528
+ const replyLimitRow = panel.querySelector('[data-prts-setting-row="previewReplyLimit"]')
529
+ if (replyLimitRow) replyLimitRow.hidden = currentPreferences.previewOngoing === false
530
+ for (const details of panel.querySelectorAll('[data-prts-preview-details]')) details.hidden = currentPreferences[details.dataset.prtsPreviewDetails] === false
518
531
  const previewOptions = panel.querySelector('[data-prts-preview-options]')
519
532
  if (previewOptions) previewOptions.hidden = currentPreferences.sessionPreview === false
520
533
  for (const key of ['sessionGlow', 'sessionFlowPalette', 'sessionFlowColors', 'sessionFlowSpeed']) {
@@ -636,6 +649,7 @@ export function createThemeSettingsOverlay({
636
649
 
637
650
  function onPanelInput(event) {
638
651
  const target = event.target
652
+ if (target?.matches?.('[data-prts-preview-reply-limit]')) { onPreferenceChange('previewReplyLimit', Number(target.value)); return }
639
653
  if (target?.matches?.('input[data-prts-setting-color]')) {
640
654
  const key = target.dataset.prtsSettingKey
641
655
  const value = normalizeSessionFlowColor(target.value, currentSessionFlowColor(key))
@@ -775,3 +775,8 @@ html[data-dsh-prts] [data-prts-reply-entry]:is(:hover,:focus-visible,[data-prts-
775
775
  html[data-dsh-prts] [data-prts-reply-entry] small { flex:0 0 auto;white-space:nowrap;padding-top:2px;color:var(--prts-muted);font:10px/1.5 var(--prts-mono); }
776
776
  html[data-dsh-prts] [data-prts-reply-entry] span { min-width:0;flex:1;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font:12px/1.6 var(--prts-body);overflow-wrap:anywhere; }
777
777
  html[data-dsh-prts] [data-prts-reply-detail]:not([data-prts-preview-question]) > [data-prts-preview-body] { max-height:190px; }
778
+
779
+ html[data-dsh-prts] [data-prts-preview-marker] { display:none;flex:none;margin-left:auto;color:var(--prts-muted);font:600 9px/1.4 var(--prts-body); }
780
+ html[data-dsh-prts] [data-prts-preview-active] > [data-prts-preview-marker] { display:block; }
781
+ html[data-dsh-prts] [data-prts-session-summary-item][data-prts-preview-active] { box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--prts-ink) 30%,transparent);border-top-color:transparent;border-radius:5px;background:color-mix(in srgb,currentColor 9%,transparent); }
782
+ html[data-dsh-prts] [data-prts-preview-session-title] { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:5px;color:var(--prts-muted);font:400 11px/1.5 var(--prts-body); }
@@ -920,6 +920,13 @@ html[data-dsh-prts] [data-prts-preview-settings] {
920
920
  & [data-prts-setting-row] { display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 0;border:0;background:none; }
921
921
  & [data-prts-setting-row] > span { display:grid;gap:5px;min-width:0; }
922
922
  & [data-prts-setting-row] strong { font:600 12px/1.5 var(--prts-body); }
923
+ & [data-prts-setting-row="previewReplyLimit"] { padding:0 0 14px;gap:12px; }
924
+ & [data-prts-setting-row="previewReplyLimit"] strong { color:var(--prts-muted);font-size:11px; }
925
+ & [data-prts-preview-reply-limit] { min-width:112px;padding:7px 10px;border:1px solid var(--prts-line);border-radius:5px;background:var(--prts-panel-raised);color:var(--prts-ink);font:400 11px/1.5 var(--prts-body); }
926
+ & [data-prts-preview-reply-limit]:focus-visible { outline:2px solid var(--prts-ink);outline-offset:2px; }
927
+ & [data-prts-preview-details] { padding:0 12px;margin:0 -12px 8px 0;border-radius:5px;background:color-mix(in srgb,var(--prts-ink) 3%,transparent); }
928
+ & [data-prts-preview-details] [data-prts-setting-row] { padding:10px 0; }
929
+ & [data-prts-preview-details] [data-prts-setting-row] strong { font-size:11px; }
923
930
  & [data-prts-preview-setting-description] { color:var(--prts-muted);font:400 11px/1.6 var(--prts-body); }
924
931
  & [data-prts-preview-master] { padding:8px 20px;background:color-mix(in srgb,var(--prts-yellow) 5%,transparent); }
925
932
  & [data-prts-preview-master] [data-prts-setting-row] strong { font-size:14px; }