Commit Graph
140 Commits
Author SHA1 Message Date
google-labs-jules[bot]andPR0M3TH3AN d94042c118 🧹 Centralize SimpleEventEmitter and fix channelProfile iterable error
- Extract duplicated SimpleEventEmitter class into shared utility `js/utils/eventEmitter.js`.
- Refactor AuthService, NostrService, ModerationService, and PlaybackService to use the shared class.
- Fix CI failure "matches is not iterable" in `js/channelProfile.js` by making `collectChannelVideos` synchronous and adding Array.isArray guards.
- Apply the same fix to `dist/js/channelProfile.js`.
- Add unit tests for SimpleEventEmitter.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:42:03 +00:00
google-labs-jules[bot]andPR0M3TH3AN aed0b28599 perf: replace linear scan for channel videos with O(1) indexed lookup
- Optimized `collectChannelVideos` in `js/channelProfile.js` to use `nostrService.ensureVideosByAuthorIndex()`.
- Optimized `updateProfileInDOM` in `js/app.js` to use the author index when decorating videos.
- Improved indexing consistency by using `nostrService.cacheVideos()` when updating `videosMap`.
- Refined fallback logic to return empty results directly when the index is authoritative.
- Established a performance baseline showing ~3000x speedup for video lookups.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 13:38:21 +00:00
google-labs-jules[bot]andPR0M3TH3AN bc04899f99 ⚡ Optimize linear scans for channel videos using Author Index
Replaced O(N) linear scans of app.videosMap with O(1) indexed lookups
using nostrService.ensureVideosByAuthorIndex().

- Optimized collectChannelVideos in js/channelProfile.js
- Optimized updateProfileInDOM in js/app.js
- Replaced direct videosMap.set calls with nostrService.cacheVideos()
  to ensure index consistency.
- Added fallback logic for robustness.

Benchmark results (10,000 videos, 100 authors, 1000 iterations):
- Baseline: 3.7s
- Optimized: 0.44ms (~8000x improvement)

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 13:12:27 +00:00
google-labs-jules[bot]andPR0M3TH3AN 19345e535e feat: parallelize zap retry execution
Optimize `executePendingRetry` in `js/channelProfile.js` to run zap attempts in parallel using `Promise.allSettled`, improving performance when retrying multiple shares.

Refactor `splitAndZap` in `js/payments/zapSplit.js` to accept `overrideFee` as an argument, eliminating reliance on a global variable and ensuring thread safety during parallel execution.

Update `js/ui/zapController.js` to use the new `splitAndZap` API.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-31 19:10:00 +00:00
google-labs-jules[bot]andPR0M3TH3AN 73541168f7 fix(subscriptions): improve reliability of list loading and button responsiveness
- Implemented optimistic UI updates for the channel subscribe button to improve responsiveness.
- Fixed a race condition in `js/subscriptions.js` and `js/services/hashtagPreferencesService.js` where lists were wiped on refresh due to `profileCache.activePubkey` not being initialized in time. Now using `profileCache.getProfileData(pubkey, ...)` to ensure the correct cache entry is loaded.
- Validated with targeted unit tests.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-26 18:56:34 +00:00
google-labs-jules[bot] ba28ceaf09 feat: add info popovers to feed views
- Added info buttons to Most Recent, Subscriptions, History, Channel Profile, Search, and Explore views
- Attached popovers with descriptions of feed filtration methods
- Used `attachFeedInfoPopover` helper for consistent implementation
- Verified with Playwright script (verified popover visibility and text content)
2026-01-21 20:59:11 +00:00
thePR0M3TH3AN eb52fbdf11 Add DM recipient handling in profile modal 2026-01-19 09:22:35 -05:00
thePR0M3TH3AN cabe0dbe0c Remove channel notify control wiring 2026-01-18 23:03:36 -05:00
thePR0M3TH3AN 06c7cf912a Add subscription toggle helper 2026-01-18 19:40:58 -05:00
thePR0M3TH3AN 6527004c2c Add channel message control handlers 2026-01-18 19:35:00 -05:00
google-labs-jules[bot] b83f5009e4 I have updated the zap dialog to display the "Done" button on success.
I modified `js/channelProfile.js` to implement the logic that toggles the "Send" button to "Done" and closes the dialog when clicked. Additionally, I updated `js/ui/zapController.js` to prevent the form from resetting entirely on success, which preserves receipts; instead, it now manually clears the comment and sets the completed state.

