Commit Graph
6038 Commits
Author SHA1 Message Date
Claude 95f47c761c Fix moderation lists error: import and instantiate RelayBatchFetcher
The NostrClient.fetchListIncrementally() method delegates to
this.relayBatchFetcher, but RelayBatchFetcher was never imported or
instantiated in client.js, causing "Cannot read properties of undefined
(reading 'fetchListIncrementally')" on every page load when admin lists
try to load.

https://claude.ai/code/session_01KuHrohbGvitA41A2fPD5p5
2026-02-09 13:40:46 +00:00
thePR0M3TH3AN f553714eeb Merge pull request #2263 from PR0M3TH3AN/refactor-client-incremental-fetch-10947149003245285900
refactor: Integrate RelayBatchFetcher into NostrClient
2026-02-09 08:37:55 -05:00
google-labs-jules[bot]andPR0M3TH3AN e25d79b2a2 Fix CI failures in NostrClient and SignerManager
- Export `resolveSignerCapabilities` from `SignerManager` and import in `NostrClient` to fix ReferenceError in `sendDirectMessage`.
- Initialize `RelayBatchFetcher` in `NostrClient` constructor to fix TypeError in `fetchListIncrementally`.
- Implement `registerPrivateKeySigner` in `NostrClient` to fix TypeError in signer tests.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 03:03:56 +00:00
google-labs-jules[bot]andPR0M3TH3AN e9294145d0 Refactor NostrClient fetching and fix signer regressions
Extracted `fetchListIncrementally` logic into `RelayBatchFetcher` for better maintainability.

Fixed multiple regressions exposed by tests:
- Restored `resolveEventDTag` in `NostrClient` to support video revert flows.
- Updated `registerPrivateKeySigner` to populate `this.sessionActor`, enabling worker-based encryption for DMs.
- Ensured `setActiveSigner` and `resolveActiveSigner` exports in `client.js` correctly hydrate signer capabilities via `SignerManager`.
- Fixed `SignerManager` imports for crypto helpers.
- Updated `nostr-signer-race.test.mjs` to correctly use `Map.set` instead of `Set.add` for permission cache.

Verified with targeted tests:
- `nostr-signer-race.test.mjs`
- `nostr-send-direct-message.test.mjs`
- `signers.test.mjs`
- `revert-video-dtag.test.mjs`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 03:02:24 +00:00
google-labs-jules[bot]andPR0M3TH3AN 89b7fca560 Align /content user docs with actual upload & contribution behavior
- Updated `content/docs/guides/upload-content.md` with accurate file types, size limit explanations, and troubleshooting steps.
- Updated `content/docs/getting-started.md` to link to the detailed upload guide and clarify "Invite-only" (Whitelist) mode.
- Verified changes against `js/ui/components/UploadModal.js`, `js/storage/s3-multipart.js`, and `js/accessControl.js`.
- Included `VALIDATION_REPORT.md` documenting the verification process.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 02:59:27 +00:00
google-labs-jules[bot]andPR0M3TH3AN 50930120fa Refactor fetchListIncrementally to use RelayBatchFetcher
Extracted the complex incremental fetching logic from NostrClient into a dedicated RelayBatchFetcher class to improve maintainability and readability.

Also includes necessary fixes for SignerManager and Client regressions exposed by the refactor:
- Restored missing `registerPrivateKeySigner` and `installNip46Client` methods.
- Fixed `SignerManager.ensureSessionActor` to correctly generate session keys when missing.
- Fixed `SignerManager.ensureExtensionPermissions` logic.
- Exposed `signEventWithPrivateKey` on SignerManager for consistency.
- Fixed `isSessionActor` logic to correctly identify logged-in users vs session actors.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 02:38:39 +00:00
google-labs-jules[bot]andPR0M3TH3AN b9aa72a602 Fix CI failures in SignerManager and tests
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 02:24:53 +00:00
google-labs-jules[bot]andPR0M3TH3AN b7b29d5332 Refactor publishVideo and fix client dependencies
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 02:07:30 +00:00
google-labs-jules[bot]andPR0M3TH3AN c9baa9f350 Fix CI failures in NostrClient and SignerManager
This change resolves several issues exposed by CI failures:
1.  **Refactor**: Integrated `RelayBatchFetcher` into `NostrClient` to handle incremental list fetching.
2.  **Fix**: Exported `resolveSignerCapabilities` from `SignerManager` and imported it in `client.js` to fix reference error.
3.  **Fix**: Re-implemented `registerPrivateKeySigner` in `NostrClient` using `createNsecAdapter` correctly (async/await).
4.  **Fix**: Updated `SignerManager` to correctly call `requestEnablePermissions` (passing `window.nostr`) and verify response (`.ok`).
5.  **Fix**: Updated `SignerManager` to populate individual permissions in cache to satisfy tests.
6.  **Fix**: Added `extensionPermissionCache` getter to `NostrClient` for test compatibility.
7.  **Test Fix**: Updated mocks in `tests/nostr-login-permissions.test.mjs` to match new architecture.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 02:01:23 +00:00
google-labs-jules[bot]andPR0M3TH3AN b246e431e5 Refactor publishVideo method in NostrClient
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 01:54:07 +00:00
google-labs-jules[bot]andPR0M3TH3AN 31d6730c59 Refactor fetchListIncrementally to use RelayBatchFetcher
This change completes the refactoring of `fetchListIncrementally` by:
1.  Importing `RelayBatchFetcher` in `js/nostr/client.js`.
2.  Instantiating `RelayBatchFetcher` in `NostrClient` constructor.
3.  Ensuring `RelayBatchFetcher` receives the client instance.

