Commit Graph
109 Commits
Author SHA1 Message Date
google-labs-jules[bot]andPR0M3TH3AN f7712f51a9 fix: initialize video modal share popover with correct arguments
- Update `js/ui/components/VideoModal.js` to correctly initialize the modal share popover using the `createPopover(trigger, renderFn, options)` signature instead of a single config object.
- Fix the flaky e2e test `tests/e2e/search-and-filter.spec.ts` by increasing the test timeout from 15s to 30s to allow more time for feed items to be retrieved from the network.
- Update `tests/e2e/video-modal-share-bug.spec.ts` to attach an `#uiOverlay` wrapper element for the popover so the DOM doesn't crash on tests.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-03-01 20:49:41 +00:00
google-labs-jules[bot]andPR0M3TH3AN f255bdd9bc chore(torch): execute daily agent run for ci-health-agent
- Resolve scheduler context and preflight exclusions
- Select `ci-health-agent` from roster using round-robin logic
- Acquire distributed lock for execution window
- Perform necessary repository check fixes (linting and tests)
- Publish successful completion lock event
- Write final `task-logs` event record
- Output execution summary

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-28 19:48:57 +00:00
thePR0M3TH3AN 34b0b03ad0 Merge branch 'unstable' into agents/daily/torch-garbage-collection-agent-2026-02-26-15639715828522871125 2026-02-26 21:42:21 -05:00
thePR0M3TH3AN 8d6e32be27 Merge branch 'unstable' into agents/daily/style-agent-1740615175-12694853261144843326 2026-02-26 21:40:23 -05:00
thePR0M3TH3AN 9448624753 Merge branch 'unstable' into agents/daily/todo-triage-agent-13829754158937187173 2026-02-26 21:38:12 -05:00
google-labs-jules[bot]andPR0M3TH3AN 5c2ba17459 chore: garbage collection and maintenance fixes
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-27 02:32:53 +00:00
google-labs-jules[bot]andPR0M3TH3AN a649c341e0 I have updated the nostr-tools usage and resolved the UI bugs. Here are the details of the changes:
- Updated `js/nostr/adapters/nsecAdapter.js` to ensure private keys are `Uint8Array` bytes before passing to `getPublicKey`, fixing compatibility with `nostr-tools` v2.
- Updated `tests/nostr/nip46Client.test.js` to use byte arrays for keys in crypto operations.
- Implemented missing `setupModalMorePopover`, `setupModalSharePopover`, and `refreshModalMoreMenuPanel` in `VideoModal.js`.
- Fixed a bug in `VideoModal.js` where `setCommentComposerState` was overriding `CommentsController` send button logic; it now delegates to the controller if available.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-27 02:14:29 +00:00
google-labs-jules[bot]andPR0M3TH3AN 089556acd1 chore(todo-triage): daily scan and minor fixes
- Ran `todo-triage-agent` scan (0 actionable items found).
- Fixed inline style lint error in `tests/ui/components/DeleteModal.test.mjs`.
- Fixed duplicate import syntax error in `js/ui/components/RevertModal.js`.
- Initialized `modalNavScrollHandler` in `VideoModal` constructor to improve test stability.
- Updated scheduler memory.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-27 02:14:06 +00:00
google-labs-jules[bot]andPR0M3TH3AN bf076578e9 fix(ci): resolve nostr-tools v2 compatibility and VideoModal regressions
- Fix `nostr-tools` v2 compatibility:
  - Update `js/nostr/adapters/nsecAdapter.js` to convert hex private keys to `Uint8Array` before passing to `getPublicKey`.
  - Update `js/nostr/nip46Client.js` to ensure keys are bytes for `getPublicKey`.
  - Update `tests/nostr/nip46Client.test.js` and `tests/nostr-private-key-signer.test.mjs` to use `Uint8Array` for keys.