These changes ensure consistent "Done" button behavior across both the Channel Profile and Video Modal zap interfaces. I also included minor `package.json` updates for linting dependencies.
2026-01-18 01:58:56 +00:00
thePR0M3TH3AN b48edbb055 Refactor inline styles to CSS rules 2026-01-13 21:13:32 -05:00
thePR0M3TH3AN fbc352e460 Fix fallback thumbnail asset paths 2025-11-03 19:15:44 -05:00
thePR0M3TH3AN 98ea36bd93 Add wallet budget enforcement for NWC payments 2025-10-29 06:52:30 -04:00
thePR0M3TH3AN d84e324878 Handle partial zap receipt failures 2025-10-28 05:38:08 -04:00
thePR0M3TH3AN 8879c3a46d Handle zap allowance exhaustion 2025-10-27 21:41:44 -04:00
thePR0M3TH3AN be6162f5cd Reset wallet client after NWC timeouts 2025-10-27 19:56:18 -04:00
thePR0M3TH3AN 3ef44a6651 Hydrate video cards with cached creator identity 2025-10-27 19:03:31 -04:00
thePR0M3TH3AN 0944ecf32a Fix owner checks by reusing selected video details 2025-10-26 19:48:38 -04:00
thePR0M3TH3AN 078c8788b3 Add ensureLoaded helper for subscriptions and align error UX 2025-10-26 14:16:51 -04:00
thePR0M3TH3AN 065dafff88 Add restore-default moderation control 2025-10-26 11:13:37 -04:00
thePR0M3TH3AN 31cb2821e4 Keep moderation actions inline and add hide toggle 2025-10-25 22:32:34 -04:00
thePR0M3TH3AN 2622b401bc Replace bg panel alpha class with overlay token 2025-10-25 22:03:36 -04:00
thePR0M3TH3AN 7e5f9a74fd Merge pull request #912 from PR0M3TH3AN/codex/rename-hide-helpers-to-block
Switch moderation hide flows to block
2025-10-25 21:54:53 -04:00
thePR0M3TH3AN ba6b56dc26 Switch moderation hide flows to block 2025-10-25 21:54:31 -04:00
thePR0M3TH3AN b60a3840ad Merge pull request #911 from PR0M3TH3AN/codex/implement-video-card-management-with-map
Keep channel video cards updated on moderation events
2025-10-25 21:37:24 -04:00
thePR0M3TH3AN b53e5afc22 Track channel video cards to refresh moderation state 2025-10-25 21:37:10 -04:00
thePR0M3TH3AN 0cb5018b76 Merge pull request #910 from PR0M3TH3AN/codex/add-moderation-badge-slot-and-refactor
Keep moderation badges outside hidden card content
2025-10-25 21:28:48 -04:00
thePR0M3TH3AN 489638e882 Refine moderation badge layout 2025-10-25 21:28:30 -04:00
thePR0M3TH3AN fac5ca9d2b Apply moderation stage to channel profile videos 2025-10-25 21:24:45 -04:00
thePR0M3TH3AN 5cc0e136bd Add channel header moderation badge 2025-10-25 20:54:12 -04:00
thePR0M3TH3AN a0c6812e1b Decorate channel videos with moderation helpers 2025-10-25 18:52:38 -04:00
thePR0M3TH3AN 25f190aa90 Extend trusted mute moderation controls 2025-10-25 17:03:29 -04:00
thePR0M3TH3AN 9ed0fae127 refactor: route nostr imports through facades 2025-10-22 22:40:17 -04:00
thePR0M3TH3AN 75ea73b178 Refactor Nostr client imports 2025-10-22 20:55:54 -04:00
thePR0M3TH3AN 23482808b6 refactor: extract nostr toolkit helpers 2025-10-22 10:42:49 -04:00
thePR0M3TH3AN 6994223200 Refresh all video grids after moderation updates 2025-10-20 13:17:00 -04:00
thePR0M3TH3AN ca937418be Show login notification when zap controls clicked while logged out 2025-10-19 14:05:09 -04:00
thePR0M3TH3AN 4b745cc943 Merge pull request #662 from PR0M3TH3AN/codex/fix-notification-for-zap-button-when-not-logged-in
Ensure zap login requirement triggers notification
2025-10-18 21:34:14 -04:00
thePR0M3TH3AN 5071e2dd33 Restore subscribe toggle for logged-out users 2025-10-18 21:30:16 -04:00
thePR0M3TH3AN f1032fac2b Ensure zap login notice always shows 2025-10-18 20:16:25 -04:00
thePR0M3TH3AN 72033a900b Fix zap login notification handling 2025-10-18 20:04:58 -04:00
thePR0M3TH3AN 841f1dd7f5 Ensure zap login prompts use notification status portal 2025-10-18 19:44:01 -04:00
thePR0M3TH3AN a70c5072ea Ensure zap login error banner is always visible 2025-10-18 19:30:02 -04:00
thePR0M3TH3AN ba47173a25 Ensure zap login requirement triggers notification 2025-10-18 19:16:17 -04:00
thePR0M3TH3AN 25d0131c23 Prevent channel zap popover from clearing videos 2025-10-18 15:23:03 -04:00
thePR0M3TH3AN 46403f7191 Fix channel cache hydration after reload 2025-10-18 15:02:51 -04:00
thePR0M3TH3AN 19957d398f Improve zap popover toggling and logout handling 2025-10-18 14:51:51 -04:00
thePR0M3TH3AN d7b0faffa2 Improve zap login prompts and wallet pane handling 2025-10-18 14:33:13 -04:00
thePR0M3TH3AN a98705bb2f Preserve channel profile metadata and gate zap access 2025-10-18 14:13:10 -04:00