Commit Graph
506 Commits
Author SHA1 Message Date
google-labs-jules[bot] cd9418aa92 refactor(ai): extract EngagementController from js/app.js (agent)
Moved `handleRepostAction`, `handleMirrorAction`, and `handleEnsurePresenceAction` from `js/app.js` to `js/ui/engagementController.js`.
This follows the AGENTS.md refactor direction for `bitvidApp` to controllers.

- Extracted logic into `EngagementController`.
- Added unit tests for `EngagementController`.
- Wired `EngagementController` into `js/app.js`.
- Preserved `currentVideoPointer` fallback logic in `derivePointerFromDataset`.
2026-01-22 03:36:33 +00:00
thePR0M3TH3AN d2ca9ca97f Merge branch 'unstable' into feature/video-card-marquee-4520373547615093905 2026-01-21 21:41:06 -05:00
google-labs-jules[bot] c443865187 feat(ui): add marquee effect to video cards
- Add ellipsis truncation for titles and usernames
- Implement scroll-on-hover (desktop) and scroll-on-center (mobile)
- Fix mobile layout blowout using min-width: 0 on flex containers
- Add IntersectionObserver and ResizeObserver mocks for tests
2026-01-21 22:57:02 +00:00
thePR0M3TH3AN 6c45d7af23 Merge branch 'unstable' into ci-fixes-and-docs-14868980418906357148 2026-01-21 17:26:10 -05:00
google-labs-jules[bot] 90bbcbf27d fix(ci): address lint errors and modals test logic
- Replaced raw pixel value in `css/tailwind.source.css` with theme-based `calc()` to fix token lint error.
- Updated `tests/e2e/ui-modals.spec.ts` to skip close control check for `lockdown-modal`, aligning with inescapable design.
- Added `KNOWN_ISSUES.md` documenting unresolved visual regression in sidebar layout and moderation UI rendering issues in tests.
- Reverted incomplete attempt to fix sidebar CSS logic to maintain stability.
2026-01-21 22:20:49 +00:00
google-labs-jules[bot] e2b05314e2 fix(ai): frontend console error — remove broken trackers (agent) 2026-01-21 18:38:53 +00:00
thePR0M3TH3AN 0873b16d06 Merge pull request #1461 from PR0M3TH3AN/ai/tests-core-coverage-20250302-14976230523453771489
Add unit tests for core modules
2026-01-21 12:00:08 -05:00
google-labs-jules[bot] c3770828c0 test(ai): add unit tests for nostr, services, and state (agent) 2026-01-21 11:23:58 +00:00
google-labs-jules[bot] 56abf2f9cb docs(ai): improve onboarding steps
- Fix `scripts/check-design-tokens.mjs` to allow a mobile breakpoint.
- Add Dev Container documentation to `CONTRIBUTING.md`.
- Fix missing dependency injection in `tests/helpers/moderation-test-helpers.mjs` to resolve some unit test failures in a fresh environment.
2026-01-21 08:33:45 +00:00
google-labs-jules[bot] 8015edf6b3 refactor(ai): extract ModerationDecorator from js/app.js (agent)
Extracts `decorateVideoModeration` and related helper methods from `js/app.js` into a new `js/services/moderationDecorator.js` service. This improves separation of concerns by moving complex moderation logic out of the main application class.

AGENTS.md Checklist:
1. Identify Logic: Extracted `decorateVideoModeration`, `deriveModerationReportType`, `deriveModerationTrustedCount`, `getReporterDisplayName`, `normalizeModerationSettings`, `getActiveModerationThresholds`.
2. Create Controller Method: Created `ModerationDecorator` class with `decorateVideo` method.
3. Create `bitvidApp` Wrapper: Replaced `decorateVideoModeration` in `js/app.js` with a wrapper that delegates to `this.moderationDecorator.decorateVideo`.
4. Wire Up Callbacks: Passed `getProfileCacheEntry` to `ModerationDecorator` constructor.
5. Remove Old Code: Removed extracted methods from `js/app.js`.

