// ==UserScript==
// @name         Miniflux Feed Organizer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Group Miniflux feed entries by feed/author on unread, read, and starred pages
// @author       https://gitea.zoemp.be/sansguidon
// @match        https://YOUR_MINIFLUX_DOMAIN/unread*
// @match        https://YOUR_MINIFLUX_DOMAIN/category/*/entries
// @match        https://YOUR_MINIFLUX_DOMAIN/starred*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Function to group items by the author/feed name
    function groupItemsByAuthor() {
        const items = document.querySelectorAll('.item.entry-item');
        const grouped = {};

        // Group articles by feed/author
        items.forEach(item => {
            const author = item.querySelector('.item-meta-info-title a').innerText.trim();
            if (!grouped[author]) {
                grouped[author] = [];
            }
            grouped[author].push(item);
        });

        // Clear existing items safely
        const container = document.querySelector('.items');
        while (container.firstChild) {
            container.removeChild(container.firstChild);
        }

        // Append grouped items to the DOM
        Object.keys(grouped).forEach(author => {
            const block = document.createElement('div');
            block.classList.add('author-block');
            const header = document.createElement('h2');
            header.textContent = author;
            block.appendChild(header);

            grouped[author].forEach(item => {
                block.appendChild(item);
            });

            container.appendChild(block);
        });
    }

    // Run the grouping function
    window.addEventListener('load', groupItemsByAuthor);
})();