Commit Graph
843 Commits
Author SHA1 Message Date
thePR0M3TH3AN d32ab04c50 Merge pull request #2213 from PR0M3TH3AN/add-nip07-signing-adapter-tests-7079316761627658374
🧪 Add tests for NIP-07 signing adapter factory
2026-02-07 19:37:11 -05:00
thePR0M3TH3AN 50ab3c7b08 Merge pull request #2209 from PR0M3TH3AN/test/relay-health-improvements-4329305953965740034
test: improve relay health service error handling and robustness
2026-02-07 19:35:37 -05:00
thePR0M3TH3AN cc4ff6ff15 Merge pull request #2211 from PR0M3TH3AN/refactor-webtorrent-handlers-11970156008572777463
Refactor WebTorrent handlers
2026-02-07 19:34:45 -05:00
thePR0M3TH3AN 2eb4087d14 Merge pull request #2207 from PR0M3TH3AN/test-card-source-visibility-16442580899049333977
test: add tests for card source visibility logic
2026-02-07 19:34:31 -05:00
thePR0M3TH3AN 02af6a3b65 Merge pull request #2208 from PR0M3TH3AN/test/discussion-count-service-coverage-11952275705207036003
feat(test): Add DiscussionCountService error handling tests
2026-02-07 19:34:18 -05:00
google-labs-jules[bot]andPR0M3TH3AN 0020759231 Add tests for NIP-07 signing adapter factory
- Implements `createNip07SigningAdapter` in `js/auth/signingAdapter.js`.
- Adds unit tests in `tests/auth/signingAdapter.test.mjs` verifying explicit extension handling and window fallback.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 00:33:13 +00:00
thePR0M3TH3AN 5a1f28d8d5 Merge pull request #2206 from PR0M3TH3AN/test/grid-health-prioritization-7598004344208681336
test: improve gridHealth prioritization testing
2026-02-07 19:30:01 -05:00
google-labs-jules[bot]andPR0M3TH3AN b2eedb46df Refactor WebTorrent handlers to reduce duplication
- Merged `handleChromeTorrent` and `handleFirefoxTorrent` into `handleTorrentStream` with a `context` parameter.
- Preserved browser-specific logic (CORS workaround for Chrome, highWaterMark for Firefox).
- Added `tests/webtorrent-handlers.test.mjs` to cover the refactored logic.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 00:27:41 +00:00
google-labs-jules[bot]andPR0M3TH3AN 596da72cb1 test: improve relay health service error handling and robustness
- Adds a default connection timeout of 5000ms to `RelayHealthService.checkRelay`.
- Adds comprehensive tests for `RelayHealthService` covering:
    - Connection timeouts (mocked).
    - Failure thresholds for user logging.
    - Logging cooldowns (mocked time).
    - Relay `disconnect` and `error` event handling.
    - `nostrClient.markRelayUnreachable` integration.
- Refactors tests to use manual mocking for `setTimeout` and `Date.now` for stability.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 00:25:42 +00:00
google-labs-jules[bot]andPR0M3TH3AN 1ac9fee2ed feat(test): Add DiscussionCountService error handling tests
Add comprehensive tests for `DiscussionCountService` focusing on error handling, input validation, and caching.
- Covers happy path, partial results, and unsupported relays.
- Validates graceful degradation when `nostrClient` calls fail.
- Ensures no regression in service functionality.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 00:24:54 +00:00
google-labs-jules[bot]andPR0M3TH3AN 8c8b8fb29a test: add tests for card source visibility logic
- Added `tests/utils/cardSourceVisibility.test.mjs` to test `updateVideoCardSourceVisibility`.
- Covered scenarios for owner visibility, healthy sources, pending sources, and failed sources.
- Verified that card is hidden only when both sources (URL and Stream) are failed.
- Ensured graceful handling of null/undefined inputs.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 00:23:56 +00:00
google-labs-jules[bot]andPR0M3TH3AN a7d19fc1db test: improve gridHealth prioritization testing
- Extract `prioritizeEntries` logic to `js/gridHealthLogic.js` for testability
- Add comprehensive unit tests in `tests/grid-health.test.mjs`
- Improve `getIntersectionRect` to robustly handle invalid rects
- Ensure 0x0 rects are filtered out explicitly

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 00:22:16 +00:00
thePR0M3TH3AN 5188cfabf7 Merge pull request #2205 from PR0M3TH3AN/add-count-diagnostics-tests-5953252333821392151
🧪 Add tests for count diagnostics
2026-02-07 19:20:48 -05:00
thePR0M3TH3AN 566c2dbf89 Merge pull request #2204 from PR0M3TH3AN/test/video-pointer-tests-15855649223064850700
Add unit tests for videoPointer.js
2026-02-07 19:15:03 -05:00
thePR0M3TH3AN f0363ecf4c Merge branch 'unstable' into add-count-diagnostics-tests-5953252333821392151 2026-02-07 19:14:21 -05:00
thePR0M3TH3AN 6001b44c28 Merge pull request #2200 from PR0M3TH3AN/test/count-diagnostics-coverage-4678245393880204618
🧪 Add tests for count diagnostics
2026-02-07 19:12:41 -05:00
thePR0M3TH3AN 329ce5d842 Merge pull request #2203 from PR0M3TH3AN/test/max-listener-diagnostics-11773877660411760257
test: add tests for max listener diagnostics logic
2026-02-07 19:10:02 -05:00
google-labs-jules[bot]andPR0M3TH3AN 1cedccbdf3 Add tests for count diagnostics
Added `tests/nostr/countDiagnostics.test.mjs` to test `js/nostr/countDiagnostics.js`.
Covered `isVerboseDiagnosticsEnabled` logic, including `window` overrides and fallback.
Covered `logRelayCountFailure` and other logging functions, verifying message content, throttling, and error suppression.
Ensured that logging respects the verbose mode flag.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 00:09:19 +00:00
google-labs-jules[bot]andPR0M3TH3AN 01005eacb9 test(utils): add unit tests for videoPointer.js resolution logic
Adds comprehensive unit tests for `resolveVideoPointer` in `js/utils/videoPointer.js`.
The new tests cover:
- Happy paths for address (a-tag) and event (e-tag) pointers.
- Priority logic (dTag > videoRootId > fallbackEventId).
- Input normalization (trimming, lowercasing).
- Relay inclusion in pointer arrays.
- Default kind handling (fallback to 30078).
- Edge cases and invalid inputs returning null.

