mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-29 17:02:28 +00:00
Run daily agent: perf-agent
Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
1 parent
5b188bca31
commit
268a980702
8 files changed
+237
No files matched your search
@@ -0,0 +1,5 @@
|
||||
# Context: Daily Perf Agent Run
|
||||
|
||||
Goal: Identify and fix performance issues (P0/P1) and audit upload docs.
|
||||
Scope: js/ codebase, specifically setInterval/raf loops and upload logic.
|
||||
DoD: One small fix applied, docs verified, report generated.
|
||||
@@ -0,0 +1,20 @@
|
||||
# Daily Performance Report: 2026-02-15
|
||||
|
||||
**Summary:** Identified and fixed unconditional background intervals in `js/services/exploreDataService.js`. Audited upload documentation.
|
||||
|
||||
## Findings & Fixes
|
||||
|
||||
### P1: Unconditional Background Intervals
|
||||
- **File:** `js/services/exploreDataService.js`
|
||||
- **Issue:** `watchHistoryInterval` (1m) and `tagIdfInterval` (5m) executed even when the tab was hidden, consuming resources unnecessarily.
|
||||
- **Fix:** Added `if (document.hidden) return;` check to the interval callbacks.
|
||||
- **Impact:** Reduces CPU/Network usage when the tab is in the background.
|
||||
|
||||
## Docs Audit
|
||||
- **Scope:** `content/docs/guides/upload-content.md` vs `js/ui/components/UploadModal.js` / `js/services/s3Service.js`.
|
||||
- **Status:** Verified.
|
||||
- **Notes:** File types, size limits, and CORS automation claims in documentation match the implementation.
|
||||
|
||||
## Artifacts
|
||||
- `perf/hits-2026-02-15.json`: Search pattern hits.
|
||||
- `js/services/exploreDataService.js`: Modified source.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Decisions Log
|
||||
|
||||
- Decision: Focusing on visibility gating for setInterval loops as a low-risk, high-impact fix.
|
||||
@@ -0,0 +1,8 @@
|
||||
# Daily Perf Agent - Completed
|
||||
|
||||
- Date: Sun Feb 15 09:43:51 UTC 2026
|
||||
- Agent: perf-agent
|
||||
- Findings: Found unconditional background intervals in js/services/exploreDataService.js.
|
||||
- Actions: Added visibility gating to setInterval loops.
|
||||
- Docs: Audited /content/docs/guides/upload-content.md, found no issues.
|
||||
- Report: daily-perf-report-2026-02-15.md
|
||||
@@ -156,11 +156,13 @@ export default class ExploreDataService {
|
||||
this.clearIntervals();
|
||||
if (Number.isFinite(this.historyRefreshIntervalMs) && this.historyRefreshIntervalMs > 0) {
|
||||
this.watchHistoryInterval = setInterval(() => {
|
||||
if (typeof document !== "undefined" && document.hidden) return;
|
||||
this.refreshWatchHistoryTagCounts({ reason: "interval" });
|
||||
}, this.historyRefreshIntervalMs);
|
||||
}
|
||||
if (Number.isFinite(this.idfRefreshIntervalMs) && this.idfRefreshIntervalMs > 0) {
|
||||
this.tagIdfInterval = setInterval(() => {
|
||||
if (typeof document !== "undefined" && document.hidden) return;
|
||||
this.refreshTagIdf({ reason: "interval" });
|
||||
}, this.idfRefreshIntervalMs);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
[
|
||||
"js/docsView.js:369: scrollSpyState.rafId = requestAnimationFrame(updateActiveFromScroll);",
|
||||
"js/docsView.js:447: : (callback) => requestAnimationFrame(callback);",
|
||||
"js/docsView.js:560: typeof requestAnimationFrame === \"function\"",
|
||||
"js/docsView.js:561: ? requestAnimationFrame",
|
||||
"js/docsView.js:562: : (callback) => setTimeout(callback, 0);",
|
||||
"js/viewCounter.js:75: persistTimer = setTimeout(() => {",
|
||||
"js/index.js:373: window.requestAnimationFrame(() => {",
|
||||
"js/index.js:807: timeoutId = window.setTimeout(() => {",
|
||||
"js/testHarness.js:201: requestAnimationFrame(check);",
|
||||
"js/testHarness.js:227: requestAnimationFrame(check);",
|
||||
"js/app.js:2752: nostrClient.pool,",
|
||||
"js/app.js:2830: if (!nostrClient?.pool || typeof nostrClient.pool.list !== \"function\") {",
|
||||
"js/app.js:2835: const events = await nostrClient.pool.list(relayList, [",
|
||||
"js/app.js:4315: * and do not re-trigger recursion here (no setTimeout).",
|
||||
"js/nostr/videoEventBuffer.js:62: this.flushTimerId = setTimeout(() => {",
|
||||
"js/nostr/nip04WorkerClient.js:59: workerInstance = new Worker(new URL(\"./nip04Worker.js\", import.meta.url), {",
|
||||
"js/nostr/nip04WorkerClient.js:95: const timeoutId = setTimeout(() => {",
|
||||
"js/nostr/adapters/nip07Adapter.js:31: await new Promise((resolve) => setTimeout(resolve, delay));",
|
||||
"js/nostr/watchHistory.js:983: const timer = setTimeout(async () => {",
|
||||
"js/nostr/toolkit.js:586: timer = setTimeout(() => {",
|
||||
"js/nostr/managers/SignerManager.js:542: await new Promise((resolve) => setTimeout(resolve, 500));",
|
||||
"js/nostr/managers/ConnectionManager.js:42: timeoutId = setTimeout(() => {",
|
||||
"js/nostr/managers/ConnectionManager.js:194: const timeout = setTimeout(() => {",
|
||||
"js/nostr/managers/ConnectionManager.js:269: this.relayReconnectTimer = setTimeout(async () => {",
|
||||
"js/nostr/managers/PersistenceManager.js:16: return setTimeout(callback, timeout);",
|
||||
"js/nostr/managers/PersistenceManager.js:249: this.cachePersistTimerId = setTimeout(() => {",
|
||||
"js/nostr/managers/EventsCacheStore.js:14: return setTimeout(callback, timeout);",
|
||||
"js/nostr/nip07Permissions.js:236: timeoutId = setTimeout(() => {",
|
||||
"js/nostr/nip07Permissions.js:421: const interval = setInterval(() => {",
|
||||
"js/nostr/nip46Connector.js:323: const timeoutId = setTimeout(() => {",
|
||||
"js/nostr/nip46Queue.js:49: await new Promise((r) => setTimeout(r, waitMs));",
|
||||
"js/nostr/dmDecryptWorkerClient.js:61: workerInstance = new Worker(",
|
||||
"js/nostr/dmDecryptWorkerClient.js:112: const timeoutId = setTimeout(() => {",
|
||||
"js/nostr/client.js:1438: timeoutId = setTimeout(() => {",
|
||||
"js/nostr/nip46Client.js:1691: const timeoutId = setTimeout(() => {",
|
||||
"js/nostr/nip46Client.js:1758: await new Promise((r) => setTimeout(r, backoffMs));",
|
||||
"js/nostr/signRequestQueue.js:88: timeoutId = setTimeout(() => {",
|
||||
"js/relayManager.js:524: const timer = setTimeout(() => {",
|
||||
"js/relayManager.js:539: .then(() => nostrClient.pool.list([relayUrl], [filter]))",
|
||||
"js/relayManager.js:715: nostrClient.pool,",
|
||||
"js/payments/zapNotifications.js:231: doc?.defaultView?.setTimeout ||",
|
||||
"js/payments/zapNotifications.js:232: (typeof setTimeout === \"function\" ? setTimeout : null);",
|
||||
"js/payments/nwcClient.js:807: timeoutId: setTimeout(() => {",
|
||||
"js/payments/nwcClient.js:1323: entry.timeoutId = setTimeout(() => {",
|
||||
"js/webtorrent.min.js.map:1:{\"version\":3,\"file\":\"webtorrent.min.js\",\"mappings\":\"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 truncated
|
||||
"js/utils/asyncUtils.js:68: timeoutId = setTimeout(() => {",
|
||||
"js/utils/torrentHash.js:14: const client = new WebTorrent({",
|
||||
"js/channelProfile.js:4124: setTimeout(() => {",
|
||||
"js/channelProfile.js:5400: const fallbackEvents = await nostrClient.pool.list(",
|
||||
"js/channelProfile.js:5412: nostrClient.pool.list([url], [filter])",
|
||||
"js/userBlocks.js:766: pool: nostrClient.pool,",
|
||||
"js/userBlocks.js:813: this.decryptRetryTimeoutId = setTimeout(() => {",
|
||||
"js/userBlocks.js:1410: setTimeout(",
|
||||
"js/userBlocks.js:2236: nostrClient.pool,",
|
||||
"js/subscriptions.js:460: this.decryptRetryTimeoutId = setTimeout(() => {",
|
||||
"js/subscriptions.js:649: setTimeout(",
|
||||
"js/subscriptions.js:851: pool: nostrClient.pool,",
|
||||
"js/subscriptions.js:919: timeoutId = setTimeout(",
|
||||
"js/subscriptions.js:1490: nostrClient.pool,",
|
||||
"js/subscriptions.js:2353: nostrClient.pool,",
|
||||
"js/webtorrent.js:350: timeoutId = setTimeout(() => {",
|
||||
"js/webtorrent.js:361: pollId = setInterval(() => {",
|
||||
"js/webtorrent.js:454: const timeout = setTimeout(() => {",
|
||||
"js/webtorrent.js:613: timeoutId = setTimeout(() => {",
|
||||
"js/webtorrent.js:618: pollId = setInterval(() => {",
|
||||
"js/webtorrent.js:676: await new Promise((resolve) => setTimeout(resolve, 1000));",
|
||||
"js/webtorrent.js:693: const timeout = setTimeout(() => {",
|
||||
"js/webtorrent.js:719: setTimeout(",
|
||||
"js/webtorrent.js:889: const timeoutId = setTimeout(() => {",
|
||||
"js/webtorrent.min.js:1:var e,t,s={1467:e=>{function t(e,t){if(\"string\"==typeof e[0])return e.join(\"\");if(\"number\"==typeof e[0])return new Uint8Array(e);const s=new Uint8Array(t);let i=0;for(let t=0,n=e.length;t<n;t++){const n=e[t];s.set(n,i),i+=n.byteLength||n.length}return s}e.exports=async function*(e,s=512,i={}){\"object\"==typeof s&&(s=(i=s).size);let{nopad:n,zeroPadding:r=!0}=i;n&&(r=!1);let o=[],a=0;for await(const i of e)if(a+=i.byteLength||i.length||1,o.push(i),a>=s){const e=t(o,a);let i=0;for(;a>=s;)yield e.slice(i,i+s),a-=s,i+=s;o=[e.slice(i,e.length)]}a&&(yield t(o,r?s:a))}},4497:(e,t,s)=>{const i=s(8454),n=s(9596);e.exports=class{constructor(e,t){if(this.store=e,this.chunkLength=e.chunkLength,this.inProgressGets=new Map,!this.store||!this.store.get||!this.store.put)throw new Error(\"First argument must be abstract-chunk-store compliant\");this.cache=new i(t)}put(e,t,s=()=>{}){if(!this.cache)return n((()=>s(new Error(\"CacheStore closed\"))));this.cache.remove(e),this.store.put(e,t,s)}get(e,t,s=()=>{}){if(\"function\"==typeof t)return this.get(e,null,t);if(!this.cache)return n((()=>s(new Error(\"CacheStore closed\"))));t||(t={});let i=this.cache.get(e);if(i){const e=t.offset||0,r=t.length||i.length-e;return 0===e&&r===i.length||(i=i.slice(e,r+e)),n((()=>s(null,i)))}let r=this.inProgressGets.get(e);const o=!!r;r||(r=[],this.inProgressGets.set(e,r)),r.push({opts:t,cb:s}),o||this.store.get(e,((t,s)=>{t||null==this.cache||this.cache.set(e,s);const i=this.inProgressGets.get(e);this.inProgressGets.delete(e);for(const{opts:e,cb:n}of i)if(t)n(t);else{const t=e.offset||0,i=e.length||s.length-t;let r=s;0===t&&i===s.length||(r=s.slice(t,i+t)),n(null,r)}}))}close(e=()=>{}){if(!this.cache)return n((()=>e(new Error(\"CacheStore closed\"))));this.cache=null,this.store.close(e)}destroy(e=()=>{}){if(!this.cache)return n((()=>e(new Error(\"CacheStore closed\"))));this.cache=null,this.store.destroy(e)}}},4018:e=>{e.exports=function(){for(var e=navigator.hardwareConcurrency||1,t=[],s=0;s<e;s++)t.push({model:\"\",speed:0,times:{user:0,nice:0,sys:0,idle:0,irq:0}});return t}},7833:(e,t,s)=>{var i=s(717);t.formatArgs=function(t){if(t[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+t[0]+(this.useColors?\"%c \":\" \")+\"+\"+e.exports.humanize(this.diff),!this.useColors)return;const s=\"color: \"+this.color;t.splice(1,0,s,\"color: inherit\");let i=0,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{\"%%\"!==e&&(i++,\"%c\"===e&&(n=i))})),t.splice(n,0,s)},t.save=function(e){try{e?t.storage.setItem(\"debug\",e):t.storage.removeItem(\"debug\")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem(\"debug\")}catch(e){}!e&&void 0!==i&&\"env\"in i&&(e=i.env.DEBUG);return e},t.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&(\"renderer\"===window.process.type||window.process.__nwjs))return!0;if(\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))return!1;let e;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/))&&parseInt(e[1],10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})(),t.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"],t.log=console.debug||console.log||(()=>{}),e.exports=s(736)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}}},736:(e,t,s)=>{e.exports=function(e){function t(e){let s,n,r,o=null;function a(Line truncated
|
||||
"js/feedEngine/watchHistoryFeed.js:406: const events = await nostrClient.pool.list(mergedRelays, filters);",
|
||||
"js/feedEngine/watchHistoryFeed.js:514: const events = await nostrClient.pool.list(relays, [filter]);",
|
||||
"js/state/profileCache.js:24: setTimeout(callback, 1);",
|
||||
"js/adminListStore.js:297: if (!nostrClient.pool) {",
|
||||
"js/adminListStore.js:567: events = await nostrClient.pool.list(relays, [normalizedFilter]);",
|
||||
"js/adminListStore.js:911: nostrClient.pool,",
|
||||
"js/embed.js:255: const pool = nostrClient.pool;",
|
||||
"js/nostrPublish.js:79: const timeoutId = setTimeout(() => {",
|
||||
"js/ui/loginModalController.js:368: typeof this.window.setInterval !== \"function\"",
|
||||
"js/ui/loginModalController.js:374: this.modalCloseIntervalId = this.window.setInterval(handleClose, 500);",
|
||||
"js/ui/loginModalController.js:516: typeof this.window.setInterval === \"function\" &&",
|
||||
"js/ui/loginModalController.js:519: const timerId = this.window.setInterval(() => {",
|
||||
"js/ui/loginModalController.js:1544: setTimeout(() => {",
|
||||
"js/ui/loginModalController.js:1591: if (this.window && typeof this.window.setTimeout === \"function\") {",
|
||||
"js/ui/loginModalController.js:1592: this.nip46AutoStartTimer = this.window.setTimeout(autoStart, 0);",
|
||||
"js/ui/loginModalController.js:2193: if (!this.window || typeof this.window.setTimeout !== \"function\") {",
|
||||
"js/ui/loginModalController.js:2197: const timerId = this.window.setTimeout(() => {",
|
||||
"js/ui/engagementController.js:382: typeof window.setTimeout === \"function\"",
|
||||
"js/ui/engagementController.js:384: window.setTimeout(() => {",
|
||||
"js/ui/applicationBootstrap.js:899: if (this.window && typeof this.window.setTimeout === \"function\") {",
|
||||
"js/ui/applicationBootstrap.js:900: this.window.setTimeout(() => {",
|
||||
"js/ui/shareNostrController.js:184: this.services.nostrClient.pool,",
|
||||
"js/ui/components/hashtagStripHelper.js:231: typeof this.window.requestAnimationFrame === \"function\" &&",
|
||||
"js/ui/components/hashtagStripHelper.js:234: this.window.requestAnimationFrame(() => {",
|
||||
"js/ui/components/hashtagStripHelper.js:240: if (this.window && typeof this.window.setTimeout === \"function\") {",
|
||||
"js/ui/components/hashtagStripHelper.js:241: this.window.setTimeout(() => {",
|
||||
"js/ui/components/hashtagStripHelper.js:248: this.window.setTimeout(() => {",
|
||||
"js/ui/components/hashtagStripHelper.js:332: if (typeof this.window.requestAnimationFrame === \"function\") {",
|
||||
"js/ui/components/hashtagStripHelper.js:333: const frameId = this.window.requestAnimationFrame(() => {",
|
||||
"js/ui/components/hashtagStripHelper.js:344: const timeoutId = this.window.setTimeout(() => {",
|
||||
"js/ui/components/VideoModal.js:1565: if (!this.window || typeof this.window.setTimeout !== \"function\") {",
|
||||
"js/ui/components/VideoModal.js:1573: const nextId = this.window.setTimeout(() => {",
|
||||
"js/ui/components/UploadModal.js:790: setTimeout(() => {",
|
||||
"js/ui/components/EditModal.js:489: window.requestAnimationFrame(() => {",
|
||||
"js/ui/overlay/popoverEngine.js:364: if (typeof view.requestAnimationFrame === \"function\") {",
|
||||
"js/ui/overlay/popoverEngine.js:365: view.requestAnimationFrame(restoreScroll);",
|
||||
"js/ui/overlay/popoverEngine.js:369: if (typeof view.setTimeout === \"function\") {",
|
||||
"js/ui/overlay/popoverEngine.js:370: view.setTimeout(restoreScroll, 0);",
|
||||
"js/ui/overlay/popoverEngine.js:385: if (!view || typeof view.setTimeout !== \"function\") {",
|
||||
"js/ui/overlay/popoverEngine.js:391: menuState.typeaheadTimeout = view.setTimeout(() => {",
|
||||
"js/ui/notificationController.js:93: if (this.window && typeof this.window.setTimeout === \"function\") {",
|
||||
"js/ui/notificationController.js:94: this.errorAutoHideHandle = this.window.setTimeout(() => {",
|
||||
"js/ui/notificationController.js:117: defaultView?.setTimeout || (typeof setTimeout === \"function\" ? setTimeout : null);",
|
||||
"js/ui/notificationController.js:231: if (this.window && typeof this.window.setTimeout === \"function\") {",
|
||||
"js/ui/notificationController.js:232: this.successAutoHideHandle = this.window.setTimeout(() => {",
|
||||
"js/ui/profileModal/ProfileDirectMessageRenderer.js:268: if (typeof window !== \"undefined\" && window && window.setTimeout) {",
|
||||
"js/ui/profileModal/ProfileDirectMessageRenderer.js:272: this.messagesStatusClearTimeout = window.setTimeout(() => {",
|
||||
"js/ui/profileModal/ProfileDirectMessageRenderer.js:819: typeof window !== \"undefined\" && typeof window.setTimeout === \"function\"",
|
||||
"js/ui/profileModal/ProfileDirectMessageRenderer.js:820: ? window.setTimeout.bind(window)",
|
||||
"js/ui/profileModal/ProfileDirectMessageRenderer.js:821: : setTimeout;",
|
||||
"js/ui/dm/MessageThread.js:154: setTimeout(() => {",
|
||||
"js/ui/dm/MessageThread.js:158: setTimeout(() => {",
|
||||
"js/ui/dm/MessageThread.js:180: setTimeout(initializeScroll, 300);",
|
||||
"js/ui/dm/MessageThread.js:185: setTimeout(initializeScroll, 0);",
|
||||
"js/ui/dm/ConversationList.js:105: setTimeout(() => {",
|
||||
"js/ui/dm/ConversationList.js:108: setTimeout(() => {",
|
||||
"js/ui/dm/ConversationList.js:119: setTimeout(() => {",
|
||||
"js/ui/dm/ConversationList.js:122: setTimeout(() => {",
|
||||
"js/ui/profileModalController.js:3166: window.requestAnimationFrame(() => {",
|
||||
"js/ui/profileModalController.js:3333: setTimeout(() => {",
|
||||
"js/ui/profileModalController.js:5557: requestAnimationFrame(() => {",
|
||||
"js/ui/profileModalController.js:5673: window.requestAnimationFrame(() => {",
|
||||
"js/ui/profileModalController.js:5778: window.requestAnimationFrame(() => {",
|
||||
"js/ui/ambientBackground.js:130: const requestFrame = win?.requestAnimationFrame?.bind(win) || ((cb) => setTimeout(() => cb(Date.now()), throttleMs));",
|
||||
"js/ui/urlHealthController.js:56: if (typeof requestAnimationFrame === \"function\") {",
|
||||
"js/ui/urlHealthController.js:57: requestAnimationFrame(() => {",
|
||||
"js/ui/urlHealthController.js:315: timeoutId = setTimeout(() => {",
|
||||
"js/ui/urlHealthController.js:418: timeoutId = setTimeout(() => {",
|
||||
"js/searchView.js:590: if (nostrClient && nostrClient.pool) {",
|
||||
"js/searchView.js:600: const events = await nostrClient.pool.list(relays, [filter]);",
|
||||
"js/searchView.js:686: if (relays.length > 0 && nostrClient.pool) {",
|
||||
"js/searchView.js:699: const events = await nostrClient.pool.list(relays, [filter]);",
|
||||
"js/storage/r2-mgmt.js:226: await new Promise((resolve) => setTimeout(resolve, pollInterval));",
|
||||
"js/app/playbackCoordinator.js:273: const intervalId = setInterval(callback, 3000);",
|
||||
"js/app/authSessionCoordinator.js:714: new Promise((resolve) => setTimeout(resolve, FEED_SYNC_TIMEOUT_MS)),",
|
||||
"js/app/authSessionCoordinator.js:792: typeof window !== \"undefined\" && typeof window.setTimeout === \"function\"",
|
||||
"js/app/authSessionCoordinator.js:793: ? window.setTimeout.bind(window)",
|
||||
"js/app/authSessionCoordinator.js:794: : setTimeout;",
|
||||
"js/app/authSessionCoordinator.js:1357: } else if (typeof setTimeout === \"function\") {",
|
||||
"js/app/authSessionCoordinator.js:1358: setTimeout(resolve, 0);",
|
||||
"js/nostrToolsBootstrap.js:133: timeoutId = setTimeout(() => {",
|
||||
"js/services/trustBootstrap.js:47: return new Promise((resolve) => setTimeout(resolve, ms));",
|
||||
"js/services/trustBootstrap.js:73: setTimeout(() => {",
|
||||
"js/services/r2Service.js:675: await new Promise((r) => setTimeout(r, 500));",
|
||||
"js/services/playbackService.js:493: stallTimerId = setTimeout(() => triggerFallback(\"stall\"), normalizedStallMs);",
|
||||
"js/services/playbackService.js:1136: const timer = setTimeout(() => {",
|
||||
"js/services/moderationService.js:1135: this.muteRefreshTimer = setTimeout(() => {",
|
||||
"js/services/moderationService.js:1188: const sub = this.nostrClient.pool.sub(relays, [filter]);",
|
||||
"js/services/moderationService.js:1845: events = await this.nostrClient.pool.list(relays, [filter]);",
|
||||
"js/services/moderationService.js:1941: const sub = this.nostrClient.pool.sub(relays, [filter]);",
|
||||
"js/services/moderationService.js:2042: events = await this.nostrClient.pool.list(relays, [filter]);",
|
||||
"js/services/moderationService.js:2055: const sub = this.nostrClient.pool.sub(relays, [filter]);",
|
||||
"js/services/moderationService.js:2479: results = await publishEventToRelays(this.nostrClient.pool, relays, signedEvent);",
|
||||
"js/services/dmNostrService.js:72: timeoutId = setTimeout(() => {",
|
||||
"js/services/dmNostrService.js:394: const timer = setTimeout(() => {",
|
||||
"js/services/commentThreadService.js:882: this.profileHydrationTimer = setTimeout(() => {",
|
||||
"js/services/commentThreadService.js:930: await new Promise((resolve) => setTimeout(resolve, backoffMs));",
|
||||
"js/services/nostrService.js:1806: const events = await this.nostrClient.pool.list([url], [filter]);",
|
||||
"js/services/nostrService.js:1946: const events = await this.nostrClient.pool.list(this.nostrClient.relays, [filter]);",
|
||||
"js/services/authService.js:1026: const fetchPromise = this.nostrClient.pool.list([relayUrl], filter);",
|
||||
"js/services/authService.js:1030: timeoutId = setTimeout(() => {",
|
||||
"js/services/hashtagPreferencesService.js:342: pool: nostrClient.pool,",
|
||||
"js/services/hashtagPreferencesService.js:528: this.decryptRetryTimeoutId = setTimeout(() => {",
|
||||
"js/services/hashtagPreferencesService.js:623: !nostrClient.pool ||",
|
||||
"js/services/hashtagPreferencesService.js:624: typeof nostrClient.pool.list !== \"function\"",
|
||||
"js/services/hashtagPreferencesService.js:627: `${LOG_PREFIX} nostrClient.pool.list unavailable; treating preferences as empty.`,",
|
||||
"js/services/hashtagPreferencesService.js:845: timeoutId = setTimeout(() => {",
|
||||
"js/services/hashtagPreferencesService.js:1404: nostrClient.pool,",
|
||||
"js/services/watchHistoryTelemetry.js:323: state[idKey] = this._getTimerHost().setTimeout(callback, remainingMs);",
|
||||
"js/services/relayHealthService.js:200: if (!this.nostrClient.pool || typeof this.nostrClient.pool.ensureRelay !== \"function\") {",
|
||||
"js/services/relayHealthService.js:208: this.nostrClient.pool.ensureRelay(relayUrl),",
|
||||
"js/services/relayHealthService.js:210: setTimeout(",
|
||||
"js/services/exploreDataService.js:11: workerInstance = new Worker(new URL(\"../workers/exploreData.worker.js\", import.meta.url), { type: \"module\" });",
|
||||
"js/services/exploreDataService.js:158: this.watchHistoryInterval = setInterval(() => {",
|
||||
"js/services/exploreDataService.js:163: this.tagIdfInterval = setInterval(() => {",
|
||||
"js/services/exploreDataService.js:217: this.watchHistoryRefreshHandle = setTimeout(() => {",
|
||||
"js/services/exploreDataService.js:227: this.tagIdfRefreshHandle = setTimeout(() => {"
|
||||
]
|
||||
@@ -0,0 +1,3 @@
|
||||
# Test Log
|
||||
|
||||
Starting execution at Sun Feb 15 09:38:06 UTC 2026
|
||||
@@ -0,0 +1,7 @@
|
||||
# TODO List
|
||||
|
||||
- [ ] Run search patterns
|
||||
- [ ] Analyze hits
|
||||
- [ ] Apply fix (visibility gating)
|
||||
- [ ] Audit docs
|
||||
- [ ] Generate report
|
||||
Reference in new issue
Block a user