🏠 Home 

ChatGPT Enhanced Interface

Enhances ChatGPT interface with various features.

// ==UserScript==
// @name         ChatGPT Enhanced Interface
// @namespace    http://tampermonkey.net/
// @version      1.2.1
// @description  Enhances ChatGPT interface with various features.
// @author       lundeen-bryan
// @match        https://chat.openai.com/*
// @grant        none
// @license      GPL
// @run-at       document-end
// ==/UserScript==
(function() {
'use strict';
// Function to handle key presses
function handleKeyPress(event) {
const inputBox = document.querySelector('textarea');
if (event.key === 'Enter' && !event.metaKey && inputBox) {
event.stopPropagation();
}
if (event.key === 'Enter' && event.ctrlKey) { // Check if Ctrl+Enter are pressed together
document.querySelector('[data-testid="send-button"]').click(); // Simulate click on the send button
}
}
// Add or remove the key press event listener
function overrideEnterKey() {
const inputBox = document.querySelector('textarea');
if (inputBox) {
inputBox.removeEventListener('keydown', handleKeyPress, true);
inputBox.addEventListener('keydown', handleKeyPress, true);
}
}
// Observe for changes to reapply the key press event listener
const observerForKeyPress = new MutationObserver(overrideEnterKey);
observerForKeyPress.observe(document, { childList: true, subtree: true });
// Custom styles
const customStyle = document.createElement('style');
customStyle.textContent = `
/* Style for focused button */
.focused-gizmo {
background-color: #19c37d !important; /* New button color */
}
.focused-gizmo svg {
color: white !important; /* New arrow color */
}
/* Specific style for the send button */
[data-testid="send-button"] {
max-height: 200px;
height: 30px;
overflow-y: hidden;
min-height: 30px;
padding-right: 5px;
padding-left: 5px;
}
/* Style for the textarea with ID 'prompt-textarea' */
#prompt-textarea {
padding-left: 45px;
padding-right: 60px;
padding-bottom: 10px;
padding-top: 10px;
font-size: 1.1em;
}
/* Style for elements with the class .md\\:right-3 */
.md\\:right-3 {
right: 2.75rem;
}
/* Style for elements with the class.md\\:left-3 */
p {
font-size: 1.4em;
width: 100%;
}
.w-full {
/* wide scrollbar */
width: 99%;
}
/* Move text area far to the left to give more room to write */
.xl\:max-w-3xl {
max-width: 59rem;
margin-left: 30px;
}
/* Adjust padding values for the r###lt counter */
.text-token-text-tertiary {
padding-left: 54px !important; /* Adjust left padding */
padding-bottom: 4px !important; /* Adjust bottom padding */
}
`;
document.head.appendChild(customStyle);
// Function to toggle focus style
function toggleFocusStyle(event) {
const button = document.querySelector('[data-testid="send-button"]');
if (button) {
if (event.type === 'focus') {
button.classList.add('focused-gizmo');
} else if (event.type === 'blur') {
button.classList.remove('focused-gizmo');
}
}
}
// Add focus and blur event listeners to the button
function addButtonFocusListener() {
const button = document.querySelector('[data-testid="send-button"]');
if (button) {
button.addEventListener('focus', toggleFocusStyle);
button.addEventListener('blur', toggleFocusStyle);
}
}
// Observe for button to add focus and blur listeners
const observerForButtonFocus = new MutationObserver(addButtonFocusListener);
observerForButtonFocus.observe(document.body, { childList: true, subtree: true });
// Keyboard shortcut functionality
document.addEventListener('keydown', function(event) {
if (event.altKey && event.key === 'k') {
const targetButton = document.getElementById('expand-sidebar-bottom-button');
if (targetButton) {
targetButton.click();
}
}
});
})();