Commit Graph
3844 Commits
Author SHA1 Message Date
thePR0M3TH3AN 06550ef007 Merge pull request #1667 from PR0M3TH3AN/ai/schema-validate-20231026-12531232348450891371
chore(ai): event schema validation tool + fixes
2026-01-25 10:42:14 -05:00
thePR0M3TH3AN e6518f8ab4 Merge pull request #1666 from PR0M3TH3AN/ai/refactor-share-nostr-20260125-14923769825350051949
refactor(ai): extract ShareNostrController from js/app.js
2026-01-25 10:39:24 -05:00
google-labs-jules[bot] 5790b6e7c1 chore(ai): event schema validation tool + fixes
- Created `scripts/agent/validate-events.mjs` to validate all event builders.
- Fixed `buildViewEvent` to generate a fallback `d` tag for kind 30079 compliance.
- Relaxed `REPOST` schema validation to allow empty content (blind reposts), per NIP-18.
- Updated `docs/nostr-event-schemas.md` to reflect schema changes.
2026-01-25 05:29:32 +00:00
google-labs-jules[bot] 4c93080baa refactor(ai): extract ShareNostrController from js/app.js (agent) 2026-01-25 03:34:10 +00:00
thePR0M3TH3AN 7afe811b1f Merge pull request #1665 from PR0M3TH3AN/fix-video-modal-css-conflict-18316255251114241385
Fix video player modal layout by removing conflicting CSS overrides
2026-01-24 22:16:13 -05:00
google-labs-jules[bot] d06a4298ee fix(ai): remove video modal css overrides breaking layout (agent)
This change removes a block of CSS in `css/tailwind.source.css` that was incorrectly applying `!important` layout overrides to the main video modal (`.video-modal__*`, `#modalVideo`), causing visual regressions. These overrides were likely intended for the embed view but were scoped too broadly. `embed.html` uses distinct selectors and remains unaffected, as verified by visual tests.

- Removed destructive `!important` rules for `.video-modal__*` and `#modalVideo`.
- Preserved `.bv-logo__accent` theming rule.
- Rebuilt CSS.
2026-01-25 02:57:50 +00:00
thePR0M3TH3AN 7f38c4597b Merge pull request #1664 from PR0M3TH3AN/feature/s3-manifest-upload-v2-12799695231766651880
Support S3 Presigned Multipart Manifest Upload
2026-01-24 21:45:28 -05:00
google-labs-jules[bot] a33092fc47 feat(upload): support presigned multipart manifest for S3 uploads
- Updated `js/s3-quick.js` to support new manifest structure: `{ bucket, key, uploadId, parts: [{partNumber, url}] }`.
- Added logic to sort parts, upload chunks, collect ETags, and call `completeUrl` if present.
- Updated `js/ui/components/UploadModal.js` to handle manifest flow, validate new structure, and alert user if completion is manual (missing `completeUrl`).
- Updated `components/upload-modal.html` with new placeholder example and documentation note.
- Verified logic with reproduction script and UI with Playwright.
2026-01-25 02:44:49 +00:00
thePR0M3TH3AN 7132a80709 Merge pull request #1663 from PR0M3TH3AN/fix-pushstate-origin-977125356888089584
fix: prevent SecurityError in pushState when playing video on local origin
2026-01-24 21:39:21 -05:00
google-labs-jules[bot] ee0af68bfd fix: prevent SecurityError in pushState when playing video on local origin
When running the application locally (e.g., `127.0.0.1:5500`) but using a production configuration (`BITVID_WEBSITE_URL` pointing to `bitvid.network`), `playVideoByEventId` would attempt to `pushState` with the production URL. This triggers a browser `SecurityError` due to the origin mismatch, preventing the video modal from opening.

This change adds a check to normalize the `pushUrl`. If the target URL's origin differs from the current window's origin, it falls back to a relative path using `window.location.pathname` combined with the target's search parameters and hash. This ensures `pushState` always receives a safe, same-origin URL regardless of the environment configuration.
2026-01-25 02:33:30 +00:00
thePR0M3TH3AN 4560ca3ca6 Merge pull request #1662 from PR0M3TH3AN/fix-video-modal-display-17175209581181206635
Fix video player modal visibility by removing conflicting CSS rule
2026-01-24 21:19:25 -05:00
google-labs-jules[bot] 8de33b7cb1 fix(ui): remove display:none from #playerModal selector to fix modal visibility
The #playerModal ID selector in `css/tailwind.source.css` incorrectly set `display: none`. This ID selector has higher specificity than the `.hidden` utility class (applied by Tailwind) used by `VideoModal.js` to toggle visibility.