This improves test coverage for core video pointer resolution utility.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 00:05:18 +00:00
google-labs-jules[bot]andPR0M3TH3AN ab75153e0b test: add tests for max listener diagnostics logic
Exports `collectCandidateStrings` and `shouldSuppressWarning` from `js/nostr/maxListenerDiagnostics.js` to enable unit testing.
Adds `tests/nostr/maxListenerDiagnostics.test.mjs` to test the warning suppression logic and verify the `process.emitWarning` patch side effect.
Fixes missing `jsdom` dependency issue by running `npm install`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:57:14 +00:00
google-labs-jules[bot]andPR0M3TH3AN 549b184861 Add unit tests for count diagnostics module
Added a new test file `tests/nostr/countDiagnostics.test.mjs` to cover:
- `isVerboseDiagnosticsEnabled` configuration flag logic.
- Logging behavior for count failures (relay, timeout, rebroadcast, view).
- Throttling logic to ensure repeated warnings are suppressed.
- Error suppression for connection failures.

The tests use module reloading with cache busting to ensure isolation between test cases, as the module maintains internal state (`seenWarningKeys`).
Mocks `console.warn` to verify logging output without polluting stdout.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:51:47 +00:00
google-labs-jules[bot]andPR0M3TH3AN 24402792a8 test: add unit tests for exploreDataService.js
- Add `tests/services/exploreDataService.test.mjs` to test `buildWatchHistoryTagCounts`.
- Mock global `Worker` to simulate worker behavior.
- Mock `console.warn` to verify error logging and suppression.
- Use dynamic import to handle `devLogger` initialization dependent on global flags.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:51:11 +00:00
thePR0M3TH3AN 9110f1762b Merge pull request #2195 from PR0M3TH3AN/tests/zap-helpers-coverage-11165774273391187280
test: add unit tests for zap helpers
2026-02-07 18:22:25 -05:00
thePR0M3TH3AN 8ccf0dc8e1 Merge pull request #2187 from PR0M3TH3AN/test-improvement/comment-avatar-resolution-2019846885315383708
🧪 Add unit tests for comment avatar resolution
2026-02-07 18:20:08 -05:00
thePR0M3TH3AN b549069fc4 Merge pull request #2194 from PR0M3TH3AN/refactor/feed-coordinator-load-logic-7944534665779205819
🧹 Refactor feed loading logic into shared loadFeedVideos method
2026-02-07 18:19:51 -05:00
thePR0M3TH3AN 340e4cc50a Merge pull request #2191 from PR0M3TH3AN/ai/test-video-menu-renderers-13178145676174629231
🧪 Add tests for video menu renderers
2026-02-07 18:19:00 -05:00
thePR0M3TH3AN c290959a7e Merge pull request #2192 from PR0M3TH3AN/perf/batch-profile-refresh-14711465702211977594
⚡ Optimize profile refreshing with batch requests
2026-02-07 18:18:50 -05:00
google-labs-jules[bot]andPR0M3TH3AN 1fa72709d9 test: add unit tests for zap helpers
Add comprehensive unit tests for `js/ui/dm/zapHelpers.js` in `tests/ui/dm/zapHelpers.test.mjs`.