- Fix `VideoModal` regressions:
  - Add missing delegation methods (`setCommentsVisibility`, `clearComments`, `resetCommentComposer`, `setCommentStatus`, `setCommentComposerState`, `appendComment`, `renderComments`, `setCommentSectionCallbacks`, `hideCommentsDisabledMessage`, `showCommentsDisabledMessage`, `updateCommentCharCount`, `updateCommentSubmitState`) to `js/ui/components/VideoModal.js`.
  - Expose getters for `commentsList`, `commentsComposer`, etc., in `VideoModal.js` to support tests.
  - Implement `setCallbacks` in `js/ui/components/video-modal/commentsController.js` and ensure robust initialization when DOM elements are missing.
  - Fix `open()` and `updateSourceAvailability()` in `VideoModal.js` to correctly re-enable Share, Embed, and Copy Magnet buttons.
- Fix `DeleteModal` tests to comply with linting rules (avoid direct `.style` assignment).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-27 02:08:58 +00:00
google-labs-jules[bot]andPR0M3TH3AN 7427961a69 fix(ci): resolve various test failures and nostr-tools v2 compatibility
- Fix duplicate imports/declarations in `js/ui/components/RevertModal.js`
- Update `js/nostr/nip46Client.js` to pass `Uint8Array` keys to `getConversationKey` for compatibility with `nostr-tools` v2
- Fix NIP-46 compliance tests by using correct key types and improved mocks
- Implement missing methods in `js/ui/components/VideoModal.js` (`handleCopyRequest`, `setCommentsVisibility`, etc.) to fix runtime crashes in tests
- Ensure `VideoModal` stores comment composer state locally to support external controller updates in tests
- Update DM integration tests to use `Uint8Array` keys for `nostr-tools` helpers
- Fix linting issue in `tests/ui/components/DeleteModal.test.mjs` using `Object.defineProperty`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-27 01:52:00 +00:00
google-labs-jules[bot]andPR0M3TH3AN 6a7dbf8c7d fix(ui): restore missing methods in VideoModal.js to prevent initialization crash
- Restore missing handlers (`handleCopyRequest`, `handleShareRequest`, `handleEmbedRequest`, `handleCreatorNavigation`, `handleModalMoreButtonClick`, `handleReactionClick`) and setup methods (`setupModalMorePopover`, `setupModalSharePopover`, `bindVideoEvents`, `detachVideoEvents`, `bindActionButtons`, `updateSourceAvailability`, `updateSourceToggleState`, `attachAmbientGlow`, `teardownAmbientGlow`, `refreshModalMoreMenuPanel`).
- Fixes `TypeError: Cannot read properties of undefined (reading 'bind')` in `VideoModal` constructor which caused E2E test timeouts and unit test failures.
- Implement methods using standard patterns and available imports (`popoverEngine`, `videoMenuRenderers`, `ambientBackground`).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-27 01:31:28 +00:00
google-labs-jules[bot]andPR0M3TH3AN 5aac1b2d21 fix(ci): address multiple test and build failures
- Fixed duplicate import and variable declaration in `js/ui/components/RevertModal.js` which caused syntax errors.
- Fixed missing method implementations in `js/ui/components/VideoModal.js` which caused `bind` errors during initialization.
- Fixed NIP-46 compliance tests by updating mocks to match `nostr-tools` v2 structure.
- Updated `js/nostr/nip46Client.js` to ensure keys are passed as `Uint8Array` to `nostr-tools` helpers, maintaining compatibility with legacy hex strings.
- Updated `tests/nostr/dm-direct-message-flow.test.mjs` to use `Uint8Array` keys, fixing "expected Uint8Array" errors.
- Maintained the previous lint fix for `tests/ui/components/DeleteModal.test.mjs`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-27 01:15:53 +00:00
google-labs-jules[bot]andPR0M3TH3AN feb7ad765a Refactor VideoModal to delegate comments to CommentsController
Move comment-related logic and state from VideoModal.js to CommentsController.js.
Split CommentsController into CommentsController (orchestration), CommentsListRenderer (DOM management), and CommentNodeFactory (element creation) to maintain modularity and adhere to file size limits.
Update VideoModal to initialize and destroy CommentsController correctly.
Fix minor lint issues.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:53:34 +00:00
google-labs-jules[bot]andPR0M3TH3AN f022168c33 [decompose] extract Zap and LinkPreview controllers from VideoModal.js
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-20 01:39:25 +00:00
google-labs-jules[bot]andPR0M3TH3AN 54be0efcac [decompose] extract helpers from js/ui/components/VideoModal.js
Decomposed js/ui/components/VideoModal.js by extracting "Similar Video" and "Pointer Key" logic into a new helper module js/ui/components/VideoModalSimilarHelpers.js.

