Commit Graph
66 Commits
Author SHA1 Message Date
thePR0M3TH3AN a639887a2d Merge pull request #1636 from PR0M3TH3AN/ai/fuzz-nostrEventSchemas-20241026-8251034504942230718
Fuzz Testing Infrastructure & Crash Fix
2026-01-24 14:35:59 -05:00
google-labs-jules[bot] 241ad32dc4 feat: add fuzz testing infrastructure and fix nostrEventSchemas crash
- Added `scripts/agent/fuzz-schemas.mjs`, `fuzz-dm.mjs`, `fuzz-magnet.mjs` and `fuzz-setup.mjs`.
- Fixed crash in `js/nostrEventSchemas.js` (buildAdminListEvent log and getNostrEventSchema type check).
- Added crash reproducers in `examples/reproducers/`.
- Fuzzers output reports to `artifacts/`.
- Updated fuzzers to deduplicate crashes and safely stringify inputs.
2026-01-24 16:46:46 +00:00
google-labs-jules[bot] 6884d06192 chore(ai): event schema validation tool + fixes
- Added `scripts/agent/validate-events.mjs` for builder validation.
- Enhanced `js/nostrEventSchemas.js` with `validateEventStructure`.
- Fixed `safeStringify` to handle objects correctly.
- Added `NOTE_TYPES.HTTP_AUTH` and `NOTE_TYPES.REPORT` with builders.
- Refactored `js/userBlocks.js`, `js/auth/signingAdapter.js`, `js/services/moderationService.js` to use builders.
- Updated `tests/user-blocks.test.mjs` mocks and assertions.
- Updated documentation.
2026-01-24 05:36:40 +00:00
google-labs-jules[bot]andPR0M3TH3AN 932e57c724 Fuzz testing and hardening for nostrEventSchemas and magnetUtils
- Added fuzzing scripts for nostrEventSchemas, dmDecryptor, and magnetUtils.
- Fixed crashes in nostrEventSchemas related to unsafe stringification of content.
- Fixed crash in magnetUtils when options argument is null.
- Added safeStringify helper in nostrEventSchemas.js.
- Included fuzzing reports and reproducers.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-23 16:12:42 +00:00
google-labs-jules[bot] 653f1925f8 chore(ai): event schema validation tool + fixes
- Created `scripts/agent/validate-events.mjs` to validate event builders against schemas.
- Instrumented all event builders in `js/nostrEventSchemas.js` to run validation in dev mode.
- Added `tests/event-schemas.test.mjs` to CI suite.
- Updated `docs/nostr-event-schemas.md` with validation instructions.
2026-01-23 05:33:57 +00:00
thePR0M3TH3AN 5e389ab29b Document and test share note events 2026-01-22 22:50:00 -05:00
thePR0M3TH3AN 8e5b8b09ce Add Nostr share note publishing 2026-01-22 22:46:15 -05:00
google-labs-jules[bot] 0060f1f593 Fix: guard pointerTags iteration in buildWatchHistoryEvent
Fuzzer discovered a crash when `pointerTags` is passed as null.
Added array check to prevent TypeError.

