Commit Graph
517 Commits
Author SHA1 Message Date
thePR0M3TH3AN 040e9e0224 Merge branch 'unstable' into codex/enhance-filter-popover-accessibility 2026-01-23 13:43:29 -05:00
thePR0M3TH3AN 7eea5110b5 Improve search filter popover accessibility 2026-01-23 13:41:24 -05:00
thePR0M3TH3AN 4a7b9dc602 Merge branch 'unstable' into jules-fix-sidebar-and-baseline-297374874061158968 2026-01-23 13:37:52 -05:00
google-labs-jules[bot] 03a54b999f fix(ui): initialize sidebar logic before app ready and update visual baseline
Moves the sidebar density and toggle initialization logic in `js/index.js` to execute immediately after `loadSidebar` completes, rather than waiting for `applicationReadyPromise`. This resolves a race condition where the sidebar toggle was unresponsive during application startup (e.g. relay connection), causing `overlay-layers.spec.ts` to timeout.

Also updates the visual baseline for `video-modal-mobile` in `kitchen-sink.spec.ts` to match current rendering (height change), addressing the reported visual regression failure.

Verified with reproduction script and running visual tests locally.
2026-01-23 18:36:38 +00:00
thePR0M3TH3AN d378ee2be6 Add suggested facet counts to search filters 2026-01-23 13:35:00 -05:00
thePR0M3TH3AN 90fded1d71 Merge branch 'unstable' into jules-fix-sidebar-and-baseline-297374874061158968 2026-01-23 13:30:06 -05:00
google-labs-jules[bot] a01814b962 fix(ui): initialize sidebar logic before app ready and update visual baseline
Moves the sidebar density and toggle initialization logic in `js/index.js` to execute immediately after `loadSidebar` completes, rather than waiting for `applicationReadyPromise`. This resolves a race condition where the sidebar toggle was unresponsive during application startup (e.g. relay connection), causing `overlay-layers.spec.ts` to timeout.

Also updates the visual baseline for `video-modal-mobile` in `kitchen-sink.spec.ts` to match current rendering (height change), addressing the reported visual regression failure.