- Covers `formatZapAmount` for standard and compact notation.
- Covers `aggregateZapTotals` for aggregation logic and edge cases.
- Covers `normalizeZapReceipt` for input normalization.
- Ensures robust handling of invalid inputs (NaN, null, etc.).

Signed-off-by: Jules <[email protected]>

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:18:40 +00:00
thePR0M3TH3AN 85b0c2640f Merge pull request #2190 from PR0M3TH3AN/test-dom-utils-8159522647333333512
test(utils): add unit tests for domUtils
2026-02-07 18:18:10 -05:00
google-labs-jules[bot]andPR0M3TH3AN afd64ba1ce Refactor feed loading logic into shared loadFeedVideos method
- Introduce `loadFeedVideos(feedType, forceFetch)` in `js/app/feedCoordinator.js` to consolidate video loading logic.
- Update `loadForYouVideos`, `loadKidsVideos`, `loadExploreVideos`, and `loadVideos` to use the shared method.
- Parameterize feed-specific configuration (telemetry context, tags, loading messages, relay health checks) based on feed type.
- Add `tests/app/feedCoordinator.test.mjs` to verify the new logic.

Signed-off-by: Jules <[email protected]>

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:15:56 +00:00
google-labs-jules[bot]andPR0M3TH3AN aae2ea7d16 perf: use batch fetch for profile refresh
Replaces the sequential loop in `forceRefreshAllProfiles` with `batchFetchProfiles` to reduce network requests.
Updates `batchFetchProfilesFromRelays` to support `forceRefresh`, ensuring fresh data is requested while maintaining optimistic UI updates.
Adds unit tests for `forceRefresh` behavior.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:15:13 +00:00
google-labs-jules[bot]andPR0M3TH3AN 4d93ed25ce 🧪 Add tests for video menu renderers
Signed-off-by: Jules <[email protected]>

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:15:02 +00:00
google-labs-jules[bot]andPR0M3TH3AN 06865e5f46 test(utils): add unit tests for domUtils
- Added `tests/utils/domUtils.test.mjs` to test `escapeHTML` and `removeTrackingScripts`.
- Verified tests pass with `node:test` and JSDOM.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:14:18 +00:00
google-labs-jules[bot]andPR0M3TH3AN e79998f7b5 test: add unit tests for comment avatar resolution
Added a new test file `tests/unit/comment-avatar.test.mjs` to comprehensively test the `commentAvatar.js` utility. The tests cover:
- `normalizeCommentAvatarKey`: Verifies input sanitization and normalization.
- `resolveCommentAvatarAsset`: Verifies avatar resolution logic including defaults, failure handling, and caching strategies.
- `registerCommentAvatarFailure`: Verifies failure registration and cache invalidation.

This ensures robust handling of user avatars in comments, including edge cases like missing or failed images and cache persistence.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:12:11 +00:00
google-labs-jules[bot]andPR0M3TH3AN aefd6308a2 🧪 Add tests for DM decrypt diagnostics
- Added unit tests for `summarizeDmEventForLog` covering null/invalid inputs, valid events, and edge cases.
- Added unit tests for `sanitizeDecryptError` covering null/invalid inputs, string errors, and error objects.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 23:11:47 +00:00
google-labs-jules[bot]andPR0M3TH3AN a084bb59de refactor: deduplicate HEX64_REGEX to js/utils/hex.js
Moves the repeatedly defined HEX64_REGEX constant to a shared utility
module to improve maintainability and consistency. Updates all consumers
to import from the new location.

Signed-off-by: Jules <[email protected]>

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 21:52:51 +00:00
thePR0M3TH3AN 6c57794aa2 Merge pull request #2172 from PR0M3TH3AN/fix-known-issues-20260207-9290030417190436591
fix(tests): remediate known issues in LoginModal and VideoCard tests
2026-02-07 16:34:07 -05:00
google-labs-jules[bot]andPR0M3TH3AN cc9064617e fix(tests): remediate known issues in LoginModal and VideoCard tests
- Fix `LoginModalController` async activity leak by binding `setTimeout` to `this.window`.
- Fix `VideoCard` moderation test by explicitly updating `ModerationDecorator` settings.
- Verify `popover.spec.ts` issue persists and update `KNOWN_ISSUES.md`.
- Update `KNOWN_ISSUES.md` to reflect fixes and current status.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 18:36:41 +00:00
google-labs-jules[bot]andPR0M3TH3AN 6eb86b1459 test(ai): add unit tests for profileMetadataService (agent)
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-07 11:14:03 +00:00
Claude 47e900ebef perf: speed up nostr login by parallelizing list sync and decryption
Login with NIP-07 extensions was extremely slow because list loading
(blocks, subscriptions, hashtag preferences) happened sequentially and
each list's decryption tried encryption schemes one at a time.

