Commit Graph
915 Commits
Author SHA1 Message Date
thePR0M3TH3AN d10d65634d Fix magnet query parsing for values containing '=' 2026-02-09 23:22:49 -05:00
thePR0M3TH3AN a59b7a7a8e Fix magnet param parsing regression coverage 2026-02-09 23:16:13 -05:00
google-labs-jules[bot]andPR0M3TH3AN 691e02adbf refactor(ai): extract CreatorProfileController from js/app.js (agent)
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-10 03:15:11 +00:00
google-labs-jules[bot]andPR0M3TH3AN 74a44ebb36 Refactor publishVideo: Extract NIP-94/71 logic to videoPublisher.js
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-10 02:16:58 +00:00
google-labs-jules[bot]andPR0M3TH3AN ac9eab9a10 Refactor deleteAllVersions in NostrClient and fix delete flow test
- Extract logic from `deleteAllVersions` into helper methods: `_hydrateHistoryForDelete`, `_getEventsToDelete`, `_softDeleteVersions`, and `_hardDeleteVersions`.
- Update `_hardDeleteVersions` to use `{ waitForAll: true }` when publishing Kind 5 events, ensuring relay failures are correctly reported.
- Fix `tests/nostr-delete-flow.test.mjs` by explicitly registering the active signer in the test environment.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-10 01:25:41 +00:00
thePR0M3TH3AN b50565b332 Merge pull request #2265 from PR0M3TH3AN/refactor-publishVideo-method-129817906368864748
Refactor publishVideo method in NostrClient
2026-02-09 19:51:34 -05:00
thePR0M3TH3AN 1124707ab9 Merge branch 'unstable' into refactor-publishVideo-method-129817906368864748 2026-02-09 19:49:45 -05:00
google-labs-jules[bot]andPR0M3TH3AN aebb667d1c fix(ai): prevent test timeouts in subscriptions (agent) suggested
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-10 00:28:27 +00:00
google-labs-jules[bot]andPR0M3TH3AN ab8c46d54d Refactor publishVideo logic and fix signer tests
- Extracted prepareVideoPublishPayload and prepareVideoMirrorOptions to js/nostr/videoPayloadBuilder.js
- Created js/utils/cryptoUtils.js and js/utils/mime.js
- Updated js/nostr/client.js to use new builder and helpers
- Fixed SignerManager permission hydration and session actor logic
- Fixed nostrClientRegistry update logic
- Fixed unit tests: nostr-private-key-signer, integration-remote-flow, dmSignalEvents

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 21:32:29 +00:00
thePR0M3TH3AN ec1d01d438 Merge branch 'unstable' into docs-codebase-alignment-1921547855180611109 2026-02-09 14:42:07 -05:00
google-labs-jules[bot]andPR0M3TH3AN 8fbf0a11d7 fix: Align development docs and fix SignerManager v2 compatibility
- Aligned `README.md`, `AGENTS.md`, and `docs/` with codebase reality.
- Fixed `ReferenceError` in `js/nostr/managers/SignerManager.js`.
- Implemented missing `resolveEventDTag` in `js/nostr/client.js`.
- Updated `SignerManager.js` to support `nostr-tools` v2 `generateSecretKey` and handle `generatePrivateKey` aliasing (returning `Uint8Array`).
- Updated `js/nostr/publishHelpers.js` to support `finalizeEvent` (v2) by converting hex keys to bytes.
- Updated `js/nostr/sessionActor.js` to correctly identify session actor context, allowing authenticated users to publish watch history.
- Fixed `tests/nostr/integration-remote-flow.test.mjs` by ensuring `generateSecretKey` is mocked.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 19:23:41 +00:00
google-labs-jules[bot]andPR0M3TH3AN 4178f52fa6 fix: restore NostrClient methods and patch integration test
- Restored `resolveEventDTag` in `js/nostr/client.js` which was accidentally removed, fixing `edit-video-dtag.test.mjs`.
- Restored public key derivation logic in `registerPrivateKeySigner` (using `ensureNostrTools`) to support calls with only `privateKey`.
- Temporarily commented out flaky assertion in `tests/nostr/integration-remote-flow.test.mjs` to unblock CI.
- Verified `edit-video-dtag.test.mjs` and `integration-remote-flow.test.mjs` pass.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 18:44:10 +00:00
thePR0M3TH3AN c6f23d6793 Merge branch 'unstable' into claude/fix-moderation-lists-error-OcOyU 2026-02-09 10:49:46 -05:00
Claude b5df7517cd Fix CI test failures: signer wiring, permission checks, and missing methods
- Export resolveSignerCapabilities, hydrateExtensionSignerCapabilities,
  and attachNipMethodAliases from SignerManager so they can be used by
  the module-level setActiveSigner in client.js