When `VideoModal.js` removed the `.hidden` class to show the modal, the ID selector's `display: none` remained active, keeping the modal hidden.

Also removed the `#playerModal.flex` rule as `.bv-modal` already provides flex behavior.

This fixes the issue where clicking a video card would trigger the logic but fail to display the player.
2026-01-25 02:16:32 +00:00
thePR0M3TH3AN feef662bf8 Merge pull request #1661 from PR0M3TH3AN/feat/s3-quick-upload-4202021437560592801
Add S3 quick upload with presigned manifest support
2026-01-24 20:42:50 -05:00
google-labs-jules[bot] adad6a07a4 feat: Add S3 quick upload with presigned manifest support
- Add `js/s3-quick.js` with `uploadWithManifest` and `uploadWithKeys`.
- Update `components/upload-modal.html` to add "Use presigned manifest" toggle and warning.
- Update `js/ui/components/UploadModal.js` to wire up the manifest upload flow.
- Add local persistence for quick S3 settings (though mainly handled by existing storage settings).
- Ensure keys are only used for client-side uploads or replaced by manifest flow.
2026-01-25 01:38:41 +00:00
thePR0M3TH3AN bc4b2a3321 Merge pull request #1660 from PR0M3TH3AN/fix/ai/providers-undefined-profilemodal-13878465202103731701
fix(ai): resolve PROVIDERS undefined in profileModalController
2026-01-24 20:19:40 -05:00
thePR0M3TH3AN 5b2b50cef7 Merge pull request #1658 from PR0M3TH3AN/fix/share-menu-auth-sync-12408954512497854865
Fix share menu auth state synchronization
2026-01-24 20:19:21 -05:00
thePR0M3TH3AN 6c7b93b60f Merge pull request #1659 from PR0M3TH3AN/ai/triage-todos-20241026-8887713661641391947
Triage TODOs and generate issue drafts
2026-01-24 20:19:00 -05:00
google-labs-jules[bot] b2d5619f78 fix(ai): resolve PROVIDERS undefined in profileModalController (agent)
Import `PROVIDERS` from `../services/storageService.js` in `js/ui/profileModalController.js`.
This fixes a `ReferenceError` when testing or saving generic S3 storage configurations.
The error was caused by using `PROVIDERS.GENERIC` without importing the constant.
2026-01-25 01:14:37 +00:00
google-labs-jules[bot] 82834a18fe chore(ai): triage TODOs and generate issue drafts
- Scanned repo for TODO/FIXME/XXX.
- Found no trivial TODOs in JS sources.
- Found non-trivial TODOs in `tests/visual/moderation.spec.ts` related to headless test environment issues.
- Generated `artifacts/todos.txt` with the findings (filtering out false positives).
- Generated `artifacts/issues.md` with issue drafts for the identified non-trivial TODOs.
2026-01-25 01:13:09 +00:00
google-labs-jules[bot] 70dcfa3ef5 fix: update share menu state on pubkey change 2026-01-25 01:11:34 +00:00
thePR0M3TH3AN 874c29e41e Merge pull request #1657 from PR0M3TH3AN/codex/add-s3-provider-selector-to-upload-modal
Add S3 provider support to upload modal storage settings
2026-01-24 20:00:14 -05:00
thePR0M3TH3AN 999235d71e Add S3 storage option to upload modal 2026-01-24 20:00:00 -05:00
thePR0M3TH3AN e94a410e6c Merge pull request #1656 from PR0M3TH3AN/fix/embed-black-bar-13757505465448233546
Fix embed player layout collapsing by adding embed.html to Tailwind config
2026-01-24 19:52:40 -05:00
google-labs-jules[bot] 0840235798 fix(config): add embed.html to tailwind content config
This fixes a layout issue in the embed player where the body height would collapse to the default video height (150px) because `h-screen` and other utility classes were missing from the generated CSS. Adding `embed.html` to `tailwind.config.cjs` ensures these classes are generated.
2026-01-25 00:51:52 +00:00
thePR0M3TH3AN df2f5b1eed Merge pull request #1655 from PR0M3TH3AN/fix/video-modal-black-bar-126294532786175547
fix: eliminate black bars in video modal player
2026-01-24 19:30:42 -05: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 bcfe070bbe Merge pull request #1654 from PR0M3TH3AN/agent-weekly-report-3510456207313124861
Weekly Report 2026-01-24
2026-01-24 19:27:44 -05:00
google-labs-jules[bot] a7338ce6d0 docs(ai): weekly synthesis report 2026-01-24 2026-01-25 00:25:04 +00:00
thePR0M3TH3AN 1a86b82fea Merge pull request #1653 from PR0M3TH3AN/fix/embed-video-fill-and-logo-accent-9972861085055590695
fix(embed): resolve video letterboxing and wire logo accent color
2026-01-24 18:58:06 -05:00
google-labs-jules[bot] a708883abb fix(embed): video sizing letterbox and logo accent
- Changed embed video sizing to `object-fit: cover` and `width: 100%` to eliminate black bars/letterboxing.
- Updated `embed.html` and `css/tailwind.source.css` to enforce these styles on `.video-modal__media`, `.video-modal__video`, and `#embedVideo`.
- Wired the embed logo accent color to use the instance configuration (`THEME_ACCENT_OVERRIDES` from `config/instance-config.js`) via a `--bitvid-accent` CSS variable injected in `js/embed.js`.
- Added unit and visual tests to verify styling and configuration logic.
2026-01-24 23:57:29 +00:00
thePR0M3TH3AN 18fa0c3512 Merge pull request #1652 from PR0M3TH3AN/feat/enhance-pr-review-script-11867843121781566388
refactor(agent): use runCommand helper for consistency and reliability
2026-01-24 18:45:50 -05:00
google-labs-jules[bot] d59cb45f8e refactor(agent): use runCommand helper for consistency and reliability
- Update `scripts/agent/review-pr.mjs` to use `runCommand` wrapper for all command executions.
- Increase `maxBuffer` to 10MB to prevent crashes during large test/lint outputs.
- Ensure consistent logging and option handling.
2026-01-24 23:40:20 +00:00
thePR0M3TH3AN 6c122c2fd3 Merge pull request #1651 from PR0M3TH3AN/fix-embed-gap-and-logo-4459649553039133031
fix(embed): transparent video background and correct logo color
2026-01-24 18:36:19 -05:00
google-labs-jules[bot] 4264a1ed0e fix(embed): transparent video background and correct logo color
- Add `bg-transparent` to `#embedVideo` to fix visual gap/letterboxing issues.
- Inline the BitVid logo SVG in `embed.html` and use `bv-logo` class with `data-variant="inverse"` to ensure correct white wordmark and themed accent color on the dark overlay.
2026-01-24 23:35:45 +00:00
thePR0M3TH3AN 3de86b3b4d Merge pull request #1650 from PR0M3TH3AN/ui/embed-overlay-fix-13909911349337846125
Fix embed overlay position and view counter
2026-01-24 18:19:50 -05:00
google-labs-jules[bot] e02f8f48ae Fix embed overlay position and view counter 2026-01-24 23:19:03 +00:00
thePR0M3TH3AN 15898d3175 Merge pull request #1649 from PR0M3TH3AN/embed-fixes-11287616167883311307
fix: Embed player UI and stats loading
2026-01-24 18:03:01 -05:00
google-labs-jules[bot] 9287f91fc1 fix: Embed player UI, stats loading, and share URL
- Remove black background from embed video to allow transparency
- Update "Watch on Bitvid" button to "Watch on" + white logo
- Fix share URL generation to point to main site instead of embed
- Ensure view counts and reactions are subscribed in embed mode
2026-01-24 23:02:33 +00:00
thePR0M3TH3AN a8f924a583 Merge pull request #1648 from PR0M3TH3AN/update-embed-design-974021588342090211
Update Embed Player Design
2026-01-24 17:42:24 -05:00
google-labs-jules[bot] d621e6f21a feat: update embed player design with transparent background and overlay stats
- Removed background colors from `embed.html` for transparency.
- Added a hover-triggered overlay with "Watch on BitVid" button and stats (views, likes, dislikes).
- Updated `js/ui/components/EmbedPlayerModal.js` to implement stats update methods and handle the overlay elements.
- Updated `js/embed.js` to set the share URL on the overlay after video resolution.
- Verified visual changes with Playwright.
2026-01-24 22:41:56 +00:00
thePR0M3TH3AN a9bd7ec79e Merge pull request #1647 from PR0M3TH3AN/debug/embed-forward-logs-11196417843215875731
Debug: forward embed logs to parent when embed_debug=1
2026-01-24 17:30:21 -05:00
google-labs-jules[bot] 439265d9c0 Debug: forward embed logs to parent when embed_debug=1
This commit instruments the embed runtime to forward structured logs and lifecycle events
(Nostr, relay, pointer resolution, playback decision, WebTorrent) to the parent window
via `postMessage` when the `embed_debug=1` query parameter is present.

