DeepSeek No Auto-Scroll

Block auto-scroll in DeepSeek while keeping manual scroll control

// ==UserScript==
// @name         DeepSeek No Auto-Scroll
// @version      1.1
// @description  Block auto-scroll in DeepSeek while keeping manual scroll control
// @author       You
// @match        *://*.deepseek.com/*
// @grant        none
// @license MIT
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==

(function() {
    'use strict';

    // Function to apply the scroll behavior override
    function applyNoAutoScroll(scrollContainer) {
        // Block auto-scroll attempts while keeping manual control
        Object.defineProperty(scrollContainer, 'scrollTop', {
            set: function() {}, // Empty setter blocks programmatic scroll
            get: () => scrollContainer._realScrollTop || 0, // Preserve actual position
            configurable: true
        });

        // Store real scroll position
        scrollContainer.addEventListener('scroll', () => {
            scrollContainer._realScrollTop = scrollContainer.scrollTop;
        });
    }

    // Watch for the target element using MutationObserver
    const observer = new MutationObserver(() => {
        const scrollContainer = document.querySelector('div.f6004764');
        if (scrollContainer) {
            observer.disconnect(); // Stop observing once the element is found
            applyNoAutoScroll(scrollContainer);
        }
    });

    // Start observing the DOM for changes
    observer.observe(document.body, { childList: true, subtree: true });
})();