Also added unit tests for `ModerationDecorator` and ensured runtime settings updates are propagated.
2026-01-21 03:20:17 +00:00
google-labs-jules[bot] 91e7a7cacc chore(ai): CI health fixes (flaky tests) 2026-01-21 02:42:52 +00:00
google-labs-jules[bot] febbc27706 feat: improve DM mobile navigation with list/thread toggle
- Implement mobile view state management (`list` vs `thread`) in `ProfileModalController`.
- Update `AppShell` to apply `data-dm-view` attribute for CSS toggling.
- Update `MessageThread` to render a "Back" button on mobile.
- Add CSS rules to hide/show sidebar and thread panels based on mobile view state.
- Ensure desktop layout remains split-pane.
2026-01-20 18:27:18 +00:00
google-labs-jules[bot] 2256f446ea chore(ai): apply formatting/lint autofixes 2026-01-20 13:32:37 +00:00
thePR0M3TH3AN facad9dd80 Merge pull request #1438 from PR0M3TH3AN/ai/ci-health-20250120-14890971644498739041
CI Health: Fix flaky DM tests
2026-01-20 08:01:42 -05:00
google-labs-jules[bot] 6e55c37d50 chore(ai): CI health fixes (flaky tests)
- Fix `tests/dm-normalization.test.mjs`: Replace fixed timeout with polling loop and add process exit hook to prevent hangs.
- Fix `tests/nostr/dm-direct-message-flow.test.mjs`: Replace fixed timeouts with polling loops and add process exit hook.
- Fix `detect_flakiness.mjs` path resolution.
2026-01-20 12:39:19 +00:00
thePR0M3TH3AN e697077920 Merge branch 'unstable' into ai/tests-core-modules-20231027-3414347325603517668 2026-01-20 07:33:59 -05:00
google-labs-jules[bot] 684f93f6ed test(ai): add unit tests for LinkPreviewService and SessionActor
- Add `tests/services/link-preview-service.test.mjs`: Tests for caching, fetching, and TTL logic using `fake-indexeddb` and `jsdom`.
- Add `tests/nostr/session-actor.test.mjs`: Tests for encryption/decryption and persistence of session actor.
- Refactor `tests/app/similar-content.test.mjs`: Update to test `SimilarContentController` directly, fixing regression caused by architectural changes.
- Ensure tests are self-contained with necessary polyfills (IndexedDB, LocalStorage).
2026-01-20 11:34:30 +00:00
google-labs-jules[bot] 9db1f94ea7 docs(ai): improve onboarding steps and fix dev setup 2026-01-20 08:41:45 +00:00
thePR0M3TH3AN 6c99146261 Merge pull request #1430 from PR0M3TH3AN/codex/add-ui-test-utilities-for-e2e-tests
Add shared Playwright UI test helpers and update E2E specs to use them
2026-01-20 00:27:10 -05:00
thePR0M3TH3AN 710c9d8ded Add shared Playwright UI test helpers 2026-01-20 00:26:45 -05:00
thePR0M3TH3AN af84ded449 Merge pull request #1427 from PR0M3TH3AN/ai/refactor-similar-content-20231026-2020523280376033819
Refactor Similar Content Logic to Controller
2026-01-20 00:11:20 -05:00
thePR0M3TH3AN 49b65885de Add popover stress test 2026-01-20 00:09:59 -05:00
google-labs-jules[bot] 24814a7fd4 refactor(ai): extract SimilarContentController from js/app.js (agent)
Moved `computeSimilarContentCandidates` and `updateModalSimilarContent` logic to a new controller `js/ui/similarContentController.js` to improve separation of concerns. `js/app.js` now delegates these operations to the controller via thin wrappers. Added unit tests for the extracted logic.
2026-01-20 03:56:41 +00:00
thePR0M3TH3AN 19a01062f0 Add toast service DOM test 2026-01-19 22:08:23 -05:00
thePR0M3TH3AN 7957554a36 test: cover component modal close flows 2026-01-19 22:06:12 -05:00
thePR0M3TH3AN 7eb4143139 Add login modal e2e coverage 2026-01-19 22:04:24 -05:00
thePR0M3TH3AN f2484cb163 Merge branch 'unstable' into ai/onboarding-20231027-15933194820812210320 2026-01-19 14:38:33 -05:00
google-labs-jules[bot] fc9ce6916d docs(ai): improve onboarding steps and fix lint/test issues
\n- Fixed CSS linting errors by replacing raw values with design tokens in `css/tailwind.source.css`.
- Updated `scripts/check-design-tokens.mjs` to ignore matches inside `var()` declarations and allow legacy bracket values.
- Fixed a failing unit test in `tests/ui/similar-content-card.test.mjs` to match current component behavior.
- Updated `CONTRIBUTING.md` to include `npm run build:css` and clarify linting requirements.
- Enhanced `.devcontainer/devcontainer.json` to include `npm run build:css` in `postCreateCommand`.
2026-01-19 19:35:17 +00:00
thePR0M3TH3AN 89e82778d6 Add DM test suites and headless e2e CI 2026-01-19 13:43:13 -05:00
thePR0M3TH3AN 0bd2681a24 Merge pull request #1394 from PR0M3TH3AN/fix-dm-tests-and-leaks-8133857459641031321
Fix DM storage leaks and test environment issues
2026-01-19 12:52:41 -05:00
google-labs-jules[bot] b285819145 fix(storage): resolve db connection leaks and patch test environment
- Added `db.close()` to exported functions in `js/storage/dmDb.js` to ensure IndexedDB connections are released.
- Patched `tests/test-helpers/setup-localstorage.mjs` to include a `structuredClone` polyfill required by `fake-indexeddb` in Node.js environments.
- Updated `tests/dm-normalization.test.mjs`, `tests/dm-db.test.mjs`, and `tests/nostr/dm-direct-message-flow.test.mjs` to conditionally initialize `fake-indexeddb` to prevent global conflicts.
- Verified fixes by running unit tests and the `scripts/agent/interop-test.mjs` E2E suite.
2026-01-19 16:24:07 +00:00
google-labs-jules[bot] 38f1594243 chore(ai): doc js/nostr/client.js (agent)
- Added JSDoc comments to `NostrClient` class and methods.
- Added JSDoc comments to `EventsCacheStore`.
- Created `docs/nostr-client-overview.md` with high-level documentation.
- Fixed a race condition in `tests/nostr-delete-flow.test.mjs`.
2026-01-19 15:18:36 +00:00
thePR0M3TH3AN 2b79021184 Merge pull request #1385 from PR0M3TH3AN/codex/add-tests-for-normalization-and-integration
Add DM normalization, DB persistence, and integration tests for direct messages
2026-01-19 09:32:35 -05:00
thePR0M3TH3AN 8f04692165 Add DM normalization and integration tests 2026-01-19 09:32:14 -05:00
google-labs-jules[bot] 41da0a8361 test(ai): add unit tests for cache, sessionActor, and r2Service (agent)
- Added `tests/state/cache.test.mjs` to test profile persistence and URL health caching.
- Added `tests/nostr/sessionActor.test.mjs` to test session key encryption/decryption and storage.
- Added `tests/services/r2Service.test.mjs` to test R2 settings management and bucket configuration.
- Exposed `__testExports` in `js/nostr/sessionActor.js` to allow testing of private helper functions.
- Used `tests/test-helpers/setup-localstorage.mjs` to mock browser environments in all new tests.
2026-01-19 11:31:46 +00:00
google-labs-jules[bot] 4ca984f673 refactor(ai): extract TagPreferenceMenu from js/app.js (agent)
Moved tag preference menu logic into `js/ui/tagPreferenceMenuController.js`.
Kept `js/app.js` interface intact via thin wrappers.
Added unit tests covering new controller.
Followed AGENTS.md refactor checklist.
2026-01-19 03:43:25 +00:00
google-labs-jules[bot] 903f63c88f chore(ai): CI health fixes (flaky tests)
- Fix `tests/moderation-service.test.mjs` failing with `nostr-extension-missing` by injecting dependency.
- Fix circular dependency in `js/nostr/commentEvents.js` causing `tests/nip71-base-event-tags.test.mjs` to fail.
- Update `package-lock.json` via `npm audit fix`.
2026-01-19 03:02:23 +00:00
thePR0M3TH3AN 9c9a866d29 Add hash change handler tests for default views 2026-01-18 20:36:12 -05:00
thePR0M3TH3AN 4abcba8de5 Refine for-you tag preference runtime 2026-01-18 20:22:07 -05:00
thePR0M3TH3AN aaaf397ac0 Update sidebar hydration tests for for-you link 2026-01-18 20:15:14 -05:00
google-labs-jules[bot] e78f7c47f1 chore(ai): remove dead code (agent)
Removes unused JavaScript files, exports, and npm dependencies identified during a dead code sweep.

