- 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.
- 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`.
This commit adds a minimal reproducer script that demonstrates a bug where comments on an original video are hidden when viewing that video via a Repost (Kind 6).
The issue stems from `normalizeCommentTarget` using the Repost's metadata (Kind 6, Reposter Pubkey) instead of the Original Video's metadata to generate the comment filter descriptor. This causes valid comments (which tag the Original Video) to be filtered out by `isVideoCommentEvent`.
Added:
- `examples/reproducers/2-repost-comment-visibility-bug/reproduce_issue.js`
- `examples/reproducers/2-repost-comment-visibility-bug/README.md`
Run `npm run format` and `npm run lint`.
Fix stylelint configuration to correctly parse variables with units in their names.
Migrate raw CSS measurements to tokens in `css/tokens.css` and update usages in `css/tailwind.source.css` and HTML templates.
Improve `scripts/check-design-tokens.mjs` to handle variable names with unit-like suffixes.
Files changed:
- css/tailwind.source.css (formatted and fixed lint)
- css/tokens.css (added tokens)
- stylelint.config.cjs (fixed regex)
- scripts/check-design-tokens.mjs (improved detection logic)
- components/profile-modal.html (fixed arbitrary values)
- index.html (fixed arbitrary values)
- 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.
- Performed security and dependency scan.
- Created `artifacts/npm-audit.json` (0 vulnerabilities).
- Created `artifacts/npm-outdated.json`.
- Created `artifacts/proposed_issues.md` detailing required major upgrades.
- No safe minor/patch upgrades were found (dependencies are locked or up-to-date within range).
- `nostr-tools` is up-to-date (2.19.4).