// ==UserScript== // @name ATProto Tweaks // @namespace http://tampermonkey.net/ // @version 1.72 // @description Enlarge like button, hide follower count, add pulsating bulk-like button // @author https://PSingletary.com // @downloadURL https://tangled.sh/strings/psingletary.com/3lw3oofrvgj22/raw // @updateURL https://tangled.sh/strings/psingletary.com/3lw3oofrvgj22/raw // @license MIT // @match https://bsky.app/* // @match https://deer.social/* // @match https://sky.thebull.app/* // @match https://zepplin.social/* // @match https://blacksky.community/* // @match https://social.daniela.lol/* // @match https://catsky.social/* // @grant none // @run-at document-end // ==/UserScript== (function() { 'use strict'; const style = document.createElement('style'); style.textContent = ` /* 1. Enlarge like button */ button[aria-label^="Like ("] svg { width: 28px !important; height: 28px !important; } /* 2. Hide follower count on profile pages */ a[href$="/followers"] { display: none !important; } /* 3. Hide bookmarks button */ button[data-testid="postBookmarkBtn"] { display: none !important; } /* Pulsating like icon for bulk button */ @keyframes pulsate { 0% { opacity: 0.6; transform: scale(1); } 50% { opacity: 1; transform: scale(1.12); } 100% { opacity: 0.6; transform: scale(1); } } #bulk-like-btn { display: flex; align-items: center; margin: 0 8px; padding: 6px 8px; background: transparent; border: none; cursor: pointer; animation: pulsate 2s infinite ease-in-out; } #bulk-like-btn svg { width: 24px; height: 24px; fill: #FF5B5B; } `; document.head.appendChild(style); let timer; function addBulkLike() { const nav = document.querySelector('nav[role="navigation"]'); if (nav && !nav.querySelector('#bulk-like-btn')) { const btn = document.createElement('button'); btn.id = 'bulk-like-btn'; btn.title = 'Like all visible posts'; btn.innerHTML = ` `; btn.onclick = () => { [...document.querySelectorAll('button[aria-label^="Like ("]')] .filter(b => b.offsetParent) .forEach(b => b.click()); }; nav.appendChild(btn); } } function observe() { clearTimeout(timer); timer = setTimeout(addBulkLike, 300); } new MutationObserver(observe).observe(document.body, { childList: true, subtree: true }); observe(); })();