- Reduced VideoModal.js line count from 6334 to 6045.
- Added comprehensive unit tests for extracted helpers.
- Updated check-file-size.mjs baseline.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-14 11:46:47 +00:00
google-labs-jules[bot]andPR0M3TH3AN d2c6f0a32e chore(ai): document js/ui/components/VideoModal.js
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-13 15:48:06 +00:00
google-labs-jules[bot]andPR0M3TH3AN 2aae4094e7 [constants] refactor duplicate numeric constants
- Add `UI_FEEDBACK_DELAY_MS`, `DEBOUNCE_DELAY_MS`, and `NETWORK_RETRY_DELAY_MS` to `js/constants.js`.
- Replace magic numbers (5000, 2000, 1500) with semantic constants in:
  - `js/ui/notificationController.js`
  - `js/ui/profileModal/ProfileDirectMessageActions.js`
  - `js/ui/urlHealthController.js`
  - `js/app/uiCoordinator.js`
  - `js/ui/components/VideoModal.js`
  - `js/ui/components/UploadModal.js`
  - `js/services/dmNostrService.js`
  - `js/services/hashtagPreferencesService.js`
  - `js/app/feedCoordinator.js`
  - `js/services/moderationService.js`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-12 03:43:03 +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 c3e986c9d3 Improve relay hygiene and count status 2026-01-29 09:58:35 -05:00
google-labs-jules[bot]andPR0M3TH3AN bf96a02fec fix(VideoModal): ensure normalized tags retain hash prefix
Fixes a unit test failure in `tests/video-modal-controllers.test.mjs` where tags were expected to be prefixed with `#` but were stripped.

Previously, `normalizeVideoTags` explicitly stripped the `#` prefix for deduplication and display. This caused a mismatch with tests that expected the prefix.

