// ==UserScript==
// @name         Cara.app Persistent Fast Reload
// @namespace    https://cara.app/
// @version      1.2
// @description  Fast repeating reload with GUI (persists across reloads)
// @match        https://cara.app/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function () {
    'use strict';

    const STATE_KEY = 'cara_fast_reload_enabled';
    const DELAY_KEY = 'cara_fast_reload_delay';

    function waitForBody(cb) {
        if (document.body) cb();
        else setTimeout(() => waitForBody(cb), 50);
    }

    waitForBody(() => {
        let reloadTimeout = null;

        const enabled = localStorage.getItem(STATE_KEY) === 'true';
        const savedDelay = Number(localStorage.getItem(DELAY_KEY)) || 500;

        // ---- GUI ----
        const panel = document.createElement('div');
        panel.style.cssText = `
            position: fixed;
            bottom: 20px;
            right: 20px;
            z-index: 999999;
            background: #111;
            color: white;
            padding: 12px;
            border-radius: 8px;
            font-family: sans-serif;
            font-size: 14px;
            box-shadow: 0 0 10px rgba(0,0,0,0.5);
        `;

        panel.innerHTML = `
            <div style="font-weight:bold;margin-bottom:6px;">⚡ Fast Reload</div>
            <div style="margin-bottom:6px;">
                Delay (ms):
                <input id="delay" type="number" min="100" value="${savedDelay}"
                       style="width:70px;">
            </div>
            <button id="start">Start</button>
            <button id="stop">Stop</button>
            <div style="margin-top:6px;font-size:12px;opacity:.7">
                Status: <span id="status">OFF</span>
            </div>
        `;

        document.body.appendChild(panel);

        const startBtn = panel.querySelector('#start');
        const stopBtn = panel.querySelector('#stop');
        const delayInput = panel.querySelector('#delay');
        const status = panel.querySelector('#status');

        function scheduleReload() {
            if (localStorage.getItem(STATE_KEY) !== 'true') return;

            const delay = Math.max(100, Number(delayInput.value));
            localStorage.setItem(DELAY_KEY, delay);

            reloadTimeout = setTimeout(() => {
                location.reload();
            }, delay);
        }

        function start() {
            localStorage.setItem(STATE_KEY, 'true');
            status.textContent = 'ON';
            scheduleReload();
        }

        function stop() {
            localStorage.setItem(STATE_KEY, 'false');
            clearTimeout(reloadTimeout);
            status.textContent = 'OFF';
        }

        startBtn.onclick = start;
        stopBtn.onclick = stop;

        // ---- Auto-resume after reload ----
        if (enabled) {
            status.textContent = 'ON';
            scheduleReload();
        } else {
            status.textContent = 'OFF';
        }

        console.log('[Fast Reload] ready, enabled:', enabled);
    });
})();