The complex logic was already moved to `js/nostr/relayBatchFetcher.js`, but the integration was missing, causing runtime errors. This change fixes the wiring and ensures the new class is used.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 01:46:46 +00:00
thePR0M3TH3AN 286e676280 Merge pull request #2262 from PR0M3TH3AN/claude/speed-up-nostr-login-g3yf4
Optimize login performance and fix decryption race conditions
2026-02-08 20:12:21 -05:00
Claude 29215d9b5e Speed up Nostr login and fix list sync, storage unlock, and feed registration
- Remove redundant double signer readiness gate evaluation that added 5-10s
  to the login path (authSessionCoordinator)
- Reduce decryption timeouts (10s→6s per scheme, 3s→1.5s retry delay,
  8s→5s NIP-07 no-prompt, 45s→25s overall ensureLoaded) for faster scheme
  fallback during list sync
- Fix storage tab unlock: remove overly strict capabilities check that
  blocked lazy-injecting NIP-07 extensions, and add auto-unlock attempt
  when profile modal opens with an active signer
- Fix subscription/hashtag decryption: always resolve signer for background
  refreshes (was previously gated behind allowPermissionPrompt), and always
  check window.nostr as fallback decryptor regardless of prompt mode
- Fix capabilities check in subscription decryption: use method existence
  instead of dynamic capabilities getter that returns false during lazy
  extension injection
- Wrap Promise.any decryptor calls in Promise.resolve().then() to catch
  synchronous throws from NIP-07 adapter methods when extension modules
  haven't loaded yet
- Make watch-history feed registration race-safe with pre-check and
  try/catch for concurrent registration attempts
- Improve NIP-07 extension detection with DOMContentLoaded listener for
  faster detection of extensions that inject during page load

