Commit Graph
96 Commits
Author SHA1 Message Date
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
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 ba6b56dc26 Switch moderation hide flows to block 2025-10-25 21:54:31 -04:00
thePR0M3TH3AN 87bde7f022 Add moderation UI support to watch history cards 2025-10-25 19:39:18 -04:00
thePR0M3TH3AN 5b65d51262 Expand video modal moderation tests 2025-10-25 18:28:13 -04:00
thePR0M3TH3AN 2b7097b5f2 Add tag preference menu and state handling 2025-10-25 17:25:46 -04:00
thePR0M3TH3AN a642eb86d4 Refine video modal similar content layout 2025-10-24 22:14:43 -04:00
thePR0M3TH3AN f5cb3c4997 Merge pull request #876 from PR0M3TH3AN/codex/hide-admin-lightning-address-after-sending-zap
Hide platform lightning address in zap receipts
2025-10-24 21:52:59 -04:00
thePR0M3TH3AN 671ed1c30c Hide platform lightning address in zap receipts 2025-10-24 21:52:39 -04:00
thePR0M3TH3AN 665d7fd342 Enhance SimilarContentCard identity layout 2025-10-24 21:42:40 -04:00
thePR0M3TH3AN 5f1c4ad0bb feat: add similar content card for video modal 2025-10-24 21:15:52 -04:00
thePR0M3TH3AN 8b36a51b60 Deduplicate video modal comments and cache avatars 2025-10-24 20:53:18 -04:00
thePR0M3TH3AN f618f32705 Enhance comment threads with Nostr profile details 2025-10-24 17:31:07 -04:00