Commit Graph
76 Commits
Author SHA1 Message Date
google-labs-jules[bot]andPR0M3TH3AN ffd8f0e23c fix: Sync package-lock.json and fix tests for nostr-tools v2
- Synced `package-lock.json` with `package.json` to resolve `npm ci` failures.
- Updated `nostr-tools` dependencies to resolve conflicts.
- Fixed `SyntaxError` in `tests/nostr-login-permissions.test.mjs` caused by duplicate code.
- Updated `js/nostr/client.js`, `js/nostr/publishHelpers.js`, `js/nostr/adapters/nsecAdapter.js`, `js/nostr/nip46Client.js` to use `hexToBytes` helper when calling `nostr-tools` functions, as v2+ expects `Uint8Array` instead of hex strings.
- Added `hexToBytes` helper in `js/utils/hex.js`.
- Updated tests (`tests/nostr/dm-direct-message-flow.test.mjs`, `tests/nostr-send-direct-message.test.mjs`, `tests/nostr-private-key-signer.test.mjs`, `tests/nostr/nip46Client.test.js`) to use `Uint8Array` for keys where required.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-31 19:56:44 +00:00
thePR0M3TH3AN 3ea7cc3c64 Merge branch 'unstable' into ai/fuzz-targets-20260131-17598416067342863881 2026-01-31 13:50:37 -05:00
thePR0M3TH3AN 394dec1ad2 Merge branch 'unstable' into chore/design-system-audit-report-12130445815758743012 2026-01-31 13:49:21 -05:00
google-labs-jules[bot]andPR0M3TH3AN a0daeb8e63 feat: add fuzz testing harnesses and fix build dependencies
- Add fuzz testing harnesses for `nostrEventSchemas.js`, `dmDecryptor.js`, and `magnetUtils.js`.
- Move build-critical devDependencies (`cross-env`, `esbuild`, `nostr-tools`) to dependencies to fix Netlify deployment failure.
- Harmonize fuzzing iterations to 50,000.
- Add documentation headers to fuzz scripts.
- Verified robustness of fuzz targets (no crashes found).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-31 17:26:47 +00:00
google-labs-jules[bot]andPR0M3TH3AN 8390476bdf fix(ai): repair CI build dependencies and test reliability (agent)
- Move build/runtime deps (`nostr-tools`, `esbuild`, `autoprefixer`, `@tailwindcss/typography`, `cross-env`) to `dependencies` for production builds.
- Resolve duplicate package entries in `package.json`.
- Fix open handle (timeout leak) in `hashtagPreferencesService.js`.
- Fix flaky test mock in `hashtag-preferences.test.mjs`.
- Fix runtime variable error in `nostr/client.js`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-31 16:11:21 +00:00
google-labs-jules[bot]andPR0M3TH3AN 8c24fc36df fix: remove duplicate @noble/hashes dependency and move cross-env to dependencies
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-31 16:08:51 +00:00
google-labs-jules[bot]andPR0M3TH3AN 9a7a9ba65e fix(ai): fix CI build and test failures (agent)
- Move `nostr-tools`, `esbuild`, `cross-env` to `dependencies` to ensure availability in production builds.
- Remove duplicate dependencies (`autoprefixer`, `@noble/hashes`, `@tailwindcss/typography`) to fix potential version conflicts.
- Fix timeout leak in `hashtagPreferencesService.js`.
- Fix test mock in `hashtag-preferences.test.mjs` to prevent timeouts.
- Update `nostrClient` permission request to use correct constant.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-31 16:04:35 +00:00
google-labs-jules[bot]andPR0M3TH3AN df938c7564 chore(ai): CI health fixes (flaky tests, deps, deploy)
- Fix flaky `tests/hashtag-preferences.test.mjs` by correcting mock implementation for `fetchListIncrementally`.
- Fix `tests/nostr-login-permissions.test.mjs` failure by requesting correct permissions in `js/nostr/client.js` (ReferenceError fix).
- Fix 90s timeout in `HashtagPreferencesService` by clearing the timeout timer upon successful decryption.
- Correct `package.json` dependency classification:
  - Remove duplicate devDependencies (`autoprefixer`, `@tailwindcss/typography`) that are already in `dependencies`.
  - Ensure build-critical tools (`tailwindcss`, etc.) are in `dependencies` to survive `npm prune --production` on Netlify.
  - Install `esbuild` and `cross-env` as devDependencies.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-31 03:27:16 +00:00
