From 0f7db1a7df814a63d6d028d4a2dcb60d4f793bed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:56:41 +0000 Subject: [PATCH] This build was committed by a bot. --- .../{index-DhsVMGWU.js => index-B0CkbYOO.js} | 46 +++++-------------- dist/index.html | 2 +- dist/sw.js | 2 +- 3 files changed, 13 insertions(+), 37 deletions(-) rename dist/assets/{index-DhsVMGWU.js => index-B0CkbYOO.js} (97%) diff --git a/dist/assets/index-DhsVMGWU.js b/dist/assets/index-B0CkbYOO.js similarity index 97% rename from dist/assets/index-DhsVMGWU.js rename to dist/assets/index-B0CkbYOO.js index 665cc36..e15538c 100644 --- a/dist/assets/index-DhsVMGWU.js +++ b/dist/assets/index-B0CkbYOO.js @@ -650,18 +650,6 @@ const TKEY = "threads_v1", THREAD = window.THREAD = { list: [], load: async func if (!/^\s*You\b/.test(h.textContent || "")) return b.dataset.mid || null; } return null; -}, migrate: async function() { - const old = await localforage.getItem(TKEY); - if (Array.isArray(old) && old.length > 0 && old[0].messages) { - for (const t of old) { - if (t.messages) { - await localforage.setItem("t_" + t.id, t.messages); - delete t.messages; - } - } - await localforage.setItem(TKEY, old); - this.list = old; - } } }; const cacheStore = localforage.createInstance({ name: "threads_cache", storeName: "streams_status" }); async function ensureThreadOnFirstUser(text) { @@ -1168,32 +1156,21 @@ $(el.importInput).on("change", async () => { clearChat(); alert(`${added} new, ${updated} updated.`); } else if (importMode === "threads") { - const arr = Array.isArray(data) ? data : data.threads ? data.threads : data.id ? [data] : []; - if (!arr.length) throw new Error("No threads"); - const norm = (t) => ({ id: t.id || gid(), title: titleFrom(t.title || titleFrom(t.messages?.find?.((m) => m.role === "user")?.content || "")), pinned: !!t.pinned, updatedAt: t.updatedAt || Date.now(), messages: Array.isArray(t.messages) ? t.messages.filter((m) => m && m.role && m.content) : [] }); - const best = {}; - arr.forEach((t) => { - const n = norm(t), k = n.id, prev = best[k]; - best[k] = !prev || +n.updatedAt > +prev.updatedAt ? n : prev; - }); - let kept = 0, skipped = 0; - const idx = Object.fromEntries(THREAD.list.map((t) => [t.id, t])); - for (const th of Object.values(best)) { - const ex = idx[th.id]; - if (ex && +ex.updatedAt >= +th.updatedAt) { - skipped++; - continue; + if (!data || !data.id || !Array.isArray(data.messages)) throw new Error("Invalid thread format"); + const norm = (t) => ({ id: t.id || gid(), title: titleFrom(t.title || titleFrom(t.messages?.find?.((m) => m.role === "user")?.content || "")), pinned: !!t.pinned, updatedAt: t.updatedAt || Date.now() }); + const n = norm(data), msgs = data.messages, idx = THREAD.list.findIndex((x) => x.id === n.id); + if (idx > -1) { + if (n.updatedAt > THREAD.list[idx].updatedAt) { + THREAD.list[idx] = n; + await localforage.setItem("t_" + n.id, msgs); } - const msgs = th.messages; - delete th.messages; - if (!ex) THREAD.list.push(th); - else Object.assign(ex, th); - await localforage.setItem("t_" + th.id, msgs); - kept++; + } else { + THREAD.list.unshift(n); + await localforage.setItem("t_" + n.id, msgs); } await THREAD.save(); await renderThreads(); - alert(`${kept} imported, ${skipped} skipped (older).`); + alert("Thread imported."); } el.userMenu.classList.add("hidden"); } catch { @@ -1325,7 +1302,6 @@ const USER = window.USER = { log: async (s) => { localStorage.setItem("gcp_sa_json", v ? JSON.stringify(v) : ""); } }; async function init() { - await THREAD.migrate(); await SUNE.fetchDotSune("sune-org/store@main/marketplace.sune"); await THREAD.load(); await renderThreads(); diff --git a/dist/index.html b/dist/index.html index f98ca54..7c03cbc 100644 --- a/dist/index.html +++ b/dist/index.html @@ -12,7 +12,7 @@ - + diff --git a/dist/sw.js b/dist/sw.js index 3e0cc8a..4425b5d 100644 --- a/dist/sw.js +++ b/dist/sw.js @@ -1 +1 @@ -if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let o={};const d=e=>i(e,t),l={module:{uri:t},exports:o,require:d};s[t]=Promise.all(n.map(e=>l[e]||d(e))).then(e=>(r(...e),o))}}define(["./workbox-8c29f6e4"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"index.html",revision:"66b8a677ed424892d5add8e1dbb2b563"},{url:"assets/index-DhsVMGWU.js",revision:null},{url:"assets/index-CZ8Js0gk.css",revision:null},{url:"manifest.webmanifest",revision:"7a6c5c6ab9cb5d3605d21df44c6b17a2"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}); +if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let o={};const c=e=>i(e,t),l={module:{uri:t},exports:o,require:c};s[t]=Promise.all(n.map(e=>l[e]||c(e))).then(e=>(r(...e),o))}}define(["./workbox-8c29f6e4"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"index.html",revision:"cfbe3b8194fa72cc9cdff797b6e51a07"},{url:"assets/index-CZ8Js0gk.css",revision:null},{url:"assets/index-B0CkbYOO.js",revision:null},{url:"manifest.webmanifest",revision:"7a6c5c6ab9cb5d3605d21df44c6b17a2"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))});