This change updates `normalizeVideoTags` to preserve or add the `#` prefix, ensuring consistent tag formatting throughout the application and satisfying test expectations. This aligns with `tagPillList.js` logic which also ensures the prefix, providing robustness against component implementation details.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 17:46:13 +00:00
google-labs-jules[bot]andPR0M3TH3AN d81643b423 Fix CI failures in popover engine, tag trimming, and canvas mock
- Guard `js/ui/overlay/popoverEngine.js` against missing `window` and detached elements in `updatePosition`.
- Update `js/ui/components/VideoModal.js` `normalizeVideoTags` to strip `#` prefix, aligning with test expectations and display logic.
- Mock `HTMLCanvasElement.prototype.getContext` in `tests/video-modal-accessibility.test.mjs` to silence benign warnings.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 03:46:40 +00:00
google-labs-jules[bot]andPR0M3TH3AN cf1c81e61e fix(tests): resolve JSDOM errors and tag sorting failures
- Update `tests/video-modal-accessibility.test.mjs` to unconditionally stub `HTMLMediaElement` methods (`pause`, `load`), fixing "Not implemented" errors in JSDOM.
- Refactor `VideoModal.normalizeVideoTags` to preserve tag casing while normalizing for deduplication (lowercase + strip #) and ensuring correct display format.
- Update `js/ui/components/tagPillList.js` to conditionally prepend `#` only if missing, preventing double-hashing (e.g., `##tag`).
- Remove unused `normalizeHashtag` import in `VideoModal.js`.
- Verify fixes with `tests/video-modal-tags.test.mjs`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 03:17:15 +00:00
google-labs-jules[bot] b9f7ffd95e fix: eliminate black bars in video modal player
Enforce full-width/height video display and dynamic object-fit logic to prevent letterboxing and layout gaps.

- Add robust CSS overrides to 'css/tailwind.source.css' to ensure video fills the stage.
- Update 'VideoModal.js' to dynamically switch between 'cover' and 'contain' based on aspect ratio match.
- Handle ambient canvas positioning to prevent layout shifts.
2026-01-25 00:29:52 +00:00
thePR0M3TH3AN 1709972f14 Add embed action to video modal 2026-01-23 15:24:09 -05:00
google-labs-jules[bot] 92b95c9576 fix(ci): resolve hardcoded hex color lint errors
- replace hardcoded hex colors with rgb() equivalents in:
  - js/ui/loginModalController.js
  - js/ui/ambientBackground.js
  - js/ui/components/VideoModal.js
  - js/themeController.js
  - index.html
- exclude config/instance-config.js and config/validate-config.js from check-hex.js linting
- ensures CI lint jobs pass by adhering to token/rgb policy or exclusion lists

Signed-off-by: Jules <[email protected]>
2026-01-23 17:25:47 +00:00
google-labs-jules[bot] afa231da3e Fix: Enable video modal share button when source is available
The share button in the video modal was not being enabled correctly because `updateSourceAvailability` returned early if `sourceToggleContainer` was missing, skipping the `setShareEnabled` call.

This change ensures `setShareEnabled` is called based on `hasUrl` or `hasMagnet` before checking for `sourceToggleContainer`.

Added a regression test `tests/e2e/video-modal-share-bug.spec.ts`.
2026-01-23 04:51:14 +00:00
thePR0M3TH3AN b70d263eff Update share menu auth handling 2026-01-22 21:37:25 -05:00
google-labs-jules[bot] 0ec517d689 Refactor video modal Share button to use a popover menu
- Replaced direct copy-to-clipboard action with a Share menu.
- Added "Copy URL", "Share on Nostr", "Copy Magnet", and "Copy CDN Link" options.
- Moved "Copy Magnet" from the main modal interface to the menu.
- Updated `js/app.js` to handle `video:share-nostr` (placeholder), `video:copy-magnet`, and `video:copy-cdn` events.
- Removed deprecated `setCopyMagnetState` logic.
- Cleaned up `components/video-modal.html`.
2026-01-22 15:40:54 +00:00
thePR0M3TH3AN 0eacbd1063 Add cached link previews with privacy toggle 2026-01-19 13:06:50 -05:00
thePR0M3TH3AN 0ac64867da Add shared hashtag normalization helper 2026-01-18 13:35:34 -05:00
google-labs-jules[bot] e6ebbb8343 Fix blurred thumbnail visuals and add moderation buttons to SimilarContentCard
- Adds `blur-xl` class to `SimilarContentCard` thumbnails when blurred, ensuring visual consistency.
- Implements `createModerationOverrideButton`, `createModerationHideButton`, and `createModerationBlockButton` in `SimilarContentCard.js` to provide missing interactivity.
- Updates `VideoModal.js` to wire up moderation callbacks (`onModerationOverride`, `onModerationHide`, `onModerationBlock`) when initializing similar content cards, dispatching global moderation events.
- Ensures moderation actions in the similar content sidebar function identically to the main video player.
2026-01-16 13:34:29 +00:00
google-labs-jules[bot] 7dc60c36ef Add playback source toggle (CDN/P2P) to video modal
- Added toggle buttons and stat counters to `video-modal.html`.
- Updated `VideoModal.js` to manage toggle visibility (show if either source exists, disable unavailable option) and dispatch `playback:switch-source` events.
- Updated `app.js` to handle source switching by restarting playback with a `forcedSource`.
- Updated `playbackService.js` to respect `forcedSource` by bypassing probe logic when a specific source is requested.
2026-01-15 01:06:56 +00:00
google-labs-jules[bot] 6c3ac4d49f Implement video source toggle (CDN vs P2P)
- Added source toggle UI in `components/video-modal.html`.
- Updated `VideoModal.js` to manage toggle visibility (only when both URL and Magnet exist), update peer/server counts, and dispatch `playback:switch-source` events.
- Updated `PlaybackService.js` to support a `forcedSource` option, allowing bypassing of the URL probe when "torrent" is forced.
- Updated `app.js` to listen for the toggle event and re-initialize playback with the forced source preference.
- Updated `tests/ui/helpers/jsdom-test-helpers.mjs` to expose necessary globals for JSDOM testing.
- Verified functionality with targeted updates and existing unit tests.
2026-01-14 21:18:46 +00:00
thePR0M3TH3AN 06c3d9a978 Add breakpoint token helpers for media queries 2026-01-13 21:26:53 -05:00
thePR0M3TH3AN b48edbb055 Refactor inline styles to CSS rules 2026-01-13 21:13:32 -05:00
google-labs-jules[bot] 81e8b2ed40 Refine Video Modal moderation UI styles: blur creator avatar and fix text contrast. 2026-01-13 14:28:42 +00:00
google-labs-jules[bot] 0772d2fa09 Refactor Video Modal moderation UI to a persistent bar above the player. 2026-01-13 14:12:14 +00:00
google-labs-jules[bot] 1f47e161d4 Refactor Video Card and Modal layout to move view counts and use icons.
- Moved view count and comments to a new bottom engagement section in `VideoCard.js`.
- Replaced text labels with Eye and Message SVG icons in `VideoCard.js`.
- Updated `video-modal.html` to include an Eye icon for the view count.
- Refactored `VideoModal.js` to update only the text node for view counts, preserving the icon.
- Removed "views" text suffix in favor of a cleaner numeric display.
2026-01-12 21:01:47 +00:00
google-labs-jules[bot] 41ff140982 feat: enable dynamic comment loading and sorting 2026-01-07 03:03:46 +00:00
google-labs-jules[bot] cced268982 Fix: Ensure comments controller is initialized when opening video modal
This addresses an issue where comments would not display on the first load of the video modal if the DOM elements were not fully bound. The `open()` method now checks if the `commentsList` is missing or disconnected and re-initializes the `CommentsController` if necessary.

Also updated `tests/video-modal-accessibility.test.mjs` to fix a JSDOM environment issue with `navigator` mocking.
2026-01-07 00:59:47 +00:00
thePR0M3TH3AN a8119f5b43 Handle login-required comment visibility 2026-01-02 10:13:45 -05:00
thePR0M3TH3AN cac275a220 Normalize root comment keys before rendering 2025-11-04 15:06:17 -05:00
thePR0M3TH3AN 318eea15e3 Enhance VideoModal title handling and styling. Added responsive styles for video title in CSS, ensuring proper overflow handling. Updated JavaScript to set video title dynamically, with fallback for missing elements and improved logging for debugging. 2025-11-02 19:30:05 -05:00
thePR0M3TH3AN b4d2370611 Trim video modal tag list to container width 2025-10-30 21:01:37 -04:00
thePR0M3TH3AN 18f6d135fc Handle skipped zap receipt validation 2025-10-29 15:59:33 -04:00
thePR0M3TH3AN 0724307202 Add zap receipt validation for zap receipts 2025-10-29 15:48:54 -04:00
thePR0M3TH3AN 9ef040f0ec Sanitize similar content avatars 2025-10-27 19:12:07 -04:00
thePR0M3TH3AN 429829b7a1 Refactor video modal into domain controllers 2025-10-26 18:02:53 -04:00
thePR0M3TH3AN 9dfe7ef20e Fix viewer mute blur regression and update modal overrides 2025-10-26 16:06:40 -04:00
thePR0M3TH3AN 065dafff88 Add restore-default moderation control 2025-10-26 11:13:37 -04:00