Also added fuzz harnesses for schemas, dm decryptor and magnet utils.
2026-01-22 16:54:01 +00:00
google-labs-jules[bot] f75531d2db chore(ai): format sources and fix moderation bugs (agent)
- Format `css/tailwind.source.css` with Prettier.
- Add allowlist entry for `VideoCard.js` media query pixel value in `scripts/check-design-tokens.mjs`.
- Remove accidental artifact `js/ui/dm/jules_session_4520373547615093905.zip`.
- Fix bug in `js/app.js` and `js/services/moderationActionController.js` where blocked users' videos were not correctly hidden in the UI immediately after blocking.
- Fix bug in `tests/app/moderation-overrides.test.mjs` where `userBlocks` mocks were insufficient to reflect state changes.
2026-01-22 14:58:35 +00:00
google-labs-jules[bot] e282cf5a29 chore(ai): event schema validation tool + fixes
- Added `scripts/agent/validate-events.mjs` to verify builder output against schemas.
- Updated `js/nostrEventSchemas.js` to enforce relay hints in `buildRepostEvent` (fixes `tests/nostr-boost-actions.test.mjs`).
- Documented usage in `docs/nostr-event-schemas.md`.
- Verified 25 event builder scenarios pass validation.
2026-01-22 05:31:40 +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] 5c2e9cd7f8 feat: add fuzz testing harness and fix repost builder
- Created generic fuzzing library `scripts/agent/fuzz-lib.mjs`.
- Implemented fuzz targets for `nostrEventSchemas.js`, `dmDecryptor.js`, and `magnetUtils.js`.
- Fixed `buildRepostEvent` to allow missing relay URLs for robustness.
- Added crash reproducers to `examples/reproducers/`.
2026-01-20 16:42:46 +00:00
google-labs-jules[bot] 3b80692eb0 chore(ai): event schema validation tool + fixes
- Created `scripts/agent/validate-events.mjs` to validate all event builders against schemas.
- Updated `docs/nostr-event-schemas.md` to match codebase (fixed `WATCH_HISTORY` key, removed unused `STORAGE_CHALLENGE`).
- Added `validateEventAgainstSchema` to `js/nostrEventSchemas.js` for runtime validation in dev mode.
- Instrumented `buildVideoPostEvent` to use runtime validation.
- Verified that all 22 builders produce conformant events.
2026-01-20 05:21:18 +00: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 d082df8e41 Add DM zap composer and zap request support 2026-01-19 11:29:55 -05:00
thePR0M3TH3AN 924ed9b482 Add DM privacy indicators and relay hint publishing 2026-01-19 10:56:54 -05:00
google-labs-jules[bot] 4d2bb8bf3d chore(ai): event schema validation tool + fixes
- Added `scripts/agent/validate-events.mjs` to validate event builders against schemas.
- Fixed `NOTE_TYPES.REPOST` schema content format (json instead of empty).
- Added `NOTE_TYPES.MUTE_LIST` and `buildMuteListEvent`.
- Added `buildProfileMetadataEvent` to standardise Kind 0 creation.
- Updated `js/ui/profileModalController.js` to use `buildProfileMetadataEvent`.
- Updated `js/userBlocks.js` to use `buildMuteListEvent` for publishing mute list snapshots.
- Updated `docs/nostr-event-schemas.md` with new schemas and builders.
2026-01-19 05:47:37 +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
google-labs-jules[bot] ec5fc23164 feat(fuzz): add input robustness testing harnesses and fixes
- Add fuzz testing scripts for `nostrEventSchemas.js`, `dmDecryptor.js`, and `magnetUtils.js` in `scripts/agent/`.
- Fix `build...` functions in `nostrEventSchemas.js` to handle `null`/`undefined` inputs.
- Fix `buildVideoPostEvent` to gracefully handle circular references in content serialization.
- Fix `normalizeAndAugmentMagnet` in `magnetUtils.js` to handle non-iterable `extraTrackers`.
- Include minimal reproducers for discovered crashes in `examples/reproducers/`.
2026-01-18 16:09:48 +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] cbd8af42a6 Enforce v=2 tag and mandatory encryption for watch history 2026-01-17 11:32:31 +00:00
google-labs-jules[bot] f50eda7e7a feat: add SignerKeyManager service for key derivation
- Defines `STORAGE_CHALLENGE` event type (Kind 22242) in `js/nostrEventSchemas.js` and docs.
- Implements `js/services/signerKeyManager.js` to derive symmetric keys from signer signatures or passphrases.
- Validates inputs and returns safe `CryptoKey` objects (AES-GCM).
2026-01-16 01:37:14 +00:00
google-labs-jules[bot] d6882fb5bb Fix CI, environment, linting, and unit test issues
- Fix circular dependency in `js/adminListStore.js` by importing from `js/nostrClientRegistry.js`.
- Update `js/services/hashtagPreferencesService.js` to include legacy kind 30005 in filters.
- Fix JSDOM mocking in `tests/modal-accessibility.test.mjs` (navigator getter) and `UploadModal` selectors.
- Add `getRoot()` to `js/ui/components/UploadModal.js` for API consistency.
- Update `tests/magnet-utils.test.mjs` expectations to reflect removed default tracker.
- Mock `ensureActiveSignerForPubkey` in `tests/moderation/submit-report.test.mjs`.
- Fix mock loader path in `tests/moderation/trust-seeds.test.mjs` to target `trustBootstrap.js`.
- Fix duplicate pointer tags in `js/nostrEventSchemas.js`'s `buildCommentEvent`.
- Update `tests/nostr/comment-events.test.mjs` and `tests/comment-event-builder.test.mjs` to match current code behavior (legacy kinds, unique tags).
2026-01-13 20:32:06 +00:00
thePR0M3TH3AN 5979d4e25f Use uppercase tags for comment events 2026-01-06 16:22:49 -05:00
google-labs-jules[bot] e9ba3f6681 Refactor watch history to use plaintext monthly buckets
- Update `js/nostrEventSchemas.js` to remove encryption tagging and update schema for `WATCH_HISTORY`.
- Update `js/nostr/watchHistory.js` to:
  - Bump storage version to 4.
  - Bucket items by `YYYY-MM`.
  - Publish plaintext JSON payloads with only event IDs and timestamps.
  - Remove encryption logic from publishing.
  - Update fetching to handle plaintext and fallback to legacy parsing.
