mirror of
https://github.com/sune-org/store.git
synced 2026-01-13 16:17:58 +00:00
Sync: Create sune 'LIVE CHAT (alpha)'
This commit is contained in:
1
chatroom.sune
Normal file
1
chatroom.sune
Normal file
@@ -0,0 +1 @@
|
||||
[{"id":"4awhhn5","name":"LIVE CHAT (alpha)","pinned":false,"avatar":"","url":"gh://sune-org/store/chatroom.sune","updatedAt":1757300736808,"settings":{"model":"","temperature":"","top_p":"","top_k":"","frequency_penalty":"","repetition_penalty":"","min_p":"","top_a":"","verbosity":"","reasoning_effort":"default","system_prompt":"","html":"<!-- SuneBuilderGPT: WebSocket Status v0.1.1 -->\n<div class=\"max-w-sm mx-auto my-4 p-4 font-sans bg-white rounded-2xl border border-gray-200 shadow-lg text-sm\">\n <div class=\"flex justify-between items-baseline mb-3\">\n <h3 class=\"font-semibold text-gray-800\">WebSocket Status</h3>\n <span class=\"text-xs text-gray-400\">v0.1.1</span>\n </div>\n\n <div class=\"flex items-center gap-2 p-3 mb-3 bg-gray-50 rounded-lg\">\n <span id=\"wsStatusDot\" class=\"h-3 w-3 rounded-full bg-yellow-400 animate-pulse\"></span>\n <span id=\"wsStatusText\" class=\"font-medium text-gray-700\">Connecting...</span>\n </div>\n\n <pre id=\"wsLog\" class=\"w-full h-32 p-2 mb-3 bg-gray-900 text-white text-xs rounded-lg overflow-y-auto font-mono whitespace-pre-wrap break-all\">Connecting to endpoint...</pre>\n\n <div class=\"flex items-center gap-2\">\n <button id=\"wsToggleButton\" class=\"flex-1 px-4 py-2 text-white font-semibold bg-gray-800 rounded-lg hover:bg-gray-700 active:scale-[.98] transition-transform focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500\">Disconnect</button>\n <button id=\"wsClearLogButton\" title=\"Clear Log\" class=\"p-2 text-gray-500 bg-gray-100 rounded-lg hover:bg-gray-200 active:scale-[.98] transition-transform focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500\">\n <i data-lucide=\"trash-2\" class=\"h-5 w-5\"></i>\n </button>\n </div>\n</div>\n\n<script>\n(() => {\n const SID = window.SUNE.id || 'ws-sune';\n const URL = 'wss://chatsune.awww.workers.dev/ws';\n \n const dot = document.getElementById('wsStatusDot'), text = document.getElementById('wsStatusText'), logEl = document.getElementById('wsLog'), toggleBtn = document.getElementById('wsToggleButton'), clearBtn = document.getElementById('wsClearLogButton'), composer = document.getElementById('composer');\n \n if (!dot || !text || !logEl || !toggleBtn || !clearBtn || !composer) return console.error('Sune Error: Missing UI or main composer elements.');\n \n let ws = null;\n\n const log = m => {\n if (!logEl.textContent.endsWith('\\n')) logEl.textContent += '\\n';\n logEl.textContent += `[${new Date().toLocaleTimeString()}] ${m}`;\n logEl.scrollTop = logEl.scrollHeight;\n };\n\n const updateStatus = (status, color, isConnected) => {\n text.textContent = status;\n dot.className = `h-3 w-3 rounded-full ${color}`;\n dot.classList.toggle('animate-pulse', status === 'Connecting...');\n toggleBtn.textContent = isConnected ? 'Disconnect' : 'Connect';\n };\n\n const disconnect = () => ws && ws.readyState < 2 && (ws.close(), log('Manual disconnection.'));\n\n const connect = () => {\n if (ws && ws.readyState < 2) return;\n \n updateStatus('Connecting...', 'bg-yellow-400', false);\n ws = new WebSocket(URL);\n \n ws.onopen = () => {\n updateStatus('Connected', 'bg-green-500', true);\n log('Connection established.');\n ws.send(JSON.stringify({ type: 'ping', rid: SID }));\n };\n ws.onmessage = e => log(`RECV: ${e.data}`);\n ws.onerror = () => (updateStatus('Error', 'bg-red-500', false), log('Connection error.'));\n ws.onclose = () => (updateStatus('Disconnected', 'bg-gray-400', false), log('Connection closed.'), ws = null);\n };\n\n composer.addEventListener('sune:send', e => {\n const msg = e.detail?.message;\n if (!msg) return;\n \n const txt = (Array.isArray(msg.content) ? msg.content.filter(p=>p.type==='text').map(p=>p.text).join('\\n') : String(msg.content||'')).trim();\n if(txt) log(`SENT: ${txt.length>80?txt.slice(0,80)+'...':txt}`);\n\n if (ws && ws.readyState === 1) ws.send(JSON.stringify({ type: 'message', rid: SID, payload: msg }));\n else log('Cannot send, WS disconnected.');\n });\n\n toggleBtn.onclick = () => ws && ws.readyState === 1 ? disconnect() : connect();\n clearBtn.onclick = () => logEl.textContent = 'Log cleared.';\n \n connect();\n window.lucide?.createIcons();\n})();\n</script>\n","extension_html":"<sune src='https://raw.githubusercontent.com/sune-org/store/refs/heads/main/sync.sune' private />","hide_composer":false},"storage":{}}]
|
||||
Reference in New Issue
Block a user