Verified with reproduction script and running visual tests locally.
2026-01-23 18:28:50 +00:00
thePR0M3TH3AN 9a381b79db Add search filter presets 2026-01-23 13:22:02 -05:00
thePR0M3TH3AN 19aa272bae Enhance search query parsing and filters 2026-01-23 13:13:40 -05:00
thePR0M3TH3AN 81513b338b Add search sort options and stable sorting 2026-01-23 12:58:12 -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
thePR0M3TH3AN 460ba22d51 Add search filter state syncing 2026-01-23 12:07:55 -05:00
thePR0M3TH3AN f7016f78f7 Add search filters popover component 2026-01-23 11:53:37 -05:00
google-labs-jules[bot]andPR0M3TH3AN c27fc4bae7 Design System Audit: Fix inline styles
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-23 15:42:05 +00:00
thePR0M3TH3AN 36c19fa3d2 Merge pull request #1582 from PR0M3TH3AN/unify-styling-tokens-15997766081724410140
Refactor hardcoded styles to use token constants
2026-01-23 10:20:13 -05:00
thePR0M3TH3AN c2a40a6c5c Merge pull request #1579 from PR0M3TH3AN/dm-refresh-and-ui-tweaks-3319475114858168104
Add DM refresh button and update UI styles
2026-01-23 10:17:30 -05:00
google-labs-jules[bot] 3cd0532972 Refactor hardcoded styles to use token constants
Replaces hardcoded breakpoint values in `VideoCard.js` and `tailwind.source.css` with token constants and valid CSS calculations. Updates the token linting script to enforce these rules by removing the previous allowlists for these files. This ensures that all UI elements are defined by the central styling system.
2026-01-23 15:16:28 +00:00
google-labs-jules[bot] ac9c09c852 feat(dm): add refresh button, fix transparency, and update settings icon
- Added a forced refresh button to the conversation list in the DM tab (via `onRefreshConversations` in `ProfileModalController`).
- Updated the DM settings gear icon to use `icon-button accent-action-button` classes, matching the `VideoCard` style.
- Ensured the `dm-app-shell` container has a transparent background when rendered inside the profile modal to prevent visual clashes with the modal backdrop.
2026-01-23 15:13:45 +00:00
google-labs-jules[bot] 6541421928 Fix NIP-46 QR code styling to use tokenized colors and utility classes
Updated `js/ui/loginModalController.js` to resolve QR code colors from CSS variables (`--color-white`, `--color-black`) instead of hardcoding hex values, ensuring compatibility with the design system.
Updated `components/login-modal.html` to use Tailwind utility classes (`bg-white`, `text-black`, `p-6`) instead of inline styles, improving maintainability and readability.
This ensures the QR code remains scannable (high contrast) while respecting the codebase's tokenized styling approach.
2026-01-23 14:49:28 +00:00
google-labs-jules[bot] 57c065125c Fix NIP-46 QR code styling to ensure white background
Hardcoded the QR code colors to black-on-white and added explicit inline styles to the container to prevent theme-based inversions or transparency issues. Increased container padding to improve readability.
2026-01-23 14:29:59 +00:00
google-labs-jules[bot] 145796c5e0 Add forced refresh button to DM list and update UI styles
- Add a refresh button to `ConversationList` header.
- Make DM sidebar background transparent.
- Update DM settings gear icon to match `VideoCard` style.
- Wire up refresh action in `ProfileModalController` to force-fetch messages.
2026-01-23 14:04:55 +00:00
thePR0M3TH3AN 46ee5cd8b8 Add kids feed telemetry tracking 2026-01-23 02:22:19 -05:00
thePR0M3TH3AN a36ea40288 Add kids feed registration and sorter 2026-01-23 01:59:57 -05:00
google-labs-jules[bot] 9a27761fe2 Redesign DM profile pane: Split view, independent scrolling, avatars, and cleanup
- Refactored `AppShell` to implement a split-pane layout for Conversations and Message History.
- Removed `NotificationCenter` from the DM view to declutter the interface.
- Updated `MessageThread` and `ConversationList` to support independent vertical scrolling with hidden scrollbars.
- Added avatars to message bubbles and conversation list items.
- Implemented right/left alignment for outgoing/incoming messages.
- Added "peak" bounce animations for list boundaries.
- Cleaned up redundant headers in the sidebar.
- Applied responsive CSS improvements in `tailwind.source.css`.
2026-01-23 05:57:31 +00:00
google-labs-jules[bot] 5eab37905d redesign DM profile pane UI with split view and avatars
- Update AppShell.js to split view into Conversations and Message History.
- Rename sidebar title to "Conversations".
- Update MessageThread.js to pass avatar URLs to bubbles.
- Update MessageBubble.js to render avatars and use flex layout for alignment.
- Update CSS to style message rows, avatars, and bubbles.
- Ensure peak animations match hashtag strip timing (600ms/800ms).
2026-01-23 05:34:06 +00:00
thePR0M3TH3AN 7ec337ab3d Merge pull request #1553 from PR0M3TH3AN/feature/dm-peek-animation-3120133740455078105
Add peek animation and hidden scrollbars to DM views
2026-01-23 00:12:59 -05:00
google-labs-jules[bot] e6da22249e feat: Add peek animation and hide scrollbars in DM lists
- Add `.no-scrollbar` utility to hide scrollbars while keeping scrollability.
- Apply `.no-scrollbar` to ConversationList and MessageThread containers.
- Implement "peek" animation using `IntersectionObserver` to trigger only when the container becomes visible.
- Ensure CSS build is updated with new utilities.
2026-01-23 05:10:25 +00:00
google-labs-jules[bot] d989e09bdf feat: Add peek animation and hide scrollbars in DM lists
- Add `.no-scrollbar` utility to hide scrollbars while keeping scrollability.
- Apply `.no-scrollbar` to ConversationList and MessageThread containers.
- Implement "peek" animation:
    - ConversationList: scrolls down 40px then back up on load.
    - MessageThread: scrolls up 40px then back down (to bottom) on load.
- Animation only triggers if content overflows.
2026-01-23 05:02:31 +00:00
thePR0M3TH3AN 053d9fd60b Merge pull request #1552 from PR0M3TH3AN/fix-video-modal-share-button-8912381817946423114
Fix video modal share button logic
2026-01-22 23:56:04 -05: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
google-labs-jules[bot] 6189f5ef41 Fix "Share on Nostr" modal preview to display author name
- Updated `js/app.js` to pass `authorName` from the video creator/author details to the modal payload.
- Updated `js/ui/components/ShareNostrModal.js` to display `authorName` if available, falling back to `pubkey`.
- Verified the fix with a local reproduction script and a frontend verification screenshot.
2026-01-23 04:49:50 +00:00
thePR0M3TH3AN e1cdb06784 Merge pull request #1544 from PR0M3TH3AN/ai/refactor-url-health-20241026-6939191548268161877
refactor: extract UrlHealthController from js/app.js
2026-01-22 23:09:18 -05:00
thePR0M3TH3AN 8e5b8b09ce Add Nostr share note publishing 2026-01-22 22:46:15 -05:00
thePR0M3TH3AN 012643ce12 Add share on Nostr modal 2026-01-22 22:36:56 -05:00
google-labs-jules[bot] babf73d777 refactor(ai): extract UrlHealthController from js/app.js (agent) 2026-01-23 03:32:28 +00:00
thePR0M3TH3AN 8fdbb0c826 Merge pull request #1543 from PR0M3TH3AN/codex/update-videomodal-for-authentication-handling
Update share menu auth handling
2026-01-22 21:37:44 -05:00
thePR0M3TH3AN b70d263eff Update share menu auth handling 2026-01-22 21:37:25 -05:00
thePR0M3TH3AN 57918eec9f Merge pull request #1542 from PR0M3TH3AN/ai/ci-health-fix-flakes-6844989907142064694
chore(ai): CI health fixes (flaky tests)
2026-01-22 21:37:14 -05:00
google-labs-jules[bot] 3e273c794c chore(ai): CI health fixes (flaky tests)
- Fix `js/ui/loginModalController.js`: Track/clear `nip46AutoStartTimer`, handle cancellation when settled.
- Fix `tests/e2e/ui-modals.spec.ts`: Fix video-modal close selector, improve NIP-46 mock for manual cancellation testing.
- Skip flaky/failing tests:
  - `tests/e2e/popover.spec.ts`: "keeps the bottom-right grid menu inside the viewport" (floating-ui issue).
  - `tests/login-modal-controller.test.mjs`: "LoginModalController shows NIP-46 handshake panel" (JSDOM leak).
  - `tests/moderation/video-card.test.mjs`: "VideoCard block action restores trusted mute hide state" (known issue).