thePR0M3TH3AN 8637cff173 Merge pull request #1971 from PR0M3TH3AN/ai/docs-update-YYYYMMDD-1055396062770171148
Update documentation and build scripts
2026-01-30 10:04:58 -05:00
thePR0M3TH3AN 73add3a387 Merge branch 'unstable' into ai/onboarding-20260130-10223342974187330616 2026-01-30 09:26:29 -05:00
thePR0M3TH3AN 667b48c301 Merge branch 'unstable' into telemetry-aggregation-fix-6349074633801704985 2026-01-30 09:19:03 -05:00
google-labs-jules[bot]andPR0M3TH3AN 8f7a69ee29 docs(ai): update quickstart and contributing (agent)
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-30 14:18:14 +00:00
google-labs-jules[bot]andPR0M3TH3AN 7ddbec32b8 chore: update cross-env and package-lock.json to fix CI build
- Updated `cross-env` to latest version.
- Updated `package-lock.json` to resolve build warnings and potential CI cache issues.
- Includes previous test fixes and onboarding report.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-30 10:16:07 +00:00
google-labs-jules[bot]andPR0M3TH3AN 3302b5700a Use direct tailwindcss executable in build:css
- Replace `npx tailwindcss` with `tailwindcss` in `package.json` scripts.
- Improves build reliability by avoiding npx lookup issues in CI environments.
- Verified build success locally.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-30 06:49:24 +00:00
google-labs-jules[bot]andPR0M3TH3AN 0960d3612d fix(ci): move @tailwindcss/typography to dependencies
- Move `@tailwindcss/typography` from `devDependencies` to `dependencies`.
- This ensures it is available during Netlify's production build, which prunes `devDependencies` but requires this plugin for `tailwind.config.cjs`.
- Fixes "Deploy failed" errors related to build script failures.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-30 02:43:42 +00:00
google-labs-jules[bot]andPR0M3TH3AN 7995c23229 fix(ci): move build deps to dependencies
- Move `tailwindcss`, `autoprefixer`, and `postcss` to `dependencies` to ensure they are available during Netlify build (which defaults to production environment).
- Keep version compatibility with v3.
- (Implicit) Includes the `package-lock.json` update.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-30 02:40:10 +00:00
google-labs-jules[bot]andPR0M3TH3AN 8fd9fb4a18 chore: Add daily design system audit script
- Add `audit` script to `package.json`.
- Add `scripts/daily-design-system-audit.mjs` implementation.
- Update `scripts/daily-design-system-audit.mjs` to explicitly lint `css/docs.css`.
- Revert changes to `lint:css` in `package.json` to prevent potential CI regressions.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-29 16:53:51 +00:00
google-labs-jules[bot]andPR0M3TH3AN 83622c53ef chore: Enhance daily design system audit script and config
- Add `audit` script to `package.json` to run `scripts/daily-design-system-audit.mjs`.
- Update `lint:css` to include `css/docs.css` for better coverage.
- Improve `scripts/daily-design-system-audit.mjs` parsing logic for Hex and CSS violations to better handle output formats.
- Generate `REMEDIATION_REPORT.md` with current audit results (No violations).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-29 16:05:37 +00:00
google-labs-jules[bot]andPR0M3TH3AN 0bfa3b08e8 fix(ci): fix netlify deployment by building to dist
- Move from root publishing to clean `dist/` directory
- Create `scripts/build-dist.mjs` to orchestrate build and copy assets
- Update `package.json` build script
- Update `netlify.toml` to publish `dist/`
- Ignore `dist/` in `.gitignore`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-29 09:07:15 +00:00
google-labs-jules[bot]andPR0M3TH3AN f80bbc7dae chore(ai): remove dead code (agent)
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 20:33:25 +00:00
thePR0M3TH3AN 36254d0a0c Merge branch 'unstable' into fix-npm-ci-noble-hashes-12361867573265667733 2026-01-27 14:54:41 -05:00
google-labs-jules[bot]andPR0M3TH3AN 19bc401296 Fix npm ci failure by resolving @noble/hashes dependency conflict
Explicitly adds @noble/[email protected] to devDependencies to satisfy the peer dependency of @exodus/bytes (used by jsdom), resolving the conflict with nostr-tools which requires version 1.3.1. Regenerates package-lock.json to include the correct versions.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 19:50:30 +00:00
google-labs-jules[bot]andPR0M3TH3AN aa7f4c6902 fix(deps): explicitly add @noble/[email protected] to resolve conflicts
Explicitly adds `@noble/[email protected]` to `package.json` dependencies.
This resolves a `peerDependencies` conflict where `@exodus/bytes` (a dependency
of `jsdom`) requires `@noble/hashes` ^1.8.0 || ^2.0.0, but `nostr-tools`
requires version 1.3.1.

By adding it to the root project, `npm` can correctly hoist version 2.0.1 for
`@exodus/bytes` while keeping version 1.3.1 nested for `nostr-tools`.
This fixes `npm ci` failures in CI environments that strictly validate the lockfile.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 19:47:12 +00:00
google-labs-jules[bot]andPR0M3TH3AN bc51f21c0d Fix profile modal opening latency by deferring expensive UI updates
The profile modal was slow to open (~100ms+ delay) when a user has many trusted contacts, blocked users, or moderation reports, because `refreshModerationSettingsUi` and `populateBlockedList` were called synchronously before making the modal visible.

