Added `scripts/cancel-all-ci-runs.sh` to allow users to cancel all in-progress and queued GitHub Actions runs.
This script requires the GitHub CLI (`gh`) to be installed and authenticated.
It uses batch cancellation (`xargs`) and an increased limit (1000) for efficiency and coverage.
- Added `examples/reproducers/issue-001-video-card-logic/` to reproduce VideoCard logic failure.
- Added `examples/reproducers/issue-002-login-modal-nsec/` to reproduce Login Modal missing error.
- Added `examples/reproducers/issue-003-popover-ref-error/` to reproduce Popover ReferenceError.
- Each reproducer includes a README.md with instructions.
This commit fixes a ReferenceError in `playVideoWithoutEvent` where `urlObj` was used before being defined.
It also adds a new E2E test `tests/e2e/webseed-playback.spec.ts` that verifies:
1. Direct CDN playback from an HTML link.
2. Fallback to WebTorrent using the HTML link as a webseed when the CDN is blocked.
This commit adds `scripts/agent/interop-test.mjs` to verify protocol interoperability using `NostrClient` and `nostrEventSchemas` against a local test relay. Covers Video Post (kind 30078), View Event (kind 30079), and Encrypted DM.
Verified locally with Node.js and `simple-relay.mjs`.
- Implemented split-pane layout for Conversations and Message History.
- Added independent vertical scrolling for desktop views.
- Enforced full-height containers to prevent parent modal scrolling on desktop.
- Preserved mobile scrolling behavior by wrapping height constraints in media queries.
- Added avatars, message bubbles, and alignment styling.
- Removed space-y utility from profile modal container to prevent layout issues.
- Updated tailwind source CSS with new scrollbar utilities and overrides.
- Updated `css/tailwind.source.css` to enforce full height and independent scrolling for DM columns.
- Targeted `#profilePaneMessages` to `height: 100%` to prevent modal body scrolling interference.
- Updated `dm-app-shell` containers to manage overflow internally.
- Verified scroll positions and animations in `ConversationList.js` and `MessageThread.js`.
- Cleaned up redundant headers in `ConversationList.js`.
- Verified layout via Playwright script (`verify_dm_v2.py`).
- 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`.
- 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.
- Fix CSS scrolling logic to ensure individual columns scroll independently within the modal.
- Ensure peak animations match hashtag strip timing (600ms/800ms).
- Fix avatar resolution logic for outgoing messages.
- 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).