Improve 4plebs Thread Page Title

Fetch and update page title using subject and body for archive.4plebs.org threads

// ==UserScript==
// @name         Improve 4plebs Thread Page Title
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Fetch and update page title using subject and body for archive.4plebs.org threads
// @author       wolffgang
// @match        https://archive.4plebs.org/*/thread/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const TITLE_LIMIT = 190; // Maximum title length

    function fetchThreadDetails() {
        // Dynamically fetch board name from URL
        const boardName = `/${location.pathname.split('/')[1]}/`;

        const subjectElement = document.querySelector('h2.post_title');
        const bodyElement = document.querySelector('div.text');

        let subject = subjectElement ? subjectElement.textContent.trim() : '';
        let body = bodyElement ? bodyElement.textContent.trim() : '';

        // Combine board name, subject, and body intelligently
        let newTitle = boardName;
        if (subject) {
            newTitle += ` - ${subject}`;
        }
        if (body) {
            newTitle += subject ? `: ${body}` : ` - ${body}`;
        }

        // Truncate if it exceeds TITLE_LIMIT
        if (newTitle.length > TITLE_LIMIT) {
            newTitle = newTitle.slice(0, TITLE_LIMIT - 3) + '...';
        }

        // Update the document's title
        document.title = newTitle;
    }

    // Execute the function when the page is fully loaded
    window.addEventListener('load', fetchThreadDetails);
})();