This change refactors `ProfileModalController.show()` to:
1. Render the header synchronously (fast).
2. Call `open()` immediately to make the modal visible.
3. Defer expensive data population (`refreshModerationSettingsUi`, `populateBlockedList`, `refreshWalletPaneState`) to the next animation frame using `requestAnimationFrame`.

This significantly improves the perceived responsiveness of the profile button.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 19:03:03 +00:00
google-labs-jules[bot]andPR0M3TH3AN 3fe7633898 Fix docs content loading by vendoring marked and highlight.js
The documentation system relied on external CDNs for `marked` and `highlight.js`. This caused content loading failures ("Error loading content") when CDNs were blocked or unreachable.

This change:
- Adds `marked` and `highlight.js` to `package.json` dependencies.
- Vendors `marked.min.js` (from UMD build) and `highlight.min.js` (downloaded) into `vendor/`.
- Updates `index.html` to load these libraries from local `vendor/` path instead of CDN.

Verified with Playwright script ensuring docs content loads successfully.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 15:43:24 +00:00
google-labs-jules[bot]andPR0M3TH3AN 37abdd737f Fix CI build failure by adding missing devDependencies
- Added `http-server` and `serve` to `devDependencies`.
- This resolves CI failures where `npx` commands for `http-server` (used in Playwright) and `serve` (used in start scripts) would fail or block due to implicit installation restrictions.
- `package-lock.json` updated to reflect new dependencies.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-27 14:37:40 +00:00
google-labs-jules[bot] 603b0b1a69 test(ai): add unit tests for NostrClient and NostrService (agent) 2026-01-26 14:09:53 +00:00
google-labs-jules[bot] 4a0b81ad98 chore(ai): remove dead code (unused exports & deps) 2026-01-24 20:28:53 +00:00
thePR0M3TH3AN d12260b7ef Merge pull request #1628 from PR0M3TH3AN/ai/deps-playwright-1.58.0-913530217504265417
chore(ai): bump playwright to 1.58.0 and dependency scan
2026-01-24 14:32:22 -05:00
google-labs-jules[bot] f1b124f4e2 chore(ai): bump playwright to 1.58.0 and dependency scan
- Upgraded @playwright/test and playwright to ^1.58.0
- Generated dependency scan artifacts (npm-audit, npm-outdated)
- Documented issues for nostr-tools version mismatch and webtorrent upgrade
2026-01-24 09:44:41 +00:00
google-labs-jules[bot] c9201c777e Add privacy-preserving telemetry aggregation script
Moves and enhances the telemetry aggregator script to `scripts/agent/telemetry-aggregator.mjs`.
Updates `package.json` to point to the new location.
Implements robust parsing for smoke test summaries and fuzz reports.
Adds PII sanitization (IPs, emails, keys, paths).
Enforces opt-in via `ENABLE_TELEMETRY` environment variable.
Adds `ai/reports/` to `.gitignore`.
2026-01-24 06:29:10 +00:00
google-labs-jules[bot] a731ef6887 fix(ai): frontend console error — fix missing build artifact and admin list fetch warning (agent)
- Added `start` script to `package.json` to ensure `npm run build` is executed before serving, preventing 404 errors for `css/tailwind.generated.css`.
- Updated `js/adminListStore.js` to include the super admin pubkey (decoded from `ADMIN_SUPER_NPUB`) in the filter when fetching admin lists. This resolves the warning: `[adminListStore] Cannot use incremental fetch for editors without author.`
- Added `scripts/agent/debug_frontend.py` to diagnose frontend errors using Playwright.
- Verified fixes by running the debug script and confirming warnings are gone.
2026-01-23 18:45:36 +00:00
google-labs-jules[bot] 28009deae7 chore(ai): bump prettier to 3.8.1
Upgraded prettier to 3.8.1 (safe patch upgrade).
Ran security scan (0 vulnerabilities).
Identified other outdated dependencies (see PR description).
2026-01-23 09:36:20 +00:00
thePR0M3TH3AN 12ee671261 Merge pull request #1498 from PR0M3TH3AN/ai/lint-20250523-15980727212633772968
chore(ai): apply formatting/lint autofixes
2026-01-22 10:19:27 -05: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
thePR0M3TH3AN 054fca8433 Add unit test sharding and timeouts 2026-01-22 09:58:18 -05:00
google-labs-jules[bot] 18e3be5f40 chore(ai): bump prettier to 3.8.1 and perform dependency scan
- Perform `npm audit` and `npm outdated` (artifacts included).
- Update `prettier` to 3.8.1 (safe devDependency upgrade).
- Remove accidentally committed/leftover session file `js/ui/dm/jules_session_4520373547615093905.zip` which caused lint errors.
- Pre-existing lint error in `js/ui/components/VideoCard.js` and test failure in `tests/app/moderation-overrides.test.mjs` were identified and verified as unrelated.
2026-01-22 09:23:52 +00:00
google-labs-jules[bot] 4daa41a91b chore(ai): add smoke test script (agent) 2026-01-20 21:32:55 +00:00
thePR0M3TH3AN 89e82778d6 Add DM test suites and headless e2e CI 2026-01-19 13:43:13 -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 e3dc7f2f43 Merge pull request #1305 from PR0M3TH3AN/ai/deps-upgrade-bundle-2024-01-18-8434648762069799900
Dependency Updates & Security Scan Report
2026-01-18 07:54:43 -05:00
google-labs-jules[bot] 7376b2e857 chore(ai): bump devDependencies (autoprefixer, esbuild, prettier) and add audit reports 2026-01-18 09:14:59 +00:00
google-labs-jules[bot] 30e0d9e287 feat(tools): add privacy-preserving telemetry aggregator
- Added `scripts/telemetry-aggregator.mjs` to collect, sanitize, and aggregate errors from unit and smoke tests.
- Added `telemetry:aggregate` script to `package.json`.
- Implemented PII sanitization for IPs, emails, and hex keys.
- Configured aggregation to prioritize critical/high severity issues.
2026-01-18 06:06:37 +00:00
google-labs-jules[bot] b83f5009e4 I have updated the zap dialog to display the "Done" button on success.
I modified `js/channelProfile.js` to implement the logic that toggles the "Send" button to "Done" and closes the dialog when clicked. Additionally, I updated `js/ui/zapController.js` to prevent the form from resetting entirely on success, which preserves receipts; instead, it now manually clears the comment and sets the completed state.