https://claude.ai/code/session_0174XTB5ADJ9cMBSucqL9Wer
2026-02-09 00:18:43 +00:00
thePR0M3TH3AN 2e0d86eb50 Merge pull request #2260 from PR0M3TH3AN/refactor/nostr-client-managers-15317011398012543442
Refactor NostrClient into specialized managers
2026-02-08 15:52:16 -05:00
thePR0M3TH3AN cb06eaec92 Merge branch 'unstable' into refactor/nostr-client-managers-15317011398012543442 2026-02-08 15:52:09 -05:00
google-labs-jules[bot]andPR0M3TH3AN 8b1bd5507d Refactor NostrClient into specialized managers
- Extracted persistence logic to `PersistenceManager`
- Extracted connection/pool logic to `ConnectionManager`
- Extracted signer/auth logic to `SignerManager`
- Updated `NostrClient` to delegate to these managers
- Fixed `SignerManager` implementation gaps (NIP-46 connect/restore)
- Verified with `tests/nostr/client.test.mjs`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 20:42:25 +00:00
thePR0M3TH3AN dc196b8e43 Merge pull request #2259 from PR0M3TH3AN/codex/update-fetchhistory-to-handle-registration-errors
Guard watch-history renderer when feed registration is unavailable
2026-02-08 14:52:04 -05:00
thePR0M3TH3AN 7e5d1c7d63 Guard watch-history renderer feed fallback path 2026-02-08 14:48:19 -05:00
thePR0M3TH3AN ffae61ca75 Merge pull request #2258 from PR0M3TH3AN/codex/update-unlock/decrypt-flow-in-storage
Improve storage unlock permission flow and normalize decrypt errors
2026-02-08 14:42:09 -05:00
thePR0M3TH3AN 44dfcc363b Improve storage unlock permission and decrypt error handling 2026-02-08 14:38:21 -05:00
thePR0M3TH3AN a54e3c1329 Merge pull request #2257 from PR0M3TH3AN/claude/fix-logout-button-fxhy2
Deduplicate concurrent auth logout calls
2026-02-08 14:31:38 -05:00
thePR0M3TH3AN 2432e2b45b Merge pull request #2256 from PR0M3TH3AN/codex/add-signer-readiness-gate-for-login-sync
Unify signer-readiness gate across login list sync orchestration
2026-02-08 14:31:30 -05:00
thePR0M3TH3AN 7e07e1ce40 Unify signer-readiness gating for login list sync 2026-02-08 14:27:35 -05:00
thePR0M3TH3AN a7f3fa3a7d Merge pull request #2255 from PR0M3TH3AN/ai/load-test-20260208-18397515604721596787
feat: implement load test script and generate report
2026-02-08 14:22:39 -05:00
thePR0M3TH3AN ffe1cd4220 Merge pull request #2253 from PR0M3TH3AN/refactor-fetch-list-incrementally-15014692697767118430
Refactor fetchListIncrementally into RelayBatchFetcher
2026-02-08 14:21:06 -05:00
thePR0M3TH3AN 922a1cc8c2 Merge pull request #2254 from PR0M3TH3AN/codex/refactor-state-management-in-subscriptions-and-hashtag-prefe
Split subscriptions/hashtag readiness state and surface unavailable preference status
2026-02-08 14:19:42 -05:00
google-labs-jules[bot]andPR0M3TH3AN 35f95434f7 feat: implement load test script and generate report
- Refined scripts/agent/load-test.mjs to generate detailed JSON reports including topHotFunctions and error details.
- Added pnpm-lock.yaml to lock dependencies for reproducible runs.
- Generated artifacts/load-report-20260208.json from a 60s load test run.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 19:18:51 +00:00
thePR0M3TH3AN fd3f9e723a Split subscriptions/hashtag readiness and expose unavailable preference states 2026-02-08 14:10:39 -05:00
Claude 47fdad0ef2 Fix logout button not actually logging out the user
The auth:logout event listener in applicationBootstrap.js fires
synchronously during authService.logout(), setting __handled = true and
starting handleAuthLogout as fire-and-forget. When requestLogout() then
checked detail.__handled, it saw true and returned early — before
applyLoggedOutUiState() could update the UI.

Two changes fix this:

1. Remove the __handled early-return guard from requestLogout() so it
   always awaits handleAuthLogout.

2. Add a promise-based dedup guard to handleAuthLogout so the event
   listener's fire-and-forget call and requestLogout's awaited call
   share a single execution instead of running the logout cleanup twice.

https://claude.ai/code/session_01ArpiYU9bNdzme5xBHWnKuS
2026-02-08 19:09:50 +00:00
google-labs-jules[bot]andPR0M3TH3AN 6a74b3ddfc Refactor fetchListIncrementally into RelayBatchFetcher and genericize timeout logic
Extracted `fetchListIncrementally` from `js/nostr/client.js` into a new `RelayBatchFetcher` class in `js/nostr/relayBatchFetcher.js` to reduce complexity in `NostrClient`.
Moved `withRequestTimeout` to `js/utils/asyncUtils.js` to make it reusable and remove duplication.
Updated `js/nostr/client.js` to use these new components while preserving existing behavior and specific logging for COUNT diagnostics.

