Greasy Fork

Greasy Fork is available in English.

智谱清言(ChatGLM) - 侧边栏会话跳转导航 | ChatGLM Sidebar Navigator

为智谱清言(ChatGLM.cn)添加右侧悬浮侧边栏。核心功能:1. 双重视图:支持无缝切换"宝石连线"与"问题列表"模式;2. 布局锁死:修复内容溢出问题,按钮永远可见;3. 会话跳转:自动生成问题锚点,平滑滚动定位;4. 智能记忆:自动记录星标节点。

当前为 2025-11-22 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         智谱清言(ChatGLM) - 侧边栏会话跳转导航 | ChatGLM Sidebar Navigator
// @namespace    https://github.com/sakura11111111111111/ChatGLM-Sidebar-Jump-Axis
// @version      1.0.1
// @description  为智谱清言(ChatGLM.cn)添加右侧悬浮侧边栏。核心功能:1. 双重视图:支持无缝切换"宝石连线"与"问题列表"模式;2. 布局锁死:修复内容溢出问题,按钮永远可见;3. 会话跳转:自动生成问题锚点,平滑滚动定位;4. 智能记忆:自动记录星标节点。
// @author       [email protected]
// @match        https://chatglm.cn/*
// @icon         https://chatglm.cn/img/icons/favicon.svg
// @license      MIT
// @homepageURL  https://space.bilibili.com/497930349
// @supportURL   https://github.com/sakura11111111111111/ChatGLM-Sidebar-Jump-Axis/issues
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  // === 1. 宝石素材库 (请在此处填入 Base64 字符串) ===
  // 星标态 
     const GEM_STAR ="data:image/png;base64,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"



  // 默认态 
     const GEM_NORMAL ="data:image/png;base64,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"



  // === 2. 智能记忆系统 ===
  function getChatId(fallbackText) {
    const match = window.location.href.match(/\/(detail|share)\/([a-zA-Z0-9]+)/);
    if (match) return match[2];
    let fingerprint = document.title;
    if (fallbackText) fingerprint += "_" + fallbackText.replace(/\s/g, '').slice(0, 15);
    return "session_" + fingerprint;
  }
  function getStarredList(cid) {
    const raw = localStorage.getItem(`chatglm_stars_${cid}`);
    return raw ? JSON.parse(raw) : [];
  }
  function saveStarredList(cid, list) {
    localStorage.setItem(`chatglm_stars_${cid}`, JSON.stringify(list));
  }
  function toggleStar(qid, cid) {
    let list = getStarredList(cid);
    const idx = list.indexOf(qid);
    if (idx === -1) list.push(qid); else list.splice(idx, 1);
    saveStarredList(cid, list);
    return idx === -1;
  }

  // === 3. 样式定义 ===
  // 核心策略:[PART A] 完全复用 V13.2 的原始样式作为基准。 [PART B] 将列表模式作为独立扩展。
  const STYLES = `
        /* ========================================= */
        /* [PART A] 原始 V13.2 宝石模式核心样式 (严格复刻) */
        /* ========================================= */

        /* 高亮动画 */
        @keyframes glm-highlight-pulse {
            0% { box-shadow: 0 0 0 transparent; background-color: transparent; border-color: transparent; }
            30% { box-shadow: 0 0 25px rgba(64, 158, 255, 0.6); background-color: rgba(64, 158, 255, 0.1); border-color: rgba(64, 158, 255, 0.8); }
            100% { box-shadow: 0 0 0 transparent; background-color: transparent; border-color: transparent; }
        }
        .glm-flash-target {
            animation: glm-highlight-pulse 1.8s ease-out forwards;
            border: 1px solid transparent;
            border-radius: 8px;
        }

        /* === 外层包裹器 (Layout Fix) === */
        #glm-nav-wrapper {
            position: fixed;
            right: 30px;
            top: 50%;
            transform: translateY(-50%);
            max-height: 80vh;
            height: auto;
            display: flex;
            flex-direction: column;
            align-items: center;
            z-index: 99998;
            transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1), right 0.4s ease, width 0.3s ease, background 0.3s, padding 0.3s;

            /* 默认状态 */
            width: 50px; padding: 0; border-radius: 0; background: transparent; border: none;
        }

        /* 折叠状态 */
        #glm-nav-wrapper.collapsed {
            transform: translateY(-50%) translateX(80px);
            right: 20px;
            pointer-events: none;
        }

        /* === 主内容区 === */
        #glm-nav-main-content {
            display: flex;
            flex-direction: column;
            align-items: center;
            width: 100%;
            flex: 1;
            min-height: 0;
            transition: opacity 0.3s;
        }

        #glm-nav-wrapper.collapsed #glm-nav-main-content {
            opacity: 0;
            pointer-events: none;
        }

        /* === 中间滚动区域 === */
        #glm-scroll-area {
            flex: 1;
            min-height: 0;
            width: 100%;
            overflow-y: auto;
            overflow-x: visible;
            padding: 5px 15px;
            scrollbar-width: none;
            -ms-overflow-style: none;
            display: flex;
            flex-direction: column;
            position: relative;
        }
        #glm-scroll-area::-webkit-scrollbar { display: none; }

        /* === 宝石节点 (V13.2 原版定义) === */
        .glm-nav-dot {
            width: 24px; height: 24px;
            background-size: contain; background-repeat: no-repeat; background-position: center;
            background-color: transparent;
            box-shadow: none;
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: 50%;
            opacity: 0.6; filter: grayscale(40%);
            transform: scale(0.85); cursor: pointer;
            transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
            position: relative; flex-shrink: 0;
            margin: 18px auto;
            overflow: visible;
            z-index: 2;
        }

        /* === 连线 (V13.2 原版定义) === */
        .glm-nav-dot::after {
            content: ''; position: absolute; left: 50%; transform: translateX(-50%);
            top: 100%; height: 38px; width: 1.5px;
            background: rgba(255, 255, 255, 0.15);
            pointer-events: none; z-index: -1; transition: all 0.4s;
        }
        .glm-nav-dot:last-child::after { display: none; }

        /* === 悬浮/激活/星标 特效 (V13.2 原版定义 - 绝对保留) === */
        .glm-nav-dot:hover { opacity: 1; filter: grayscale(0%); transform: scale(1.1); border-color: rgba(255,255,255,0.3); }
        .glm-nav-dot.active { opacity: 1; filter: grayscale(0%) drop-shadow(0 0 8px rgba(64, 158, 255, 0.6)); transform: scale(1.3); z-index: 10; border: none; }
        .glm-nav-dot.is-starred { opacity: 1 !important; filter: grayscale(0%) brightness(1.1) !important; transform: scale(1.1); border: none; }
        .glm-nav-dot.is-starred.active { transform: scale(1.4); filter: drop-shadow(0 0 10px rgba(255, 60, 60, 0.8)) !important; }

        /* === 按钮通用 === */
        .glm-elevator-btn {
            width: 28px; height: 28px; flex-shrink: 0;
            background: rgba(30, 30, 35, 0.85); backdrop-filter: blur(5px);
            border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 8px;
            color: rgba(255, 255, 255, 0.7);
            display: flex; align-items: center; justify-content: center;
            cursor: pointer; font-size: 12px; transition: all 0.2s;
            user-select: none; margin: 2px 0; z-index: 99999;
        }
        .glm-elevator-btn:hover {
            background: rgba(64, 158, 255, 0.2); border-color: rgba(64, 158, 255, 0.6); color: #fff; transform: scale(1.1);
        }
        #glm-toggle-btn {
            position: absolute; bottom: -45px; width: 24px; height: 24px;
            background: rgba(20, 20, 20, 0.6); backdrop-filter: blur(4px);
            border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 50%;
            color: rgba(255, 255, 255, 0.6); display: flex; align-items: center; justify-content: center;
            cursor: pointer; font-size: 12px; transition: all 0.3s;
            z-index: 100000; pointer-events: auto;
        }
        #glm-toggle-btn:hover { background: rgba(64, 158, 255, 0.8); color: #fff; transform: scale(1.2); }
        #glm-nav-wrapper.collapsed #glm-toggle-btn {
            transform: translateX(-70px) translateY(-50%); bottom: 50%;
            width: 30px; height: 60px; border-radius: 15px 0 0 15px;
            background: rgba(64, 158, 255, 0.3); box-shadow: -2px 0 10px rgba(0,0,0,0.2);
        }
        #glm-nav-wrapper.collapsed #glm-toggle-btn:hover { background: rgba(64, 158, 255, 0.9); width: 35px; }

        /* 提示框 */
        #glm-global-tooltip {
            position: fixed; background: rgba(15, 15, 20, 0.95); backdrop-filter: blur(10px);
            color: rgba(255, 255, 255, 0.95); padding: 10px 16px; font-size: 13px; font-weight: 500;
            border-radius: 8px; border: 1px solid rgba(255,255,255,0.1);
            box-shadow: 0 10px 30px rgba(0,0,0,0.6); z-index: 99999; pointer-events: none;
            opacity: 0; visibility: hidden; transition: opacity 0.2s, transform 0.2s;
            transform: translateY(-50%) translateX(15px);
            font-family: -apple-system, BlinkMacSystemFont, sans-serif;
            max-width: 400px; white-space: normal; line-height: 1.5;
        }
        #glm-global-tooltip.visible { opacity: 1; visibility: visible; transform: translateY(-50%) translateX(0); }
        #glm-global-tooltip::before {
            content: ''; position: absolute; left: -5px; top: 50%; transform: translateY(-50%) rotate(45deg);
            width: 10px; height: 10px; background: inherit;
            border-left: 1px solid rgba(255,255,255,0.1); border-bottom: 1px solid rgba(255,255,255,0.1); z-index: -1;
        }


        /* ========================================= */
        /* [PART B] 扩展:列表模式 (List Mode) */
        /* 只有当 #glm-nav-wrapper 拥有 .list-mode 类时才生效 */
        /* ========================================= */

        /* 视图切换按钮 */
        #glm-btn-view { font-size: 14px; margin-bottom: 6px; }

        /* 列表模式容器 */
        #glm-nav-wrapper.list-mode {
            width: 260px; padding: 15px 10px; align-items: stretch;
            background: rgba(18, 18, 24, 0.92); backdrop-filter: blur(12px);
            border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.08);
            box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
        }

        /* 列表模式滚动区 */
        #glm-nav-wrapper.list-mode #glm-scroll-area {
            overflow-x: hidden; padding: 5px 0;
        }

        /* 列表模式下的节点重置 (抹除宝石外观) */
        #glm-nav-wrapper.list-mode .glm-nav-dot {
            background-image: none !important;
            width: auto; height: auto; border-radius: 6px;
            margin: 4px 5px; padding: 8px 10px 8px 20px;
            border: none; transform: none !important;
            opacity: 0.7; filter: none; background-color: transparent;
            display: flex; align-items: center;
        }

        /* 列表模式悬浮 */
        #glm-nav-wrapper.list-mode .glm-nav-dot:hover { opacity: 1; background-color: rgba(255, 255, 255, 0.08); }

        /* 列表模式激活 (矩形背景仅在此处生效) */
        #glm-nav-wrapper.list-mode .glm-nav-dot.active {
            opacity: 1; background-color: rgba(64, 158, 255, 0.15); color: #fff;
        }

        /* 列表模式隐藏连线 */
        #glm-nav-wrapper.list-mode .glm-nav-dot::after { display: none; }

        /* 列表模式文字 */
        .glm-nav-label { display: none; } /* 默认隐藏 */
        #glm-nav-wrapper.list-mode .glm-nav-label {
            display: block; color: rgba(255, 255, 255, 0.85);
            font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
            width: 100%; text-align: left;
        }
        #glm-nav-wrapper.list-mode .glm-nav-dot.active .glm-nav-label { color: #fff; font-weight: 500; }
        #glm-nav-wrapper.list-mode .glm-nav-dot.is-starred .glm-nav-label { color: #FFD700; }

        /* 列表模式小圆点 */
        #glm-nav-wrapper.list-mode .glm-nav-dot::before {
            content: ''; position: absolute; left: 8px; top: 50%; transform: translateY(-50%);
            width: 4px; height: 4px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.4);
        }
        #glm-nav-wrapper.list-mode .glm-nav-dot.active::before {
            background-color: #409EFF; width: 6px; height: 6px; left: 7px;
        }
        #glm-nav-wrapper.list-mode .glm-nav-dot.is-starred::before { background-color: #FFD700; }
    `;

  const styleSheet = document.createElement("style");
  styleSheet.innerText = STYLES;
  document.head.appendChild(styleSheet);

  // === 4. DOM 结构 ===
  const wrapper = document.createElement('div');
  wrapper.id = 'glm-nav-wrapper';
  document.body.appendChild(wrapper);

  const mainContent = document.createElement('div');
  mainContent.id = 'glm-nav-main-content';
  wrapper.appendChild(mainContent);

  // 0. 视图切换按钮
  const btnView = document.createElement('div');
  btnView.id = 'glm-btn-view';
  btnView.className = 'glm-elevator-btn';
  btnView.innerHTML = '≡';
  btnView.title = "切换列表视图";
  btnView.style.display = 'none';
  mainContent.appendChild(btnView);

  // 1. 顶部按钮
  const btnTop = document.createElement('div');
  btnTop.className = 'glm-elevator-btn';
  btnTop.innerHTML = '▲';
  btnTop.title = "回到顶部";
  btnTop.style.display = 'none';
  mainContent.appendChild(btnTop);

  // 2. 滚动区域
  const scrollArea = document.createElement('div');
  scrollArea.id = 'glm-scroll-area';
  mainContent.appendChild(scrollArea);

  // 3. 底部按钮
  const btnBottom = document.createElement('div');
  btnBottom.className = 'glm-elevator-btn';
  btnBottom.innerHTML = '▼';
  btnBottom.title = "直达最新";
  btnBottom.style.display = 'none';
  mainContent.appendChild(btnBottom);

  // 4. 折叠按钮
  const toggleBtn = document.createElement('div');
  toggleBtn.id = 'glm-toggle-btn';
  toggleBtn.innerHTML = '»';
  toggleBtn.title = "折叠/展开";
  wrapper.appendChild(toggleBtn);

  const tooltip = document.createElement('div');
  tooltip.id = 'glm-global-tooltip';
  document.body.appendChild(tooltip);

  let lastRenderedSignature = "";
  let isClickScrolling = false;
  let currentQuestions = [];

  // === 5. 状态管理 ===
  let isCollapsed = false;
  let isListMode = false;

  // 视图切换逻辑
  function toggleListMode() {
    isListMode = !isListMode;
    if (isListMode) {
      wrapper.classList.add('list-mode');
      btnView.innerHTML = '×';
      btnView.title = "关闭列表";
      setTimeout(() => {
        const activeDot = scrollArea.querySelector('.glm-nav-dot.active');
        if (activeDot) activeDot.scrollIntoView({ block: 'center', behavior: 'auto' });
      }, 50);
    } else {
      wrapper.classList.remove('list-mode');
      btnView.innerHTML = '≡';
      btnView.title = "切换列表视图";
      setTimeout(() => {
        const activeDot = scrollArea.querySelector('.glm-nav-dot.active');
        if (activeDot) activeDot.scrollIntoView({ block: 'center', behavior: 'auto' });
      }, 50);
    }
  }
  btnView.onclick = (e) => { e.stopPropagation(); toggleListMode(); };

  // 折叠逻辑
  function toggleSidebar(forceState = null) {
    if (forceState !== null) isCollapsed = forceState;
    else isCollapsed = !isCollapsed;

    if (isCollapsed) {
      wrapper.classList.add('collapsed');
      toggleBtn.innerHTML = '💎';
      tooltip.classList.remove('visible');
    } else {
      wrapper.classList.remove('collapsed');
      toggleBtn.innerHTML = '»';
    }
  }
  toggleBtn.onclick = (e) => { e.stopPropagation(); toggleSidebar(); };

  function checkResponsive() {
    if (window.innerWidth < 1400) toggleSidebar(true);
  }
  checkResponsive();
  window.addEventListener('resize', () => setTimeout(checkResponsive, 200));

  // === 6. 渲染逻辑 ===
  const observerOptions = { root: null, rootMargin: '-45% 0px -45% 0px', threshold: 0 };
  const scrollObserver = new IntersectionObserver((entries) => {
    if (isClickScrolling) return;
    entries.forEach(entry => { if (entry.isIntersecting) activateDot(entry.target.id); });
  }, observerOptions);

  function activateDot(targetId) {
    const allDots = scrollArea.querySelectorAll('.glm-nav-dot');
    let activeDot = null;
    allDots.forEach(dot => {
      if (dot.dataset.targetId === targetId) {
        dot.classList.add('active'); activeDot = dot;
      } else {
        dot.classList.remove('active');
      }
    });
    if (activeDot) {
      const containerHeight = scrollArea.clientHeight;
      const dotTop = activeDot.offsetTop;
      const dotHeight = activeDot.clientHeight;
      scrollArea.scrollTo({ top: dotTop - (containerHeight / 2) + (dotHeight / 2), behavior: 'smooth' });
    }
  }

  btnTop.onclick = () => {
    if (currentQuestions.length > 0) {
      isClickScrolling = true;
      const target = currentQuestions[0];
      target.scrollIntoView({ behavior: 'smooth', block: 'start' });
      activateDot(target.id);
      setTimeout(() => isClickScrolling = false, 1000);
    }
  };
  btnBottom.onclick = () => {
    if (currentQuestions.length > 0) {
      isClickScrolling = true;
      const target = currentQuestions[currentQuestions.length - 1];
      target.scrollIntoView({ behavior: 'smooth', block: 'start' });
      activateDot(target.id);
      setTimeout(() => isClickScrolling = false, 1000);
    }
  };

  function generateNavNodes() {
    const allQuestions = document.querySelectorAll('[id^="row-question-"]');
    const validQuestions = Array.from(allQuestions).filter(q => /^row-question-\d+$/.test(q.id) && q.offsetHeight > 0);
    currentQuestions = validQuestions;

    const hasContent = validQuestions.length > 0;
    const showElevator = validQuestions.length > 3;

    wrapper.style.display = hasContent ? 'flex' : 'none';
    btnView.style.display = hasContent ? 'flex' : 'none';
    btnTop.style.display = showElevator ? 'flex' : 'none';
    btnBottom.style.display = showElevator ? 'flex' : 'none';

    if (!hasContent) return;

    const firstQuestionText = validQuestions[0].innerText;
    const currentChatId = getChatId(firstQuestionText);
    const currentSignature = currentChatId + "|" + validQuestions.map(q => q.id).join('|');

    if (currentSignature === lastRenderedSignature) return;
    lastRenderedSignature = currentSignature;

    scrollArea.innerHTML = '';
    scrollObserver.disconnect();

    const starredList = getStarredList(currentChatId);

    validQuestions.forEach((q, index) => {
      scrollObserver.observe(q);
      const dot = document.createElement('div');
      dot.className = 'glm-nav-dot';
      dot.dataset.targetId = q.id;

      const isStarred = starredList.includes(q.id);
      if (isStarred && GEM_STAR) dot.style.backgroundImage = `url(${GEM_STAR})`;
      else if (!isStarred && GEM_NORMAL) dot.style.backgroundImage = `url(${GEM_NORMAL})`;
      if (isStarred) dot.classList.add('is-starred');

      let textRaw = (q.querySelector('.question-txt') || q).innerText;
      const cleanText = textRaw.replace(/\s+/g, ' ').trim();
      const tooltipText = `Q${index + 1}: ${cleanText.slice(0, 80)}${cleanText.length > 80 ? '...' : ''}`;
      const labelText = cleanText.slice(0, 60);

      dot.dataset.rawText = tooltipText;

      // 内部文本标签 (列表模式专用)
      const labelSpan = document.createElement('span');
      labelSpan.className = 'glm-nav-label';
      labelSpan.innerText = labelText;
      dot.appendChild(labelSpan);

      dot.onmouseenter = () => {
        if (isCollapsed) return;
        if (isListMode) return; // 列表模式不需要 Tooltip

        const rect = dot.getBoundingClientRect();
        tooltip.innerText = (dot.classList.contains('is-starred') ? "⭐ " : "") + dot.dataset.rawText;
        tooltip.style.right = (window.innerWidth - rect.left + 25) + 'px';
        tooltip.style.top = (rect.top + rect.height / 2) + 'px';
        tooltip.classList.add('visible');
      };
      dot.onmouseleave = () => tooltip.classList.remove('visible');

      dot.onclick = (e) => {
        e.stopPropagation();
        isClickScrolling = true;
        activateDot(q.id);
        q.scrollIntoView({ behavior: 'smooth', block: 'center' });
        q.classList.remove('glm-flash-target');
        void q.offsetWidth;
        q.classList.add('glm-flash-target');
        setTimeout(() => { isClickScrolling = false; }, 1000);
      };

      dot.ondblclick = (e) => {
        e.stopPropagation();
        const nowStarred = toggleStar(q.id, currentChatId);
        if (nowStarred && GEM_STAR) dot.style.backgroundImage = `url(${GEM_STAR})`;
        else if (!nowStarred && GEM_NORMAL) dot.style.backgroundImage = `url(${GEM_NORMAL})`;
        nowStarred ? dot.classList.add('is-starred') : dot.classList.remove('is-starred');

        if (!isListMode) {
          tooltip.innerText = (nowStarred ? "⭐ " : "") + dot.dataset.rawText;
          dot.style.transform = "scale(1.6)";
          setTimeout(() => dot.style.transform = "", 200);
        }
      };

      scrollArea.appendChild(dot);
    });
  }

  let timeout = null;
  const observer = new MutationObserver(() => {
    if (timeout) clearTimeout(timeout);
    timeout = setTimeout(generateNavNodes, 500);
  });
  observer.observe(document.body, { childList: true, subtree: true });
  setTimeout(generateNavNodes, 1000);

})();