Fix Log Auto Scroll

Keeps log auto-scrolling unless user scrolls up

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         Fix Log Auto Scroll
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Keeps log auto-scrolling unless user scrolls up
// @match        *://*.idleartisan.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const waitForLog = setInterval(() => {
        const log = document.querySelector('#log-messages');
        if (!log) return;
        clearInterval(waitForLog);

        let autoScroll = true; // start with auto-scroll enabled

        const scrollToBottom = () => {
            if (log.scrollHeight > log.clientHeight) {
                log.scrollTop = 0; // column-reverse: scrollTop=0 is bottom
            }
        };

        // Initial scroll
        setTimeout(scrollToBottom, 50);

        // Toggle auto-scroll with Ctrl+C
        document.addEventListener('keydown', (e) => {
            if (e.altKey && e.key.toLowerCase() === 'c') {
                autoScroll = !autoScroll;
                console.log(`Auto-scroll ${autoScroll ? 'enabled' : 'paused'}`);
            }
        });

        // Watch for new messages
        const observer = new MutationObserver(() => {
            if (autoScroll) {
                scrollToBottom();
            }
        });

        observer.observe(log, { childList: true, subtree: true });
    }, 200);
})();