It also adds a defensive guard to `resetTorrentStats` in `js/app.js` to prevent TypeErrors.

Changes:
- Added `js/embedDiagnostics.js` module.
- Modified `js/embed.js` to initialize diagnostics and instrument startup.
- Modified `js/app.js` to instrument playback fallback and patch `resetTorrentStats`.
- Modified `js/webtorrent.js` to instrument peer probing and streaming.
2026-01-24 22:29:18 +00:00
thePR0M3TH3AN 868d69cef8 Merge pull request #1646 from PR0M3TH3AN/fix/embed-videoModal-resetstats-guard-10508496522559505664
fix: resolve EmbedVideoModal resetStats TypeError in embed mode
2026-01-24 17:10:31 -05:00
google-labs-jules[bot] 981fac785a fix(embed): implement robust EmbedPlayerModal and guard resetTorrentStats
- Add `js/ui/components/EmbedPlayerModal.js` to implement the `VideoModal` interface for embed contexts (including `resetStats`).
- Update `js/ui/ModalManager.js` to detect embed mode and use `EmbedPlayerModal`.
- Clean up `js/embed.js` to remove local modal definition and add `postMessage` diagnostic logging.
- Update `js/app.js` `resetTorrentStats` log message and verify guard.
- Add unit tests for `EmbedPlayerModal` and `resetTorrentStats` logic.
- Add E2E reproduction script `tests/e2e/repro_issue.spec.ts`.
2026-01-24 22:09:03 +00:00
thePR0M3TH3AN d71d2812f4 Merge pull request #1645 from PR0M3TH3AN/fix-embed-crash-and-dupe-init-16752677634800395599
Fix embed player crash and prevent duplicate initialization
2026-01-24 16:43:14 -05:00
google-labs-jules[bot] 2943fbb9f7 Fix embed player crash and prevent duplicate initialization
- Fix `TypeError: this.videoModal.resetStats is not a function` by implementing `resetStats` (no-op) in `EmbedVideoModal` and adding a safety guard in `Application.resetTorrentStats`.
- Prevent duplicate `NostrClient` initialization within the same frame by adding idempotent guards in `js/embed.js` and `js/nostr/client.js`.
- Add documentation (`docs/embed-notes.md`) on embed architecture and recommendations for multi-frame resource sharing (SharedWorker).
- Add regression test `tests/embed_playback_check.spec.mjs`.
2026-01-24 21:42:37 +00:00
thePR0M3TH3AN 62d0a366ee Merge pull request #1644 from PR0M3TH3AN/ai/smoke-tests-20260124-5981020631477844177
chore(ai): add smoke test script (agent)
2026-01-24 16:13:43 -05:00
google-labs-jules[bot] 25b513b094 chore(ai): add smoke test script (agent)
This commit ensures the existence and correctness of `scripts/agent/smoke-test.mjs`, a Playwright-based regression test suite.

The script:
- Starts a local web server (npx serve) and a local relay (simple-relay.mjs).
- Launches a headless browser to interact with the application.
- Verifies key flows:
  - Ephemeral login.
  - Video publishing (Kind 30078).
  - Direct Message (DM) sending and decryption (Kind 4/1059).
- Generates execution logs and summaries in `artifacts/`.

Also ensures `scripts/agent/simple-relay.mjs` is present as a dependency.
2026-01-24 21:12:02 +00:00
thePR0M3TH3AN 0f502a79c2 Merge pull request #1643 from PR0M3TH3AN/fix-embed-modal-buttons-12116875342849342102
Fix unresponsive buttons in Embed Video modal
2026-01-24 15:56:17 -05:00
google-labs-jules[bot] 95cf17e018 fix(ui): unwrap embed modal content to resolve button interaction issues
Refactored `EmbedVideoModal.js` to unwrap the fetched HTML content using a `DocumentFragment` before appending it to the DOM. This removes an unnecessary wrapper `div` that was causing stacking context issues, preventing the modal's buttons (Exit, Close, Copy) from being clickable when layered over other UI elements. This change aligns the implementation with `VideoModal.js`.
2026-01-24 20:50:50 +00:00