- Deleted `js/healthService.js` (unused).
- Deleted `js/nostr/signer-interface.js` (unused).
- Deleted `js/watchHistorySort.js` (unused).
- Deleted `js/services/signerKeyManager.js` and `tests/ui/signerKeyManager.test.mjs` (unused).
- Removed `buildStorageChallengeEvent` from `js/nostrEventSchemas.js`.
- Removed `path` and `webtorrent` from `package.json` dependencies (unused/vendored).
- Updated `tests/hashtag-preferences.test.mjs` to fix a mock-related failure exposed by environment checks.

Verified with `npm run test:unit`. `lint` and `format` checks run.
Note: `tests/moderation-service.test.mjs` failure deemed pre-existing.
See `artifacts/depcheck.json` (if retained) for dependency analysis.
2026-01-18 20:20:54 +00:00
thePR0M3TH3AN 84e9dcd2c1 Add nostr adapter and registry tests 2026-01-18 11:25:22 -05:00
google-labs-jules[bot] e11f44f2f2 test(ai): add unit tests for profileCache and appState (agent) 2026-01-18 11:15:34 +00:00
thePR0M3TH3AN e1a12868e0 Merge pull request #1298 from PR0M3TH3AN/ai/refactor-torrent-status-20231027-751310548949696499
Refactor updateTorrentStatus to TorrentStatusController
2026-01-17 22:24:56 -05:00
google-labs-jules[bot] 45b20bb58e refactor(ai): extract updateTorrentStatus from js/app.js (agent)
Moved torrent status update logic to `js/ui/torrentStatusController.js` to improve separation of concerns as per `AGENTS.md`. The controller accepts a `getVideoModal` accessor and an `onRemovePoster` callback to decouple it from direct `videoModal` or `Application` dependencies. Added unit tests in `tests/ui/torrentStatusController.test.mjs`.
2026-01-18 03:11:25 +00:00
google-labs-jules[bot] 7743572a22 chore(ai): CI health fixes (flaky tests) 2026-01-18 02:39:42 +00:00
google-labs-jules[bot] 9d06f43321 feat: implement incremental fetching for Nostr lists
Implements a `SyncMetadataStore` to persist last-seen timestamps for replaceable lists (Kind 10000, 30000, 30002, 30015).
Adds `fetchListIncrementally` helper to `NostrClient` which performs per-relay `since` queries.
Updates `SubscriptionsManager`, `UserBlockListManager`, `HashtagPreferencesService`, and `adminListStore` to utilize incremental fetching.
Prevents local cache wipes when incremental fetches return empty results (indicating "no updates").
2026-01-17 21:11:48 +00:00
google-labs-jules[bot] 86ffb8cb2a Define centralized cache policies and wire them into fetchers 2026-01-17 19:12:09 +00:00
google-labs-jules[bot] b059d66d80 Fix watch history mobile layout and sort order
- Updated CSS for `.watch-history-card` to use `flex-col` on mobile for stacked layout, switching to `sm:flex-row` on larger screens.
- Added `w-full` to `.watch-history-card__thumbnail` on mobile to constrain image width.
- Fixed a bug in `js/nostr/watchHistory.js` where `computeWatchHistoryFingerprintForItems` was sorting the live history array in-place by ID, causing the UI to display an incorrect (non-chronological) order. The fix involves creating a shallow copy before sorting.
- Updated `tests/nostr/watchHistory.test.js` to verify behavior against the current storage version (`v5`).
2026-01-17 13:35:37 +00:00
google-labs-jules[bot] cbd8af42a6 Enforce v=2 tag and mandatory encryption for watch history 2026-01-17 11:32:31 +00:00