- Update `js/watchHistoryService.js` to strip metadata from queued items and handle new snapshot response.
- Update `tests/watch-history.test.mjs` to reflect new plaintext behavior and disabled obsolete tests.
2026-01-05 15:26:31 +00:00
google-labs-jules[bot] 8293caf6d3 Refactor watch history to use simplified monthly record schema 2026-01-05 14:44:45 +00:00
google-labs-jules[bot] 498d9cb5b2 Revise watch-history tags to use month IDs
Refactors the watch-history system to prioritize `YYYY-MM` month identifiers over legacy snapshot IDs in event tags, storage keys, and cross-module references. Updates event schemas, storage keying (v3), and client interfaces to align with the new month-based structure. Renames `snapshotId` parameters to `taskId` for republishing operations.
2026-01-05 14:21:53 +00:00
google-labs-jules[bot] 48d9ea60cb Refactor watch history to use monthly YYYY-MM records
- Updated `buildWatchHistoryPayload` to remove legacy `snapshotId` logic.
- Updated `publishSnapshot` to use `YYYY-MM` as the `d` tag identifier.
- Updated `fetch` logic to retrieve all history events (removing restrictive `#d` filter) to ensure complete history across months is loaded.
- Fixed a runtime error in `fetch` where `now` was undefined.
- Updated `js/nostrEventSchemas.js` to prioritize `monthIdentifier` for the `d` tag.
- Removed legacy `snapshot` field from payload serialization.
2026-01-05 03:41:30 +00:00
google-labs-jules[bot] a3c7536543 Refactor watch history to use month-centric context
- Rename `WATCH_HISTORY_CHUNK` schema to "Watch history monthly payload" in `js/nostrEventSchemas.js`.
- Update `js/nostr/watchHistory.js` to replace `snapshotId` with `recordId` and `monthIdentifier` in logging and error tracking context.
- Ensure `fetch` logic uses `recordId` and `month` in chunk decryption context for clarity.
- Fix indentation for added fields in logging objects.
2026-01-05 03:23:32 +00:00
google-labs-jules[bot] 595d4cbe07 Refactor watch history to use single monthly event
Replaces the legacy chunked storage architecture with a single encrypted event per month.
- Renames `buildWatchHistoryChunkEvent` to `buildWatchHistoryEvent`.
- Updates `WatchHistoryManager` to publish and fetch single events, maintaining read compatibility for legacy chunks.
- Simplifies payload construction and removes chunk indexing logic.
- Updates tests to verify single-event publishing and legacy fallback.
2026-01-04 22:03:34 +00:00
thePR0M3TH3AN 9b12cbcb6f Switch watch history schemas to month identifiers 2026-01-03 13:42:28 -05:00
thePR0M3TH3AN 05c8b1a486 Update hashtag preference kind 2025-11-12 20:15:55 -05:00
thePR0M3TH3AN 6331896f6a Sanitize additional Nostr tags 2025-11-12 09:54:34 -05:00
thePR0M3TH3AN a59f214aeb Serialize repost targets when available 2025-11-03 14:35:43 -05:00
thePR0M3TH3AN 3445ef9059 Ensure comment builder always appends root #e tag 2025-11-03 10:45:44 -05:00
thePR0M3TH3AN d9b45ed867 Ensure comment events keep root e tags alongside addresses 2025-11-03 09:56:33 -05:00
thePR0M3TH3AN e496376236 Align subscription lists with NIP-51 follow set kind 2025-10-31 08:33:39 -04:00
thePR0M3TH3AN 2fae0a0e7c Update subscription and block lists to encrypted tag arrays 2025-10-30 15:51:21 -04:00
thePR0M3TH3AN bc9bf9e682 Enforce relay resolution for repost events 2025-10-30 15:32:18 -04:00
thePR0M3TH3AN ba656978a5 Add target kind tag to quote reposts 2025-10-30 12:39:46 -04:00
thePR0M3TH3AN cd3c3824b9 Handle dual NIP-44/NIP-04 watch history encryption 2025-10-30 11:17:39 -04:00
thePR0M3TH3AN bd40bd1997 Prefer nip44.v2 for private lists and update tests 2025-10-30 10:20:08 -04:00
thePR0M3TH3AN 5062910245 Ensure repost events carry relay hints and correct kinds 2025-10-30 09:29:54 -04:00
thePR0M3TH3AN 41d751904f Include event pointer tags for reactions 2025-10-29 22:14:20 -04:00
thePR0M3TH3AN eeee978134 Add NIP-22 metadata to video comment events 2025-10-29 14:38:59 -04:00
thePR0M3TH3AN d1d4fa150c Use kind 1111 comments with address-first tags 2025-10-29 07:45:34 -04:00
thePR0M3TH3AN 372cb8ca6f Add hashtag preference schema and feature flag 2025-10-25 15:28:15 -04:00
thePR0M3TH3AN bedc0fd5c6 Add video comment schema and builder 2025-10-24 13:54:24 -04:00
thePR0M3TH3AN 3099211f8a Propagate reaction target author metadata 2025-10-23 09:17:36 -04:00