- Created `js/nostr/relayBatchFetcher.js`
- Updated `js/utils/asyncUtils.js`
- Refactored `js/nostr/client.js`
- Verified with existing tests

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 19:09:11 +00:00
thePR0M3TH3AN c785894943 Merge pull request #2252 from PR0M3TH3AN/codex/track-parallel-task-results-in-authsessioncoordinator
Track auth list sync outcomes and add consolidated auth-sync retry
2026-02-08 13:55:48 -05:00
thePR0M3TH3AN ffc248ecd3 Track auth list sync outcomes and expose retryable auth status 2026-02-08 13:52:04 -05:00
thePR0M3TH3AN 596498f306 Merge pull request #2251 from PR0M3TH3AN/claude/speed-up-nostr-login-EMmz7
Improve permission handling and fix async/decryption issues
2026-02-08 13:37:43 -05:00
thePR0M3TH3AN 589a196b0d Merge pull request #2241 from PR0M3TH3AN/refactor-app-constructor-8693111500998222747
🧹 Refactor Application constructor to setup() method
2026-02-08 13:33:33 -05:00
thePR0M3TH3AN e8eb138278 Merge pull request #2250 from PR0M3TH3AN/known-issues-triage-1473100205507666275
docs: update KNOWN_ISSUES.md and triage environment issues
2026-02-08 13:32:20 -05:00
thePR0M3TH3AN ede2f5cdc2 Merge pull request #2249 from PR0M3TH3AN/docs-subscription-backup-schema-11453826493234400433
Add Subscription Backup to Nostr Event Schemas Docs
2026-02-08 13:32:04 -05:00
thePR0M3TH3AN 5fcab6305f Merge pull request #2248 from PR0M3TH3AN/perf-sorters-optimization-11213639907851955656
⚡ Optimize chronological sorter performance
2026-02-08 13:31:49 -05:00
thePR0M3TH3AN a0614cdf82 Merge pull request #2247 from PR0M3TH3AN/ai/doc-moderationService-20260208-12200370596611243912
chore(ai): document js/services/moderationService.js
2026-02-08 13:31:33 -05:00
thePR0M3TH3AN 5b460fd327 Merge pull request #2246 from PR0M3TH3AN/ai/schema-validate-20260208-8755993239566575953
chore(ai): event schema validation tool + fixes
2026-02-08 13:31:20 -05:00
thePR0M3TH3AN 9c70fcfe26 Merge pull request #2234 from PR0M3TH3AN/security-fix-disable-dev-mode-6861215856535760775
🔒 Security Fix: Ensure IS_DEV_MODE is disabled in production
2026-02-08 13:30:36 -05:00
thePR0M3TH3AN 4d56d964c6 Merge branch 'unstable' into refactor-app-constructor-8693111500998222747 2026-02-08 13:28:55 -05:00
thePR0M3TH3AN 032bd40dbc Merge pull request #2237 from PR0M3TH3AN/dm-db-singleton-connection-6077819706812808064
⚡ Use singleton IndexedDB connection in dmDb.js
2026-02-08 13:28:25 -05:00
thePR0M3TH3AN f99f3f5ea8 Merge branch 'unstable' into security-fix-disable-dev-mode-6861215856535760775 2026-02-08 13:26:56 -05:00
google-labs-jules[bot]andPR0M3TH3AN c6cb9e6785 docs: update KNOWN_ISSUES.md and triage environment issues
- Update KNOWN_ISSUES.md to reflect current environment status (missing devDependencies).
- Create issues/test-env-deps.md to document missing dependencies preventing test runs.
- Create issues/popover-flip-bug.md to document the persistent popover flip bug.
- Update timestamps and references in KNOWN_ISSUES.md.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 18:19:33 +00:00
google-labs-jules[bot]andPR0M3TH3AN c7ac9f03f2 docs: add Subscription Backup to event schema catalogue
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 16:57:43 +00:00
google-labs-jules[bot]andPR0M3TH3AN 7c1f3c9ada perf: Optimize chronological sorter hook resolution
Hoisted the timestamp hook resolution out of the inner loop in `createChronologicalSorter`.
This avoids allocating an array of candidate functions for every comparison during sorting (O(N log N)).
Benchmark shows a ~27% speedup (38ms -> 27ms for 100k items).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 16:55:27 +00:00
thePR0M3TH3AN ec50db8645 Merge pull request #2243 from PR0M3TH3AN/refactor-application-monolith-3243348981324014635
Refactor Application class into Router and UI Coordinators
2026-02-08 10:57:44 -05:00
thePR0M3TH3AN 0ae727e97b Merge pull request #2244 from PR0M3TH3AN/refactor/nip46-connector-12138390981153838002
Refactor NIP-46 connection logic into Nip46Connector helper
2026-02-08 10:57:19 -05:00
thePR0M3TH3AN 6f765cc647 Merge pull request #2240 from PR0M3TH3AN/refactor-revert-video-2176939372137755635
🧹 Refactor revertVideo to use helper function
2026-02-08 10:56:57 -05:00
thePR0M3TH3AN eaa55c9a22 Merge pull request #2239 from PR0M3TH3AN/auth-service-refactor-485832951651761248
🧹 Refactor loadOwnProfile logic in AuthService
2026-02-08 10:56:31 -05:00