Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,19 @@
<img id="screensaver-image2" alt="Screensaver Image" style="opacity: 0;">
<div id="screensaver-thumbnails-wrapper" class="screensaver-thumbnails-wrapper">
<button id="screensaver-thumb-left" class="thumb-nav" aria-label="Scroll thumbnails left">&#9664;</button>
<div id="screensaver-thumbnails" class="screensaver-thumbnails"></div>
<div id="screensaver-thumbnails" class="screensaver-thumbnails">
<!-- Predefined slots for up to ten thumbnails -->
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
<img class="thumbnail placeholder" alt="Empty slot" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" />
</div>
<button id="screensaver-thumb-right" class="thumb-nav" aria-label="Scroll thumbnails right">&#9654;</button>
</div>
<div class="screensaver-controls">
Expand Down
49 changes: 22 additions & 27 deletions screensaver.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ document.addEventListener("DOMContentLoaded", () => {
let autoPromptEnabled = true;
let isFetchingPrompt = false;
let lastPromptUpdate = 0;
const MAX_HISTORY = 12;
const MAX_HISTORY = 10;
const EMPTY_THUMBNAIL = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";
const PROMPT_UPDATE_INTERVAL = 20000;

let settings = {
Expand Down Expand Up @@ -320,40 +321,34 @@ document.addEventListener("DOMContentLoaded", () => {
return;
}

thumbnailContainer.innerHTML = '';
imageHistory.forEach((imageUrl, index) => {
const thumb = document.createElement('img');
thumb.src = imageUrl;
thumb.classList.add('thumbnail');
thumb.title = promptHistory[index] || 'No prompt available';
thumb.alt = "Thumbnail Image";
thumb.style.opacity = '1';
thumb.onerror = () => {
console.log(`Thumbnail ${index + 1} failed to load, using fallback:`, imageUrl);
thumb.src = "https://via.placeholder.com/160x90?text=Image+Failed";
thumb.style.opacity = '1';
};
thumb.onload = () => {
console.log(`Thumbnail ${index + 1} loaded successfully:`, imageUrl);
};
thumb.onclick = () => showHistoricalImage(index);
const currentImgSrc = document.getElementById(`screensaver-${currentImage}`).src;
if (imageUrl === currentImgSrc) {
thumb.classList.add('selected');
console.log("Highlighted thumbnail as selected:", imageUrl);
const slots = thumbnailContainer.querySelectorAll('img.thumbnail');
slots.forEach((thumb, index) => {
const imageUrl = imageHistory[index];
thumb.onclick = null;
thumb.classList.remove('selected');
thumb.classList.remove('placeholder');

if (imageUrl) {
thumb.src = imageUrl;
thumb.title = promptHistory[index] || 'No prompt available';
thumb.onclick = () => showHistoricalImage(index);
const currentImgSrc = document.getElementById(`screensaver-${currentImage}`).src;
if (imageUrl === currentImgSrc) {
thumb.classList.add('selected');
}
} else {
thumb.src = EMPTY_THUMBNAIL;
thumb.title = '';
thumb.classList.add('placeholder');
}
thumbnailContainer.appendChild(thumb);
console.log(`Added thumbnail ${index + 1}/${imageHistory.length} to DOM:`, thumb.src);
});

// keep the view scrolled to the latest thumbnail
thumbnailContainer.scrollTo({ left: thumbnailContainer.scrollWidth, behavior: 'smooth' });
console.log("Updated thumbnail gallery with", imageHistory.length, "images. DOM count:", thumbnailContainer.children.length);

const offsetWidth = thumbnailContainer.offsetWidth;
thumbnailContainer.style.display = 'none';
thumbnailContainer.offsetHeight;
thumbnailContainer.style.display = 'flex';
console.log("Updated thumbnail gallery with", imageHistory.length, "images. DOM count:", thumbnailContainer.children.length);
console.log("Forced DOM reflow to ensure rendering. Container offsetWidth:", offsetWidth);
}

Expand Down
95 changes: 46 additions & 49 deletions styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -790,47 +790,38 @@ body {
transition: opacity var(--transition-duration, 1s) ease;
}

.screensaver-thumbnails {
position: fixed;
bottom: 0;
left: 0;
right: 0;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
gap: 12px;
overflow-x: auto;
width: 100%;
height: 120px;
padding: 10px;
background: rgba(0, 0, 0, 0.7);
border-radius: 0;
z-index: 2;
transition: opacity 0.3s ease;
scrollbar-width: thin;
scrollbar-color: #707070 #333333;
white-space: nowrap;
direction: ltr;
scroll-behavior: smooth;
}

.screensaver-thumbnails::-webkit-scrollbar {
height: 8px;
}

.screensaver-thumbnails::-webkit-scrollbar-track {
background: #333333;
border-radius: 4px;
}

.screensaver-thumbnails::-webkit-scrollbar-thumb {
background: #707070;
border-radius: 4px;
}

.screensaver-thumbnails {
display: flex;
flex-direction: row;
gap: 10px;
overflow-x: auto;
width: 100%;
max-width: 1290px;
padding: 10px;
background: rgba(0, 0, 0, 0.7);
border-radius: 12px;
transition: opacity 0.3s ease;
scrollbar-width: thin;
white-space: nowrap;
}

.screensaver-thumbnails::-webkit-scrollbar {
height: 8px;
}

.screensaver-thumbnails::-webkit-scrollbar-track {
background: #333333;
border-radius: 4px;
}

.screensaver-thumbnails::-webkit-scrollbar-thumb {
background: #707070;
border-radius: 4px;
}

.screensaver-thumbnails img.thumbnail {
width: 160px;
height: 90px;
width: 120px;
height: 80px;
object-fit: cover;
cursor: pointer;
border: 3px solid transparent;
Expand All @@ -841,15 +832,21 @@ body {
opacity: 1;
position: static;
}

.screensaver-thumbnails img.thumbnail:hover {
border: 3px solid #00ffcc;
transform: scale(1.05);
}

.screensaver-thumbnails img.thumbnail.selected {
border: 3px solid #ffcc00;
}

.screensaver-thumbnails img.thumbnail.placeholder {
opacity: 0.3;
border: 3px dashed #555;
pointer-events: none;
}

.screensaver-thumbnails img.thumbnail:hover {
border: 3px solid #00ffcc;
transform: scale(1.05);
}

.screensaver-thumbnails img.thumbnail.selected {
border: 3px solid #ffcc00;
}

.screensaver-controls {
position: fixed;
Expand Down
11 changes: 9 additions & 2 deletions stylesScreensaver.css
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,11 @@
flex-direction: row;
gap: 10px;
overflow-x: auto;
width: 90%;
max-width: 1200px;
width: 100%;
max-width: 1290px;
padding: 10px;
border-radius: 12px;
background: rgba(0, 0, 0, 0.7);
transition: opacity 0.3s ease;
scrollbar-width: thin;
white-space: nowrap;
Expand Down Expand Up @@ -87,6 +88,12 @@
position: static;
}

.screensaver-thumbnails img.thumbnail.placeholder {
opacity: 0.3;
border: 3px dashed #555;
pointer-events: none;
}

.screensaver-controls {
position: fixed;
bottom: 100px;
Expand Down