diff --git a/dashboard/src/routes/apps/[slug]/queues/+page.svelte b/dashboard/src/routes/apps/[slug]/queues/+page.svelte
index 3af7bd3..a5365a3 100644
--- a/dashboard/src/routes/apps/[slug]/queues/+page.svelte
+++ b/dashboard/src/routes/apps/[slug]/queues/+page.svelte
@@ -3,11 +3,17 @@
import { page } from '$app/state';
import { api, ApiError, type App, type QueueSummary } from '$lib/api';
+ import { onDestroy } from 'svelte';
+
let slug = $derived(page.params.slug ?? '');
let app = $state(null);
let queues = $state([]);
let loading = $state(false);
let error = $state(null);
+ /// F-U-013: queue depths change continuously. The page used to be a
+ /// page-load snapshot with no way to update without a hard refresh.
+ let autoRefresh = $state(false);
+ let autoRefreshHandle: ReturnType | null = null;
async function loadApp() {
try {
@@ -29,6 +35,23 @@
}
}
+ function setAutoRefresh(on: boolean) {
+ autoRefresh = on;
+ if (autoRefreshHandle) {
+ clearInterval(autoRefreshHandle);
+ autoRefreshHandle = null;
+ }
+ if (on) {
+ autoRefreshHandle = setInterval(() => {
+ void loadQueues();
+ }, 5000);
+ }
+ }
+
+ onDestroy(() => {
+ if (autoRefreshHandle) clearInterval(autoRefreshHandle);
+ });
+
$effect(() => {
void slug;
void loadApp();
@@ -47,6 +70,20 @@
Per-app durable queues. Producers call queue::enqueue(name, msg);
consumers register a queue:receive trigger. v1.1.9.
+
+
+
+
+
{#if error}