Commit Graph
157 Commits
Author SHA1 Message Date
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
google-labs-jules[bot] 4a0b81ad98 chore(ai): remove dead code (unused exports & deps) 2026-01-24 20:28:53 +00:00
google-labs-jules[bot] 876153c7ce chore(ai): doc js/nostr/client.js (agent) 2026-01-24 15:11:26 +00:00
google-labs-jules[bot] cf92269468 fix(tests): resolve unit test failures in comment-events.test.mjs
- Update `publishComment` to return standardized string error codes (e.g., `session-actor-publish-blocked`, `auth-required`) instead of raw Error objects, ensuring consistency with test expectations.
- Introduce `resolveActiveSigner` dependency injection in `publishComment` to allow tests to supply mock signers, resolving failures where `getActiveSigner()` returned null.
- Expose `commentCache` via `__testExports` in `js/nostr/commentEvents.js` and clear it in `tests/nostr/comment-events.test.mjs` via `afterEach` to prevent test state pollution.
- Update test assertions to match the standardized error codes.

This resolves CI failures related to mismatched error messages and shared state in comment event tests.
2026-01-23 17:05:02 +00:00
google-labs-jules[bot] ae24fe211c chore(ai): doc js/nostr/client.js (agent) 2026-01-23 15:29:06 +00:00
google-labs-jules[bot] 88fd378648 chore(ai): remove dead code (magnet.js and unused exports)
- Deleted `js/magnet.js` as it was a redundant wrapper for `js/magnetUtils.js`.
- Refactored `js/services/videoNotePayload.js`, `js/ui/components/EditModal.js`, and `js/nostr/nip71.js` to use `magnetUtils.js` and `magnetShared.js`.
- Updated `tests/magnet-utils.test.mjs` to remove tests for the deleted file.
- Removed unused exports `DEFAULT_FEED_CONFIG` and `DEFAULT_CONFIG_SCHEMA` from `js/feedEngine/engine.js` and `index.js`.
- Verified changes with unit tests.
2026-01-22 20:29:07 +00:00
google-labs-jules[bot] d17045c431 chore(ai): doc js/nostr/client.js (agent)
- Added JSDoc comments to `js/nostr/client.js` for key methods (`sendDirectMessage`, `subscribeDirectMessages`, `ensurePool`, `saveLocalData`, `persistLocalData`).
- Created `docs/nostr-client-overview.md` to provide a high-level architectural overview of the `NostrClient` class.
2026-01-22 15:26:37 +00:00
google-labs-jules[bot] a484fb8f36 improve watch history reliability
- Reduced view threshold from 12s to 5s in watchHistoryTelemetry.js
- Enabled immediate watch history republishing (0ms delay) for the first attempt in watchHistory.js
- Updated watchHistoryService.js to recursively schedule queue flushes if items accumulate during an inflight sync
2026-01-21 22:07:23 +00:00
thePR0M3TH3AN b7b691d9cc Merge pull request #1465 from PR0M3TH3AN/ai/doc-nostr-client-20231027-549968251283674277
chore(ai): document js/nostr/client.js and nip71.js
2026-01-21 12:01:39 -05:00
google-labs-jules[bot] fb95d5c914 chore(ai): doc js/nostr/client.js and nip71.js (agent) 2026-01-21 15:10:38 +00:00
google-labs-jules[bot] 0458f354de chore(ai): event schema validation tool + fixes
- Created scripts/agent/validate-events.mjs to validate event builders against schemas.
- Added schemas and builders for Kind 5 (Deletion) and Kind 4 (Legacy DM) to js/nostrEventSchemas.js.
- Updated js/nostr/client.js to use new builders for Kind 5 and Kind 4 events.
- Updated js/nostr/client.js to use buildVideoPostEvent for video reverts.
- Verified all builders produce valid events.
2026-01-21 05:14:17 +00:00
google-labs-jules[bot] 5d7287b31b fix(ai): frontend console error — remove failing relay (agent) 2026-01-20 18:12:00 +00:00
google-labs-jules[bot] 40690c7008 chore(ai): doc js/nostr/client.js (agent)
- Added JSDoc comments to `NostrClient` class and methods.
- Documented state management (`activeMap`, `tombstones`), caching strategy, and subscription buffering.
- Created `docs/nostr-client-overview.md` with a high-level architecture overview.
- Verified with `tests/nostr-login-permissions.test.mjs`.
2026-01-20 15:23:38 +00:00
thePR0M3TH3AN 6116b6a7db Add relay health panel and telemetry opt-in 2026-01-19 14:03:15 -05:00
thePR0M3TH3AN 1fbfee5915 Add DM decrypt limits and caches 2026-01-19 13:51:48 -05:00
thePR0M3TH3AN 3c75ac8c3f Add DM read receipts and typing indicators 2026-01-19 13:29:40 -05:00
thePR0M3TH3AN 9ea9fe2f08 Add DM attachment upload and preview flow 2026-01-19 12:51:34 -05:00
thePR0M3TH3AN 6ab445011c Merge pull request #1390 from PR0M3TH3AN/ai/doc-nostr-client-20231026-4334329458905976061
chore(ai): document js/nostr/client.js
2026-01-19 10:34:12 -05:00
thePR0M3TH3AN 51b550adaa Improve DM relay selection fallback handling 2026-01-19 10:31:13 -05: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 4566c96330 Add NIP-17 DM delivery option 2026-01-19 10:05:00 -05:00
thePR0M3TH3AN 4cc51d7a79 Add NIP-44 verification to DM decrypt worker 2026-01-19 09:40:51 -05:00
thePR0M3TH3AN b05e898391 Add worker DM decrypt and persistence 2026-01-19 08:49:58 -05:00
thePR0M3TH3AN 56f2c1807c Implement worker-based NIP-04 DM sending 2026-01-19 08:39:43 -05: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
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 a03ba8f199 Merge pull request #1319 from PR0M3TH3AN/codex/enforce-signer-verification-for-comments
Require active signer for comment publishing
2026-01-18 13:21:33 -05:00
google-labs-jules[bot] eaedf3e36c feat: introduce NIP-46 request queue with throttling and priority
- Added `js/nostr/nip46Queue.js` to manage concurrent RPC requests.
- Updated `Nip46RpcClient` to serialize outgoing requests, preventing "rate-limited" errors.
- Implemented exponential backoff for retries when relays reject events due to rate limits.
- Added priority levels to `sendRpc` to prioritize user actions (signing, connecting) over background tasks (decrypting).
- Verified with new unit tests in `tests/unit/nip46Queue.test.mjs`.
2026-01-18 17:40:12 +00:00
thePR0M3TH3AN 4d5d8b96f6 Merge pull request #1315 from PR0M3TH3AN/ai/doc-client-20231026-15350337132812859795
chore(ai): document js/nostr/client.js
2026-01-18 11:42:47 -05:00
thePR0M3TH3AN 6aa64c4002 Require active signer for comment publishing 2026-01-18 11:17:29 -05:00
thePR0M3TH3AN 0a1ccc2bc9 Harden signer session persistence 2026-01-18 11:10:40 -05:00
thePR0M3TH3AN 95bb462508 Serialize nostr signEvent requests 2026-01-18 10:58:19 -05:00
google-labs-jules[bot] 4af5879a6c chore(ai): doc js/nostr/client.js (agent) 2026-01-18 15:07:53 +00:00
thePR0M3TH3AN b0d0dbdba7 Add signer capabilities for DM encryption 2026-01-18 09:21:08 -05:00
thePR0M3TH3AN d567bdbdcf Use signer adapters in nostr client flows 2026-01-18 09:08:22 -05:00
thePR0M3TH3AN 028d1164f9 Add signer registry helpers 2026-01-18 09:04:12 -05:00
thePR0M3TH3AN cef64aa5d3 refactor: extract signer cipher helpers 2026-01-18 08:56:53 -05:00
thePR0M3TH3AN a6ae684a98 Add signer interface and nostr adapters 2026-01-18 08:52:25 -05:00
thePR0M3TH3AN 2088234a3e Merge pull request #1297 from PR0M3TH3AN/ai/ci-health-20250212-3024044749559597461
CI Health: Fix flaky tests in comments and moderation services
2026-01-17 22:23:20 -05: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] a2de2b550d Fix hashtag preferences loading and profile persistence issues
- Migrated Kind 0 profile metadata storage to unified `profileCache.js` with partitioning and persistence.
- Added `defaultDTag` for hashtag preferences in `cachePolicies.js` to ensure consistent key resolution.
- Updated `hashtagPreferencesService.js` to use `profileCache` and implemented legacy data migration.
- Added `handleEvent` to `NostrClient` to centrally ingest Kind 0 events into the cache.
- Updated `authService.js` and `cache.js` to delegate profile operations to the unified cache system.
- Added `PROFILE_METADATA` schema to `nostrEventSchemas.js`.
2026-01-18 02:09:04 +00:00
google-labs-jules[bot] a1b1d85c9d feat(cache): integrate watch history with centralized registry
- Update `cachePolicies.js` to include `defaultDTag` for watch history.
- Update `profileCache.js` to resolve policies dynamically via `SECTION_TO_NOTE_TYPE`.
- Implement `resolveAddressKey` in `profileCache.js` for canonical key generation.
- Implement TTL expiration logic in `profileCache.js`.
- Update `watchHistory.js` to use `NOTE_TYPES.WATCH_HISTORY` for storage operations.
2026-01-17 23:04:08 +00:00
google-labs-jules[bot] b49a294dc0 feat: isolate view telemetry and restrict session actor publishing
- Add `isSessionActor` helper to `js/nostr/sessionActor.js` to identify ephemeral keys.
- Update `js/nostr/viewEvents.js` to namespace view deduplication caches by `actorPubkey` to prevent data leakage between sessions.
- Block comment publishing for session actors in `js/nostr/commentEvents.js`.
- Block watch history list publishing for session actors in `js/nostr/client.js`.
- Block user block list publishing for session actors in `js/userBlocks.js`.
- Block hashtag preference publishing for session actors in `js/services/hashtagPreferencesService.js`.
- Add inline documentation clarifying variable sources.
2026-01-17 22:48:31 +00:00
google-labs-jules[bot] 083f0c9ecc feat: implement shared LRU cache for video comments and reactions
- Added `js/utils/lruCache.js` with hit/miss tracking.
- Updated `js/nostr/cachePolicies.js` to set 5-minute TTL for comments/reactions.
- Integrated caching and incremental fetching in `js/nostr/commentEvents.js`.
- Implemented `listVideoReactions` in `js/nostr/reactionEvents.js` with caching logic.
2026-01-17 22:15:46 +00:00
google-labs-jules[bot] 3deb8d08f0 Implement profile-scoped caching and signer invalidation logic
- Updated `profileCache.js` to support clearing runtime memory on signer change.
- Updated `NostrClient` to trigger `clearSignerRuntime` on `setActiveSigner`.
- Updated list services (`subscriptions`, `userBlocks`, `hashtagPreferences`, `watchHistory`) to listen for `runtimeCleared` and reload data.
- Updated `NostrClient` sync metadata methods to default to the active profile pubkey.
- Added `partition-updated` event emission to `profileCache`.
2026-01-17 21:43:35 +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] 926e6ebf39 Refactor user-specific lists to use centralized profileCache 2026-01-17 20:47:27 +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
thePR0M3TH3AN fef2d547ec Merge pull request #1276 from PR0M3TH3AN/codex/watch-history-v2-encryption-596800188208881719
Enforce v=2 tag and mandatory encryption for watch history
2026-01-17 07:56:44 -05:00