Fix: Force pull images in deploy workflow
All checks were successful
Build and Push / build-all (push) Successful in 2m6s

This commit is contained in:
doomtube 2026-01-07 00:39:37 -05:00
parent 0bb461498e
commit 99151c6692
4 changed files with 43 additions and 7 deletions

View file

@ -363,11 +363,15 @@
{/if} {/if}
{#if hasSelfDestruct && countdownSeconds > 0} {#if hasSelfDestruct && countdownSeconds > 0}
<span class="self-destruct-indicator" title="Self-destructing message"> <span class="self-destruct-indicator" title="Self-destructing message">
<svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"> {#if countdownSeconds <= 4}
<path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z"/> <img src="/timer.gif" alt="Timer" class="self-destruct-gif" />
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z"/> {:else}
</svg> <svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor">
{formatCountdown(countdownSeconds)} <path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z"/>
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z"/>
</svg>
{formatCountdown(countdownSeconds)}
{/if}
</span> </span>
{/if} {/if}
@ -656,6 +660,11 @@
animation: pulse 2s ease-in-out infinite; animation: pulse 2s ease-in-out infinite;
} }
.self-destruct-gif {
height: 16px;
width: auto;
}
@keyframes pulse { @keyframes pulse {
0%, 100% { opacity: 1; } 0%, 100% { opacity: 1; }
50% { opacity: 0.6; } 50% { opacity: 0.6; }

View file

@ -1038,6 +1038,15 @@
position: relative; position: relative;
width: 100%; width: 100%;
} }
.sidebar {
height: auto;
max-height: none;
}
.chat-section {
min-height: 400px;
}
} }
/* Stream grid layout for multiple streams - Resizable */ /* Stream grid layout for multiple streams - Resizable */

View file

@ -6,6 +6,7 @@
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
import * as pgp from '$lib/pgp'; import * as pgp from '$lib/pgp';
import GraffitiEditor from '$lib/components/GraffitiEditor.svelte'; import GraffitiEditor from '$lib/components/GraffitiEditor.svelte';
import { chatWebSocket } from '$lib/chat/chatWebSocket';
let activeTab = 'profile'; let activeTab = 'profile';
let loading = false; let loading = false;
@ -759,6 +760,23 @@
currentUser = { ...currentUser, userColor: result.color, colorCode: result.color }; currentUser = { ...currentUser, userColor: result.color, colorCode: result.color };
} }
// Fetch fresh token with updated color and store in localStorage
// This ensures chat reconnects with the new color
try {
const tokenResponse = await fetch('/api/user/token', { credentials: 'include' });
if (tokenResponse.ok) {
const tokenData = await tokenResponse.json();
if (tokenData.token) {
localStorage.setItem('token', tokenData.token);
}
}
} catch (e) {
console.error('Failed to refresh token:', e);
}
// Disconnect chat so it reconnects with fresh auth (new color)
chatWebSocket.disconnect();
// Clear message after 3 seconds // Clear message after 3 seconds
setTimeout(() => { colorMessage = ''; }, 3000); setTimeout(() => { colorMessage = ''; }, 3000);
} else { } else {

BIN
frontend/static/timer.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB