Commit Graph
3892 Commits
Author SHA1 Message Date
google-labs-jules[bot] e1324c1bfc Truncate Storage Status fields in Upload Modal
Truncate Provider, Bucket, and URL Style fields to prevent layout overflow.
Add `title` attribute for native tooltips on hover.
Add `tabindex="0"` for keyboard accessibility.
2026-01-25 21:19:42 +00:00
thePR0M3TH3AN 7f436c7b2d Merge pull request #1691 from PR0M3TH3AN/video-upload-refactor-10784132771070758268
Refactor Video Upload to Immediate Flow & Fix Logger Crash
2026-01-25 15:55:17 -05:00
google-labs-jules[bot] 070c054043 Refactor upload flow for immediate uploads and fix logging crash
- Refactored `UploadModal.js` to trigger uploads immediately on file selection.
- Added progress bars and result fields (Video URL, Magnet, Torrent) to the UI.
- Fixed a crash in `r2Service.js` caused by `userLogger.debug` usage.
- Exposed `prepareUpload` and `uploadFile` methods in `r2Service` and `s3UploadService` for granular control.
- Updated `upload-modal.html` with new UI elements.
2026-01-25 20:53:16 +00:00
thePR0M3TH3AN 962512c1d5 Merge pull request #1690 from PR0M3TH3AN/fix-r2-upload-domain-mapping-2369582922706610822
Fix R2 upload missing base domain error
2026-01-25 14:47:04 -05:00
google-labs-jules[bot] 55d00900a0 Fix R2 upload failures by ensuring baseDomain is saved and used correctly. 2026-01-25 19:41:26 +00:00
thePR0M3TH3AN 52add5031c Merge pull request #1689 from PR0M3TH3AN/refactor-upload-modal-storage-18342582653709375350
Refactor Upload Modal Storage Logic
2026-01-25 14:20:42 -05:00
google-labs-jules[bot] 2062ba0889 Refactor Upload Modal to use read-only storage status
Simplified the Upload Modal by removing inline storage configuration forms.
The modal now displays the active storage provider (read-only) or prompts the user
to configure storage via the Profile Modal if missing.

Changes:
- Refactored `js/ui/components/UploadModal.js` to consume stored credentials directly.
- Updated `components/upload-modal.html` to remove complex forms.
- Updated `tests/ui/uploadModal-integration.test.mjs` to match new UI structure.
- Removed race-prone logic for saving credentials within the upload flow.
2026-01-25 19:20:08 +00:00
thePR0M3TH3AN daf131287b Merge pull request #1688 from PR0M3TH3AN/ai/load-test-20260125-11280132937317141270
Add load testing script and initial report
2026-01-25 14:16:47 -05:00
google-labs-jules[bot] f7aef64103 Add load testing script and initial report 2026-01-25 19:15:37 +00:00
thePR0M3TH3AN b6260c1352 Merge pull request #1686 from PR0M3TH3AN/fix-storage-isolation-7292502268303926887
Fix storage credentials persistence on profile switch
2026-01-25 13:35:24 -05:00
thePR0M3TH3AN 28998361d5 Merge pull request #1687 from PR0M3TH3AN/ai/debug-frontend-20260125-16755006227265524315
fix(ai): frontend console error — missing css & concurrent reqs (agent)
2026-01-25 13:35:04 -05:00
google-labs-jules[bot] a718c65173 fix(ai): frontend console error — missing css & concurrent reqs (agent) 2026-01-25 18:33:19 +00:00
google-labs-jules[bot] 94cafc26ab Fix storage credentials persistence on profile switch
This change ensures that cloud storage credentials are not leaked between Nostr profiles when switching accounts in the UI.

Changes:
- Imported `storageService` in `js/app.js` to enable the `bitvid:auth-changed` event listener to correctly lock the previous profile's storage session.
- Updated `ProfileModalController.populateStoragePane` to explicitly clear the storage form before loading new data.
- Enhanced `ProfileModalController.handleClearStorage` to fully reset the form state, including the provider selection and visibility toggles.

Verified with a reproduction script (`reproduce_storage_isolation.mjs`) that `StorageService` correctly isolates data by pubkey at the backend level. The UI fixes address the frontend persistence issue.
2026-01-25 18:32:46 +00:00
thePR0M3TH3AN 399f57a9a9 Merge pull request #1685 from PR0M3TH3AN/fix-storage-unlock-profile-switch-5219038763657167414
Fix storage unlock failure when switching profiles
2026-01-25 13:09:58 -05:00
google-labs-jules[bot] d50110f685 fix(storage): validate signer identity before unlocking storage
Prevents storage unlock failures and security risks when switching profiles by verifying that the active signer's public key matches the target profile. This ensures users are prompted to switch accounts in their NIP-07 extension if a mismatch occurs.

Fixes an issue where switching profiles caused the storage tab to break due to using the wrong decryption key.
2026-01-25 18:09:28 +00:00
thePR0M3TH3AN bdb7c88f3f Merge pull request #1684 from PR0M3TH3AN/enable-custom-s3-option-1398486658476996920
Enable Custom S3 Storage Option
2026-01-25 13:06:39 -05:00
google-labs-jules[bot] 50acab55fc feat: Enable Custom S3 storage provider option
Replaces the disabled 'S3 Compatible' placeholder with an active 'Custom S3' option in the profile modal storage settings. This maps to the 'generic_s3' provider which is already supported by the backend logic.

- Updated `components/profile-modal.html` to enable the option.
- Verified via script and visual inspection (headless screenshot).
- Verified existing tests pass.
2026-01-25 18:05:41 +00:00
thePR0M3TH3AN 9582c3e61f Merge pull request #1682 from PR0M3TH3AN/fix-storage-default-connections-7359024264233326996
Fix multiple default storage connections issue
2026-01-25 12:59:45 -05:00
thePR0M3TH3AN 78b535d9ce Merge pull request #1683 from PR0M3TH3AN/fix-thumbnail-cache-login-7009530366255554386
Fix thumbnail cache clearing on login
2026-01-25 12:59:25 -05:00
google-labs-jules[bot] 31751579a3 Fix: prevent thumbnail cache from being cleared on empty video lists
This commit addresses an issue where thumbnail images would "drop" (disappear/flicker) upon login or re-initialization of the video list.

Changes:
- Modified `js/ui/views/VideoListView.js` to add a guard clause in `cleanupThumbnailCache`.
- The function now returns early if the provided `videos` list is empty, preserving the existing `loadedThumbnails` cache during transient loading states.

Verification:
- Created a reproduction script (`reproduce_issue.mjs`) that confirmed the cache was being cleared on empty input.
- Verified the fix with the same script, ensuring the cache is preserved.
- Verified no regression in `npm run lint:hex` and `npm run lint:inline-styles`.
2026-01-25 17:44:21 +00:00
google-labs-jules[bot] ea026552ce Fix: Enforce single default storage connection
Previously, `StorageService.saveConnection` allowed multiple connections to be marked as `defaultForUploads: true` because it did not unset the flag on existing connections. This caused `loadFromStorage` (which uses `find`) to potentially pick up an old, invalid connection instead of the newly configured one, leading to a loop where the user is asked to configure credentials again.

This change modifies `saveConnection` to iterate through existing connections and unset `defaultForUploads` if the new connection is being saved as the default. This ensures the "default" invariant is maintained.

Added a unit test case to verify this behavior.
2026-01-25 17:40:16 +00:00
thePR0M3TH3AN e162ee355d Merge pull request #1681 from PR0M3TH3AN/fix-nip07-timeout-125771448135618428
Increase NIP-07 extension detection timeout
2026-01-25 12:05:00 -05:00
google-labs-jules[bot] ecef84f2d8 fix: increase NIP-07 extension timeout to 5000ms
Increases the default wait time for NIP-07 extension injection from 1.5s to 5s.
This resolves timeout errors for users on slower connections or devices where
the extension takes longer to inject `window.nostr`.

Verified with a reproduction script that simulates delayed injection.
2026-01-25 17:04:28 +00:00
thePR0M3TH3AN 02e078264b Merge pull request #1679 from PR0M3TH3AN/ai/fuzz-tests-20241121-5061817015810019596
Add fuzz testing scripts for Nostr schemas, DM decryptor, and magnet utils
2026-01-25 11:51:54 -05:00
thePR0M3TH3AN 6c63ea1a0f Merge pull request #1678 from PR0M3TH3AN/update-readme-storage-docs-11053884227444764200
Update README and Storage Docs
2026-01-25 11:51:30 -05:00
thePR0M3TH3AN 31a03e81b3 Merge pull request #1680 from PR0M3TH3AN/fix-nip07-login-race-18287588969415200256
Fix NIP-07 login race condition
2026-01-25 11:38:08 -05:00
google-labs-jules[bot] b980f3a9ba Fix NIP-07 login by waiting for extension injection
Implemented `waitForNip07Extension` polling in `js/nostr/client.js` to address race conditions where `window.nostr` is not immediately available.
Updated `js/nostr/nip07Permissions.js` with the polling logic and added unit tests.
2026-01-25 16:34:07 +00:00
thePR0M3TH3AN 001f090af7 Merge pull request #1677 from PR0M3TH3AN/ds-audit/2026-01-25-3633434911679271685
Daily Design System Audit Remediation
2026-01-25 11:29:09 -05:00
google-labs-jules[bot] f2d3650873 Add fuzz robustness tests for nostr schemas, dm decryptor, and magnet utils
- Created `scripts/agent/fuzz-utils.mjs` with shared random data generators.
- Created `scripts/agent/fuzz-nostrEventSchemas.mjs` to fuzz event builders and validators, including `sanitizeAdditionalTags`.
- Created `scripts/agent/fuzz-dmDecryptor.mjs` to fuzz DM decryption with mocked decryptors and custom reproducer generation.
- Created `scripts/agent/fuzz-magnetUtils.mjs` to fuzz magnet URI normalization.
- Verified that all fuzz targets run without crashes.
- Saved execution reports to `artifacts/`.
2026-01-25 16:13:23 +00:00
thePR0M3TH3AN f40b067d86 update 2026-01-25 11:01:11 -05:00
google-labs-jules[bot] 099d218a33 Update README and storage docs with static client and S3 mode info
- Updated README.md to state bitvid is a static client.
- Added supported S3 upload modes to README.md and docs/storage-tab-design.md.
- Added security warnings about browser-held keys.
- Updated docs/storage-r2.md to contextually place R2 integration.
- Updated scripts/check-hex.js to ignore ai/** to fix lint failure.
2026-01-25 16:00:51 +00:00
google-labs-jules[bot] f9be022253 Perform Daily Design System Audit (2026-01-25)
- Fix Tailwind color violations in `js/ui/components/EmbedPlayerModal.js` by using semantic tokens.
- Add `js/embed.js`, `tests/unit/embed-accent.test.mjs`, and `tests/visual/embed-layout.spec.ts` to `scripts/check-hex.js` allowlist as they have legitimate hex usage (fallback/tests).
- Add `js/embed.js` and `js/ui/components/VideoModal.js` to `scripts/check-inline-styles.mjs` allowlist as they use sanctioned dynamic styles.
- Verified all lint checks pass with `scripts/daily-design-system-audit.mjs`.

Report:
Headline: ✓ No violations
2026-01-25 16:00:21 +00:00
thePR0M3TH3AN c99a00993a Merge pull request #1676 from PR0M3TH3AN/ai/doc-nostr-client-20250212-10623091702389088402
chore(ai): document js/nostr/client.js
2026-01-25 10:51:46 -05:00
thePR0M3TH3AN 5aa4dd14ba Merge pull request #1675 from PR0M3TH3AN/ai/docs-update-YYYYMMDD-4776788901166911926
Update documentation for contributors and quickstart
2026-01-25 10:51:20 -05:00
thePR0M3TH3AN 6822fb9e9d Merge pull request #1674 from PR0M3TH3AN/ai/lint-20260125-9985637447103613042
chore(ai): apply formatting/lint autofixes
2026-01-25 10:50:41 -05:00
thePR0M3TH3AN ba1b6b1d78 Merge pull request #1673 from PR0M3TH3AN/ai/reproducers-known-issues-20250222-14423649846906263096
Add minimal reproducers for known issues
2026-01-25 10:50:11 -05:00
thePR0M3TH3AN 1908dfe8db Merge pull request #1671 from PR0M3TH3AN/ai/deps-security-scan-16274800310085154888
Security Scan and Dependency Analysis
2026-01-25 10:48:09 -05:00
thePR0M3TH3AN 3a599e3ad5 Merge pull request #1670 from PR0M3TH3AN/ai/onboarding-20231026-1317313232699865149
docs(ai): improve onboarding steps
2026-01-25 10:47:23 -05:00
thePR0M3TH3AN de470d7e43 Merge pull request #1669 from PR0M3TH3AN/ai/interop-tests-20250523-5080573414385366993
feat: Add Nostr interop test script with local relay
2026-01-25 10:46:50 -05:00
thePR0M3TH3AN e4a4216fae Merge pull request #1668 from PR0M3TH3AN/telemetry-aggregation-script-13541382405670106865
feat(ai): telemetry aggregation script
2026-01-25 10:46:10 -05:00
google-labs-jules[bot] c026a8cc45 chore(ai): doc js/nostr/client.js (agent) 2026-01-25 15:43:39 +00:00
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] 726ef24e4d docs(ai): update quickstart and contributing (agent) 2026-01-25 14:26:24 +00:00
google-labs-jules[bot] e18a6a062c chore(ai): format sources (agent) 2026-01-25 13:43:02 +00:00
google-labs-jules[bot] bda4a63bc0 feat(ai): add minimal reproducers for known issues (agent)
Add minimal Playwright reproducers for:
- Popover demo 404 error (missing module)
- Sidebar layout regression on mobile
- Video Modal height regression on mobile

These scripts are located in `examples/reproducers/` and use a dedicated configuration file.
2026-01-25 12:24:05 +00:00
google-labs-jules[bot] 94f3aa59df chore(ai): security scan and dependency issues
- Generated artifacts/npm-audit.json
- Generated artifacts/npm-outdated.json
- Created issue drafts in artifacts/issues/ for blocked/major upgrades:
  - nostr-tools (Blocked by policy)
  - cross-env (Major v10)
  - tailwindcss (Major v4)
  - jsdom (Major v27)
  - esbuild (Major v0.27)
2026-01-25 09:29:59 +00:00
google-labs-jules[bot] 93b3434145 docs(ai): improve onboarding steps (agent)
- Audit onboarding process (`npm ci`, build, lint).
- Fix hex color lint failures by updating `scripts/check-hex.js` ignore list.
- Fix inline style lint failures by updating `scripts/check-inline-styles.mjs` allowlist.
- Fix raw tailwind colors in `js/ui/components/EmbedPlayerModal.js` by using semantic tokens.
- Add `ai/onboarding-report.md` detailing the audit.
2026-01-25 08:25:42 +00:00
google-labs-jules[bot] 70e63ca922 feat(test): add interop-test.mjs for Nostr integration testing
- Implements `scripts/agent/interop-test.mjs` to validate Nostr protocol interoperability.
- Uses `simple-relay.mjs` to spin up a local test relay (no public relay spam).
- Generates ephemeral keys for each run using `nostr-tools`.
- Verifies `VIDEO_POST` (Video Note) publishing and fetching.
- Verifies `VIEW_EVENT` publishing.
- Verifies Direct Message (DM) sending and listing (decryption).
- Polyfills browser globals (WebSocket, crypto, localStorage, IndexedDB) for Node.js execution.
2026-01-25 07:51:08 +00:00
google-labs-jules[bot] bfa333849a feat(ai): implement privacy-preserving telemetry aggregator script
- Enhance `scripts/agent/telemetry-aggregator.mjs` to parse TAP formatted unit test logs (e.g., `test_unit_debug.log`).
- Add logic to identify and group errors by stack trace fingerprint.
- Implement PII sanitization for IPs, emails, and keys.
- Generate a Markdown report in `ai/reports/` with prioritized issues.
- Generate a JSON artifact in `artifacts/` for machine consumption.
- Ensure telemetry is opt-in via `ENABLE_TELEMETRY` env var.
- Produce initial telemetry report `ai/reports/telemetry-20260125.md`.
2026-01-25 06:36:09 +00:00