Kagi Assistant Auto-Scroll

Automatically scroll down when new content is added to Kagi Assistant

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         Kagi Assistant Auto-Scroll
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Automatically scroll down when new content is added to Kagi Assistant
// @author       You
// @match        *://kagi.com/assistant*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // The main container that holds the chat messages
    const targetSelector = '.main-center-box';

    // Function to scroll to bottom
    function scrollToBottom() {
        const container = document.querySelector(targetSelector);
        if (container) {
            container.scrollTop = container.scrollHeight;
        }
    }

    // Set up a mutation observer to watch for changes
    const observer = new MutationObserver((mutations) => {
        let shouldScroll = false;

        // Check if content was added
        mutations.forEach((mutation) => {
            if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
                shouldScroll = true;
            } else if (mutation.type === 'characterData') {
                shouldScroll = true;
            }
        });

        if (shouldScroll) {
            scrollToBottom();
        }
    });

    // Function to initialize the observer when the target element exists
    function initObserver() {
        const target = document.querySelector(targetSelector);
        if (target) {
            observer.observe(target, {
                childList: true,
                subtree: true,
                characterData: true
            });
            console.log('Kagi Assistant Auto-Scroll: Observer initialized');

            // Initial scroll to bottom
            scrollToBottom();
        } else {
            // If target doesn't exist yet, try again shortly
            setTimeout(initObserver, 1000);
        }
    }

    // Start the initialization process
    initObserver();

    // Also scroll on window resize
    window.addEventListener('resize', scrollToBottom);
})();