Changes:
- Load blocks, subscriptions, and hashtags in parallel instead of
  sequentially (blocks no longer blocks other lists from starting)
- Use Promise.any() to try all decryption schemes simultaneously
  instead of trying nip44_v2 → nip44 → nip04 one-by-one
- Deduplicate same-family schemes (nip44/nip44_v2) to avoid redundant
  extension calls
- Increase NIP-07 request queue concurrency from 3 to 5 to support
  parallel decrypt operations during login
- Raise no-prompt decrypt timeout from 3s/5s to 8s since extensions
  that have already granted permission still need time to decrypt
- Increase feed sync timeout from 8s to 12s to give lists more time
  to settle before rendering unfiltered content

https://claude.ai/code/session_01V6m1gTecsppPrBHQnUyPnF
2026-02-06 22:23:46 +00:00
Claude 416a809ae4 fix: apply block/mute list filtering to DM messages and conversations
The user's block/mute list (NIP-51) was not being checked when
processing direct messages, allowing blocked users' messages to appear
in conversations, trigger notifications, and increment unseen counts.

This adds block filtering at four layers:
- nostrService.applyDirectMessage: drops incoming DMs from blocked users
  before they enter the in-memory message cache
- nostrService.persistDirectMessageRecord: prevents blocked DM senders
  from being persisted to IndexedDB or triggering notifications
- profileModalController.buildDmConversationData: filters blocked users
  from the conversation list UI (catches pre-block persisted messages)
- applicationBootstrap: excludes blocked-user conversations from the
  unread DM badge count

The block checker is injected via setDmBlockChecker() to keep
nostrService decoupled from userBlocks, wired up in app.js init().

https://claude.ai/code/session_01EAVLtAM14GN99Eik8otLg2
2026-02-06 19:41:50 +00:00
google-labs-jules[bot]andPR0M3TH3AN 849e00a2ff fix: resolve decryption timeouts and listener warnings
Increases NIP-07 concurrency to 3 and lowers priority for non-critical decryption tasks to prevent blocklist timeouts. Increases relay max listeners to 200 to mitigate warnings.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-06 02:00:56 +00:00
google-labs-jules[bot]andPR0M3TH3AN a375b8336b Fix slow/failing NIP-07 private-list sync & decryption
- Implemented concurrent queue for NIP-07 requests (max 2)
- Added pre-authorization step at login to prevent redundant prompts
- Sequentialized critical list loading (blocks, subscriptions)
- Optimized decryption with result caching and high priority for critical lists
- Fixed MaxListenersExceededWarning by increasing relay listener limit
- Added concurrency tests

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-06 01:26:41 +00:00
thePR0M3TH3AN 1dbac77753 update from claude 2026-02-05 19:31:19 -05:00
thePR0M3TH3AN 51a34b046a Merge pull request #2140 from PR0M3TH3AN/fix-moderation-fixture-visibility-check-4053965773964474745
fix(tests): resolve visibility check failure in moderation fixture
2026-02-05 19:29:06 -05:00
google-labs-jules[bot]andPR0M3TH3AN e5a49e79ed fix(tests): replace hex color to satisfy linter
Replace `#eee` with `lightgray` in `tests/visual/moderation.spec.ts` to comply with the project's no-hex-colors linting rule (except for allowed files). This style is injected only for test stability in headless environments.

Fixes CI failure in `lint:hex`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-06 00:19:36 +00:00
google-labs-jules[bot]andPR0M3TH3AN 55571c1c0d fix(tests): resolve visibility check failure in moderation fixture
Inject critical CSS styles in moderation fixture tests to prevent layout collapse in headless environments where external CSS loading might be delayed or fail to apply correctly. This ensures elements have dimensions before visibility checks run.

Additionally, update `waitForFixtureReady` to robustly wait for at least one visible card with non-zero dimensions, rather than assuming all cards are visible (as some fixtures start hidden).

Fixes: #moderation-fixture-visibility

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-06 00:13:06 +00:00
thePR0M3TH3AN e9f2cd66c3 Merge branch 'unstable' into fix/moderation-fixture-visibility-3216243228017029847 2026-02-05 18:19:51 -05:00
thePR0M3TH3AN 1f6c857dbf Merge branch 'unstable' into fix-moderation-test-visibility-6633763958860183568 2026-02-05 18:18:02 -05:00
google-labs-jules[bot]andPR0M3TH3AN e3d3adefa4 Fix visibility check failure in moderation visual tests
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-05 23:16:59 +00:00