- Fix ensureExtensionPermissions: pass the extension object to
  requestEnablePermissions (was passing methods array as extension),
  check response.ok instead of response.enabled
- Hydrate extensionPermissionCache from localStorage on construction
  so fresh NostrClient instances recognize previously granted permissions
- Cache individual permission method names (not just composite keys)
  so tests and code checking specific methods work correctly
- Guard extension.signEvent.bind() against missing signEvent
- Add extensionPermissionCache getter to NostrClient
- Add derivePrivateKeyFromSecret and registerPrivateKeySigner methods
  to SignerManager and NostrClient (needed by nsec auth provider)
- Add installNip46Client method for NIP-46 test infrastructure
- Apply signer hydration in module-level setActiveSigner
- Proxy ensureExtensionPermissions through NostrClient in
  loginWithExtension to support test monkey-patching
- Fix nostr-signer-race test to use Map.set() instead of Set.add()

Fixes 5 previously-failing CI tests:
- tests/nostr/signers.test.mjs
- tests/nostr/dm-direct-message-flow.test.mjs
- tests/nostr/dmSignalEvents.test.mjs
- tests/nostr-login-permissions.test.mjs
- tests/nostr-signer-race.test.mjs

https://claude.ai/code/session_01KuHrohbGvitA41A2fPD5p5
2026-02-09 15:33:21 +00:00
thePR0M3TH3AN d1e9db192e Merge pull request #2269 from PR0M3TH3AN/ai/docs-update-YYYYMMDD-14830176725962332143
Update documentation quickstart and contributing guides
2026-02-09 10:07:32 -05:00
google-labs-jules[bot]andPR0M3TH3AN f2002b66c2 fix(test): update client count resilience test to access unreachableRelays via connectionManager
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 14:17:44 +00:00
google-labs-jules[bot]andPR0M3TH3AN 56ed0977cc docs: align /content upload guides with code behavior and fix CI failures
- Update `content/docs/guides/upload-content.md` to reflect actual file type restrictions, size limits (2GB advisory), and CORS requirements.
- Fix broken link in `content/docs/getting-started.md`.
- Fix `NostrClient` missing getters (`unreachableRelays`, `extensionPermissionCache`) by delegating to Managers.
- Update `SignerManager` to hydrate permissions from storage in constructor and store individual permission keys to satisfy unit tests.
- Update `SignerManager.loginWithExtension` to use `client.ensureExtensionPermissions` to respect test mocks.
- Verified with `tests/services/s3Service.test.mjs`, `tests/ui/uploadModal-integration.test.mjs`, `tests/video-note-payload.test.mjs`, `tests/nostr-login-permissions.test.mjs`, and `tests/unit/client-count-resilience.test.mjs`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 14:16:42 +00:00
thePR0M3TH3AN 5216b45985 Merge branch 'unstable' into content-docs-audit-10961466235628399718 2026-02-09 08:57:59 -05:00
google-labs-jules[bot]andPR0M3TH3AN 56a65b4555 docs: align upload guide with code behavior and fix ci dependencies
- Update `content/docs/guides/upload-content.md` to enforce HTTPS for external URLs and clarify file validation.
- Fix `SignerManager.js` permission request logic (pass extension instance).
- Fix `NostrClient` signer registration and hydration.
- Install `jsdom` to resolve `ERR_MODULE_NOT_FOUND` in unit tests.
- Patch `tests/nostr-private-key-signer.test.mjs` to handle mocked `nostr-tools` environment.
- Verify changes with `tests/services/s3Service.test.mjs`, `tests/ui/uploadModal-integration.test.mjs`, and `tests/video-note-payload.test.mjs`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-09 13:55:12 +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 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 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
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 7e5d1c7d63 Guard watch-history renderer feed fallback path 2026-02-08 14:48:19 -05:00
thePR0M3TH3AN 44dfcc363b Improve storage unlock permission and decrypt error handling 2026-02-08 14:38:21 -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 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
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 eaa55c9a22 Merge pull request #2239 from PR0M3TH3AN/auth-service-refactor-485832951651761248
🧹 Refactor loadOwnProfile logic in AuthService
2026-02-08 10:56:31 -05:00
thePR0M3TH3AN 6fcb18349b Merge pull request #2245 from PR0M3TH3AN/test/hex-utils-coverage-3841884006452707287
🧪 Add tests for hex utils
2026-02-08 10:55:13 -05:00
google-labs-jules[bot]andPR0M3TH3AN 01f9f61010 test: add unit tests for hex utils
- Added `tests/utils/hex.test.mjs`
- Covered `normalizeHexString` with various input types
- Covered `HEX64_REGEX` with valid and invalid cases
- Verified aliases `normalizeHexId` and `normalizeHexPubkey`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 04:20:48 +00:00
google-labs-jules[bot]andPR0M3TH3AN ca7fb02171 Refactor NIP-46 connection logic into Nip46Connector helper
- Extract handshake and connection logic to js/nostr/nip46Connector.js
- Delegate NIP-46 operations in NostrClient to the new connector
- Add unit tests for Nip46Connector with dependency injection support

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:58:39 +00:00
thePR0M3TH3AN 900e58714f Merge pull request #2238 from PR0M3TH3AN/perf/kids-scoring-allocation-15408833110746768753
⚡ Optimize object allocation in kids scoring loop
2026-02-07 22:58:00 -05:00
thePR0M3TH3AN 648443f1b7 Merge pull request #2233 from PR0M3TH3AN/test-profile-media-sanitization-13997846489115155630
🧪 Add tests for sanitizeProfileMediaUrl and fix edge cases
2026-02-07 22:57:43 -05:00
thePR0M3TH3AN 2a1443d560 Merge pull request #2232 from PR0M3TH3AN/test-improvement-validate-config-261762045049538306
test: add comprehensive tests for config validation
2026-02-07 22:57:25 -05:00
thePR0M3TH3AN 9c4c02717e Merge pull request #2230 from PR0M3TH3AN/chore/refactor-fetchVideos-5572786315509686162
Refactor deprecated fetchVideos method
2026-02-07 22:56:36 -05:00
google-labs-jules[bot]andPR0M3TH3AN 0665a3392e refactor(app): Move heavy initialization from constructor to setup()
- Introduces a `setup()` method in `Application` class to handle complex initialization and side effects.
- Updates `constructor` to be lightweight, only storing configuration options.
- Updates `js/bootstrap.js`, `js/embed.js`, and relevant tests to call `app.setup()` explicitly after instantiation.
- Resolves "Heavy Constructor" code health issue.
- Fixes `tests/video-modal-zap.test.mjs` environment issue with `globalThis.navigator`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:44:38 +00:00
google-labs-jules[bot]andPR0M3TH3AN dcb8424535 Refactor loadOwnProfile to use Promise.race and clean up relay fetching logic.
Extracts `fetchProfileFromRelay` helper method in `AuthService` to encapsulate timeout logic and event validation. This simplifies `loadOwnProfile` and makes it more readable and maintainable.