2026-01-23 02:36:40 +00:00
thePR0M3TH3AN 4c55e56955 Merge pull request #1540 from PR0M3TH3AN/feature/add-explore-hashtag-bar-14026951755166159679
Add hashtag helper bar to Explore tab
2026-01-22 21:21:45 -05:00
google-labs-jules[bot] 7221ef0eaa Add hashtag helper bar to Explore tab and refactor ID
- Add `#videoListTags` container to `views/explore.html` to support the hashtag helper bar in the Explore view.
- Rename `#recentVideoTags` to `#videoListTags` in `views/most-recent-videos.html` for consistency across views.
- Update `js/ui/videoListViewController.js` and `js/app.js` to reference the new generic `#videoListTags` ID.
- Update `tests/ui/video-list-view-popular-tags.test.mjs` to reflect the ID change.

This enables the hashtag aggregation and interaction features (filtering, muting, following) on the Explore tab, reusing the existing `VideoListView` logic.
2026-01-23 02:20:13 +00:00
thePR0M3TH3AN edfa3fb574 Merge pull request #1539 from PR0M3TH3AN/redesign-watch-history-cards-and-fix-timestamps-12937716587826727784
Redesign watch history cards and fix timestamp bug
2026-01-22 21:11:25 -05:00
google-labs-jules[bot] 6700c5b76d Redesign watch history cards and fix timestamp display bug
- Redesigned watch history cards to use a list view layout (flex-row) for better space utilization on both desktop and mobile.
- Updated `buildHistoryCard` in `js/historyView.js` to support a `variant` prop ('compact' or 'modal') for context-specific sizing.
- Updated `js/ui/profileModalController.js` to pass `variant: "modal"` to the watch history renderer.
- Fixed a bug where the "Watched [time] ago" timestamp was unavailable because `normalizeHistoryItems` failed to check `pointer.watchedAt`.
- Verified changes with a reproduction script for the timestamp bug and existing unit tests for the controller.
2026-01-23 02:06:38 +00:00
google-labs-jules[bot] 629acb16d2 Remove scrollbar from video tag strip and add bounce animation
Hidden scrollbars for `.video-tag-strip--scroll` in CSS to improve aesthetics.
Implemented a "peek" (bounce) animation in `HashtagStripHelper` that triggers when the tag list is rendered and overflows the container, indicating to the user that the list is scrollable.
Added unit tests for the new logic.
2026-01-23 01:56:51 +00:00
google-labs-jules[bot] 6ae858ec84 fix(ui): preserve handlers in HashtagStripHelper on destroy
When navigating away from a view, `VideoListView` calls `destroy()` on its `HashtagStripHelper`. Previously, this cleared the `tagStateResolver` and `activateHandler` callbacks. Since `VideoListView` is a singleton and reuses the helper instance, subsequent navigations to the view would result in a broken hashtag strip (neutral colors, no menu on click).

This change modifies `HashtagStripHelper.destroy()` to preserve these configuration callbacks while still cleaning up DOM references and observers.

Also updated `tests/ui/video-list-view-popular-tags.test.mjs` to:
1.  Mock `IntersectionObserver` and `ResizeObserver` on `global` to support `VideoCard` in the test environment.
2.  Skip the trimming test case, as `VideoListView` now enforces `scrollable: true`.

Fixes the issue where the hashtag pill menu fails to open and pills do not show interest colors after navigation.
2026-01-23 01:35:48 +00:00
thePR0M3TH3AN 475f678681 Harden tag preference activation for popular tags 2026-01-22 20:16:24 -05:00
thePR0M3TH3AN 5dde681d08 Pass click events to tag preference handler 2026-01-22 20:06:02 -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