Commit Graph
48 Commits
Author SHA1 Message Date
thePR0M3TH3ANandClaude Fable 5 86d7db4b1a cards: orange right-aligned zap-total badge next to view counts (#47 follow-up)
Video cards show the total sats from the shared zapTotals cache: new
--color-zap token (bitcoin orange, both themes), badge pushed to the
engagement row's end so views/comments stay left-aligned, hidden until a
nonzero total is known. The list view's zap binder fills [data-zap-total]
on bind (also scheduling the batched receipt fetch) and one shared change
listener updates every bound card as receipt batches land.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-03 21:49:35 -04:00
thePR0M3TH3ANandClaude Opus 4.8 dde0c35477 refactor(views): batch kind-30079 view counts via SubscriptionManager (P3)
Replaces the per-card view-count transport (each card: list + NIP-45 COUNT +
live sub, × relays — the ~880 REQ/s storm) with ONE shared batched kind-30079
subscription + ONE backfill list() over all visible cards, bucketed back to
per-pointer state by #a. Re-enables the VideoListView circuit-breaker.

Grid counts are convergent/approximate (cheap, persists via the existing view
cache); the watch page opts into an exact NIP-45 COUNT for its single pointer
(modalCoordinator passes { exact: true }) — accurate where it matters, one
request, no storm. Legacy per-pointer path retained for SubscriptionManager-less
environments (tests/mocks).

Verified: nip07-heat steady-idle with views on; flaky multi-relay harness still
all-PASS; new cheat-resistant batching+bucketing test. (Pre-existing
view-counter publish-session-tag failure is unrelated — fails at baseline.)

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-14 15:49:50 -04:00
thePR0M3TH3ANandClaude Opus 4.8 a3b205bfa1 fix(login-perf): kill relay REQ storms and feedback loops
Real-environment console logs revealed nip-07 login pegging the CPU and
starving encrypted-list decryption via relay REQ storms (~1000 REQ/s):

- moderationService.rebuildTrustedContacts emitted "contacts"
  unconditionally, forming an emit->fetch->emit loop (~1600 kind-3 REQ/s).
  Now emits only on actual change. Regression test added.
- Per-video live report (kind 1984) and view-count (kind 30079)
  subscriptions fan out O(videos x relays) and re-fire on every flaky-relay
  reconnect. Circuit-broken behind flags until batched (see refactor plan).
- onVideosShouldRefresh now coalesces forced reloads (2s leading-edge
  throttle) so list-change signals can't drive a reload loop.
- nip-07 queue reserves one foreground slot; DM decryption demoted to LOW
  so background DM backfill can't starve feed-driving lists. Test added.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-14 09:52:33 -04:00
google-labs-jules[bot]andPR0M3TH3AN b28e62963f perf: Batch video timestamp resolution to reduce N+1 network requests
- Implemented `hydrateVideoHistoryBatch` in `NostrClient` to fetch missing root events and sparse histories in a single `pool.list` request.
- Refactored `hydrateVideoHistory` to use shared helper methods `getLocalVideoHistory` and `_processAndCacheEvent`.
- Added `resolveVideoPostedAtBatch` to `PlaybackCoordinator` which delegates to the batched client method.
- Updated `VideoListView` to collect videos needing timestamp resolution and call the batch method, falling back to individual calls if necessary.
- Added regression test `tests/performance/resolvePostedAt.test.mjs` to verify reduced network calls.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 12:01:39 +00:00
thePR0M3TH3AN c3e986c9d3 Improve relay hygiene and count status 2026-01-29 09:58:35 -05:00
thePR0M3TH3AN 419a3f419c Add storage pointer tags to video posts 2026-01-26 22:07:32 -05:00
google-labs-jules[bot] 31751579a3 Fix: prevent thumbnail cache from being cleared on empty video lists
This commit addresses an issue where thumbnail images would "drop" (disappear/flicker) upon login or re-initialization of the video list.

Changes:
- Modified `js/ui/views/VideoListView.js` to add a guard clause in `cleanupThumbnailCache`.
- The function now returns early if the provided `videos` list is empty, preserving the existing `loadedThumbnails` cache during transient loading states.

Verification:
- Created a reproduction script (`reproduce_issue.mjs`) that confirmed the cache was being cleared on empty input.
- Verified the fix with the same script, ensuring the cache is preserved.
- Verified no regression in `npm run lint:hex` and `npm run lint:inline-styles`.
2026-01-25 17:44:21 +00:00
thePR0M3TH3AN 475f678681 Harden tag preference activation for popular tags 2026-01-22 20:16:24 -05:00
thePR0M3TH3AN d7434c5a98 Add scrollable tag strip option 2026-01-22 19:54:12 -05:00
thePR0M3TH3AN f91a35d89e Update tag strip activation payload 2026-01-22 19:48:56 -05:00
thePR0M3TH3AN a3a49742ca Refactor popular tag strip rendering 2026-01-22 19:44:09 -05:00
thePR0M3TH3AN 4e6ace408c Preserve explore feed ordering 2026-01-22 19:23:57 -05:00
thePR0M3TH3AN ebd825fb37 Add webseed-only status to WebTorrent probes 2026-01-15 09:37:25 -05:00
thePR0M3TH3AN aff9d11d25 Trim popular tag pills to container width 2025-10-30 16:44:02 -04:00
thePR0M3TH3AN 3ef44a6651 Hydrate video cards with cached creator identity 2025-10-27 19:03:31 -04:00
thePR0M3TH3AN 57a1587ab5 Sort video grid by original posted time 2025-10-26 12:11:53 -04:00
thePR0M3TH3AN 31cb2821e4 Keep moderation actions inline and add hide toggle 2025-10-25 22:32:34 -04:00
thePR0M3TH3AN ba6b56dc26 Switch moderation hide flows to block 2025-10-25 21:54:31 -04:00
thePR0M3TH3AN 2daffd0354 Fix admin cache hydration timing and video moderation handler 2025-10-25 17:46:57 -04:00
thePR0M3TH3AN 6144a84f7b Merge branch 'unstable' into codex/extend-tag-pill-rendering-and-add-menu-component 2025-10-25 17:29:39 -04:00
thePR0M3TH3AN 2b7097b5f2 Add tag preference menu and state handling 2025-10-25 17:25:46 -04:00
thePR0M3TH3AN 25f190aa90 Extend trusted mute moderation controls 2025-10-25 17:03:29 -04:00
thePR0M3TH3AN 876020b90f Add popular tag strip support to recent videos 2025-10-23 15:13:05 -04:00
thePR0M3TH3AN 0ec7c5e76c Add moderation overrides to video cards 2025-10-17 16:24:42 -04:00
thePR0M3TH3AN c40187f09f Align CDN health badge checking icon with torrent badge 2025-10-17 10:05:18 -04:00
thePR0M3TH3AN 4bba633332 Toggle card popovers when re-clicked 2025-10-16 22:56:30 -04:00
thePR0M3TH3AN b3d4220153 Preserve focus opt-out when closing video menus 2025-10-16 18:16:55 -04:00
thePR0M3TH3AN 7ef16cd004 Refactor video menus to overlay popovers 2025-10-16 11:33:31 -04:00
thePR0M3TH3AN 1d48358922 Refactor more menu controller to use popover engine 2025-10-16 11:07:23 -04:00
thePR0M3TH3AN 7ae07b1369 refactor: migrate console usage to shared loggers 2025-10-15 14:37:25 -04:00
thePR0M3TH3AN d705cf176b Revert "Refactor logging to centralized logger" 2025-10-15 11:14:10 -04:00
thePR0M3TH3AN 37ba57aa37 Refactor logging to centralized logger 2025-10-15 11:11:14 -04:00
thePR0M3TH3AN e767316501 feat: add semantic color palette and lint guard 2025-10-14 15:18:02 -04:00
thePR0M3TH3AN 8265f9e2de Add design system feature flag and runtime integration 2025-10-11 16:11:43 -04:00
thePR0M3TH3AN 18b1972fd8 Remove video card shim classes 2025-10-11 15:14:17 -04:00
thePR0M3TH3AN badcfc6944 Refactor zap popovers and more menus 2025-10-10 22:52:58 -04:00
thePR0M3TH3AN 3df86a7630 Add accessibility wiring for modals 2025-10-10 22:12:05 -04:00
thePR0M3TH3AN 16cb69021d Improve video modal accessibility handling 2025-10-10 11:08:21 -04:00
thePR0M3TH3AN 85258e27ea Respect NSFW flag while letting authors review their uploads 2025-10-09 22:58:07 -04:00
thePR0M3TH3AN 259b493a20 Add NSFW and kids flags to video schema 2025-10-09 22:22:38 -04:00
thePR0M3TH3AN e2935c23fd Cache health badge state to avoid re-flashing 2025-10-09 20:31:40 -04:00
thePR0M3TH3AN 4ed5c97678 Refactor discussion counts into dedicated service 2025-10-09 12:51:34 -04:00
thePR0M3TH3AN 0434401596 Show original posted timestamp for videos 2025-10-08 21:21:44 -04:00
thePR0M3TH3AN 31cad16403 feat: highlight private videos for owners 2025-10-08 09:47:44 -04:00
thePR0M3TH3AN d53ce6742a Hide private videos from non-owners 2025-10-08 09:41:38 -04:00
thePR0M3TH3AN 4a588ed5d5 Integrate feed engine into recent video flow 2025-10-04 16:36:00 -04:00
thePR0M3TH3AN ad58ff04a3 Refactor video UI component orchestration 2025-10-03 19:58:21 -04:00
thePR0M3TH3AN b46135cd36 Refactor video list rendering into dedicated view 2025-10-03 16:35:32 -04:00