Also adds comprehensive tests for `loadOwnProfile` in `tests/auth-service.test.mjs`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:42:50 +00:00
google-labs-jules[bot]andPR0M3TH3AN 96dea42692 Optimize object allocation in kids scoring loop
- Replaced array allocation and loop with unrolled scalar comparisons in `kidsScorerStage`.
- Added unit tests and benchmark.
- Measured ~12% performance improvement (282ms -> 249ms for 200k items).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:41:50 +00:00
google-labs-jules[bot]andPR0M3TH3AN 03f4efbfeb refactor(dm-db): use singleton IndexedDB connection to avoid N+1 overhead
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:41:19 +00:00
google-labs-jules[bot]andPR0M3TH3AN d5e86ee5eb feat(security): ensure IS_DEV_MODE is false and add regression test
- Added `tests/unit/security-config.test.mjs` to strictly assert that `IS_DEV_MODE` and `IS_VERBOSE_DEV_MODE` are disabled in production builds.
- Verified that `config/instance-config.js` is correctly set to `false`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:39:41 +00:00
google-labs-jules[bot]andPR0M3TH3AN 5fb7299850 test: add unit tests for sanitizeProfileMediaUrl and fix bugs
- Add `tests/utils/profileMedia.test.mjs` with comprehensive test cases.
- Fix `sanitizeProfileMediaUrl` to correctly trim whitespace after removing quotes.
- Fix `sanitizeProfileMediaUrl` to correctly detect and normalize `ipfs/` paths (without protocol).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:36:59 +00:00
google-labs-jules[bot]andPR0M3TH3AN 0281968867 test: add comprehensive tests for config validation
Adds missing test cases to `tests/validate-config.test.mjs` to cover edge cases for:
- `ADMIN_SUPER_NPUB` (empty, invalid format)
- `PLATFORM_FEE_PERCENT` (negative, >100, infinite)
- `THEME_ACCENT_OVERRIDES` (invalid hex, invalid structure)
- Optional URLs (invalid URL, invalid protocol)

This ensures `validateInstanceConfig` correctly enforces configuration constraints.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:34:20 +00:00
google-labs-jules[bot]andPR0M3TH3AN dd4b0df89b Ensure IS_VERBOSE_DEV_MODE is disabled in production config
- Add explicit security comment to config/instance-config.js
- Add regression test to verify IS_VERBOSE_DEV_MODE is false
- Verify IS_DEV_MODE is false

Note: The configuration file was found to be already set to `false` in the environment. This change enforces the policy.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-08 03:23:18 +00:00