working
This commit is contained in:
+77
@@ -0,0 +1,77 @@
|
||||
function createOrUpdateBadge(hiddenCount) {
|
||||
let badge = document.getElementById("cgpt-hide-badge");
|
||||
if (!badge) {
|
||||
badge = document.createElement("div");
|
||||
badge.id = "cgpt-hide-badge";
|
||||
badge.style.position = "fixed";
|
||||
badge.style.bottom = "20px";
|
||||
badge.style.right = "20px";
|
||||
badge.style.zIndex = "99999";
|
||||
badge.style.background = "rgba(0,0,0,0.8)";
|
||||
badge.style.color = "#fff";
|
||||
badge.style.padding = "8px 16px";
|
||||
badge.style.borderRadius = "20px";
|
||||
badge.style.fontSize = "14px";
|
||||
badge.style.boxShadow = "0 2px 8px rgba(0,0,0,0.2)";
|
||||
badge.style.userSelect = "none";
|
||||
badge.style.pointerEvents = "none";
|
||||
document.body.appendChild(badge);
|
||||
}
|
||||
badge.textContent = `Hidden: ${hiddenCount}`;
|
||||
}
|
||||
|
||||
(function hideAllButRecentConversationTurns() {
|
||||
const SHOW_LAST_N = 30; // Number of most recent turns to show
|
||||
function hideOldTurns() {
|
||||
const articles = Array.from(
|
||||
document.querySelectorAll(
|
||||
'article[data-testid^="conversation-turn-"]'
|
||||
)
|
||||
);
|
||||
// Extract numeric IDs and sort
|
||||
const sorted = articles
|
||||
.map((article) => ({
|
||||
el: article,
|
||||
id: parseInt(
|
||||
article
|
||||
.getAttribute("data-testid")
|
||||
.replace("conversation-turn-", ""),
|
||||
10
|
||||
),
|
||||
}))
|
||||
.filter((item) => !isNaN(item.id))
|
||||
.sort((a, b) => a.id - b.id);
|
||||
// Hide all except the last N
|
||||
const toHide = sorted.slice(0, -SHOW_LAST_N);
|
||||
toHide.forEach((item) => {
|
||||
item.el.style.display = "none";
|
||||
});
|
||||
// Show the most recent N
|
||||
const toShow = sorted.slice(-SHOW_LAST_N);
|
||||
toShow.forEach((item) => {
|
||||
item.el.style.display = "";
|
||||
});
|
||||
createOrUpdateBadge(toHide.length);
|
||||
}
|
||||
// Wait for all articles to load first
|
||||
function waitForArticlesAndHide() {
|
||||
const observer = new MutationObserver((mutations, obs) => {
|
||||
const articles = document.querySelectorAll(
|
||||
'article[data-testid^="conversation-turn-"]'
|
||||
);
|
||||
// If articles exist and no new articles are being added for a short period, proceed
|
||||
if (articles.length > 0) {
|
||||
// Wait 1 second after the last mutation to ensure loading is done
|
||||
clearTimeout(window.__hideTurnsTimeout);
|
||||
window.__hideTurnsTimeout = setTimeout(() => {
|
||||
hideOldTurns();
|
||||
obs.disconnect();
|
||||
// Re-observe for future loads (e.g., when user scrolls up)
|
||||
waitForArticlesAndHide();
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
observer.observe(document.body, { childList: true, subtree: true });
|
||||
}
|
||||
waitForArticlesAndHide();
|
||||
})();
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 152 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 537 B |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"manifest_version": 3,
|
||||
"name": "ChatGPT Long Message Hider",
|
||||
"version": "1.0",
|
||||
"description": "Hides long history elements in ChatGPT conversations to improve loading speed.",
|
||||
"permissions": ["scripting"],
|
||||
"host_permissions": ["https://chat.openai.com/*", "https://chatgpt.com/*"],
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": ["https://chat.openai.com/*", "https://chatgpt.com/*"],
|
||||
"js": ["content.js"]
|
||||
}
|
||||
],
|
||||
"icons": {
|
||||
"16": "icon16.png",
|
||||
"48": "icon48.png",
|
||||
"128": "icon128.png"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user