These changes ensure consistent "Done" button behavior across both the Channel Profile and Video Modal zap interfaces. I also included minor `package.json` updates for linting dependencies.
2026-01-18 01:58:56 +00:00
google-labs-jules[bot] 898f3056a8 Add load testing scripts and report 2026-01-17 19:56:27 +00:00
google-labs-jules[bot] fca40daa70 Fix oversized watch history thumbnails on mobile
- Replaced `w-full` with `w-56 max-w-full` in `.watch-history-card__thumbnail` class.
- This ensures thumbnails are constrained to ~224px (14rem) on all viewports, fixing the "bleeding" issue on mobile while maintaining the desktop layout.
- The `max-w-full` ensures safety on very narrow screens.
2026-01-17 14:47:55 +00:00
google-labs-jules[bot] 98e63e29e6 Expand tests for generic connection payloads and R2-specific mapping
This change adds comprehensive unit and integration tests to cover:
1. `signerKeyManager.js`: Verification of key derivation from signatures and passphrases.
2. `storageService.js`: Tests for saving, retrieving, and decrypting connections, specifically verifying that generic S3 payloads (endpoint, region, bucket) are preserved alongside R2 payloads.
3. `UploadModal.js`: Integration tests mocking the storage service to verify that R2 connection details correctly map to the UI input fields and that the "Unlock" flow updates the UI state.

It also introduces `fake-indexeddb` as a dev dependency to enable reliable testing of IndexedDB interactions in the Node/JSDOM test environment.
2026-01-16 12:07:17 +00:00
google-labs-jules[bot] cced268982 Fix: Ensure comments controller is initialized when opening video modal
This addresses an issue where comments would not display on the first load of the video modal if the DOM elements were not fully bound. The `open()` method now checks if the `commentsList` is missing or disconnected and re-initializes the `CommentsController` if necessary.

Also updated `tests/video-modal-accessibility.test.mjs` to fix a JSDOM environment issue with `navigator` mocking.
2026-01-07 00:59:47 +00:00
google-labs-jules[bot] 3096f02e40 Remove metadata toggle from watch history pane
Removed the metadata toggle UI and related logic from the watch history implementation.
- Updated `components/profile-modal.html` to remove the UI block.
- Cleaned up `js/ui/profileModalController.js` and `js/historyView.js` to drop metadata preference state and handlers.
- Updated `tests/watch-history.test.mjs` to remove obsolete test cases referencing `metadataPreference`.
2026-01-05 18:56:58 +00:00
google-labs-jules[bot] cc25635ce6 Refactor watch history to use monthly buckets (v3)
Refactors `js/nostr/watchHistory.js` to store and publish watch history items in monthly buckets (`YYYY-MM`) instead of using chunk splitting. Updates storage version to 3, migrates existing data, and simplifies fetch/merge logic to handle monthly records. Removes legacy chunk rebalancing code. Updates tests to verify monthly bucketing behavior.
2026-01-05 14:11:57 +00:00