Commit Graph
5373 Commits
Author SHA1 Message Date
google-labs-jules[bot]andPR0M3TH3AN f2d122839b chore(ai): lint check (no changes)
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 13:22:30 +00:00
thePR0M3TH3AN 5add5a7304 Merge pull request #2353 from PR0M3TH3AN/fix-node-version-enforcement-15391969983766320156
Enforce Node >=22 in package.json to match requirements
2026-02-11 08:09:45 -05:00
google-labs-jules[bot]andPR0M3TH3AN 64d862ffb3 fix(build): enforce Node >=22 in package.json
Updates the `engines.node` field in `package.json` from `>=20` to `>=22` to align with the project's documentation (`README.md`) and requirements. This change ensures that build environments (e.g., 4everland) fail early if an incompatible Node.js version is used, prompting necessary environment upgrades and preventing silent build failures or missing version injection.

References:
- README.md: "The project requires Node.js v22 or higher."
- Issue: Missing version footer on deployed site due to Node 20 environment.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 13:07:40 +00:00
thePR0M3TH3AN 6210b1045d Merge pull request #2352 from PR0M3TH3AN/fix-deployment-version-injection-5739441893263452551
Fix missing version info in deployment by enabling Node 20 build and hardening injection logic
2026-02-11 07:49:17 -05:00
google-labs-jules[bot]andPR0M3TH3AN bc2f082fca Fix: Enable build on Node 20 and harden version injection
- Relaxed `engines.node` in `package.json` from `>=22` to `>=20` to match the hosting environment (Node 20.x), resolving strict engine failures during install.
- Modified `scripts/build-dist.mjs` to throw an error (instead of warning) if version injection fails, preventing silent failures.
- Updated `npm run build` to include `verify:dist:deploy-artifact` as a mandatory post-build step, ensuring the final artifact contains the expected version markup.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 12:45:56 +00:00
thePR0M3TH3AN 9fc845cd1a Merge pull request #2351 from PR0M3TH3AN/perf-resolve-timestamp-parallel-12548316095717606632
⚡ Parallelize timestamp resolution in feed engine
2026-02-11 07:45:10 -05:00
google-labs-jules[bot]andPR0M3TH3AN e62cb15c0e perf: parallelize timestamp resolution in feed engine
Replaces sequential await loop with Promise.any to resolve video timestamps in parallel.
This significantly reduces latency when multiple resolvers are present, especially if the first one is slow.

- Uses Promise.any to take the first valid finite timestamp.
- Wraps resolvers to reject on invalid values.
- Preserves error logging for genuine resolver errors.
- Benchmarks showed improvement from ~100ms to ~11ms in simulated slow scenarios.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 12:38:20 +00:00
thePR0M3TH3AN 0bd179068d Merge pull request #2350 from PR0M3TH3AN/test-link-preview-settings-9780741811939813635
🧪 Test: Add unit tests for linkPreviewSettings.js
2026-02-11 07:30:38 -05:00
google-labs-jules[bot]andPR0M3TH3AN 1bcf88e584 test: add unit tests for linkPreviewSettings utility
- Creates `tests/utils/linkPreviewSettings.test.mjs` to cover `js/utils/linkPreviewSettings.js`.
- Implements comprehensive tests for default state, storage persistence, domain management, event emission, and subscription.
- Polyfills JSDOM Event constructors in the test file to support `CustomEvent` emission.
- Ensures tests are isolated using `beforeEach`/`afterEach` to clear `localStorage`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 12:28:42 +00:00
thePR0M3TH3AN c12705c612 Merge pull request #2349 from PR0M3TH3AN/ai/reproducers-multiple-20260211-9563226113495163824
Add Minimal Reproducers for Known Flaky Tests
2026-02-11 07:14:39 -05:00
google-labs-jules[bot]andPR0M3TH3AN 738c839302 add minimal reproducers for hashtag preferences and moderation flakiness issues
- Adds `examples/reproducers/issue-hashtag-prefs/reproduce_issue.mjs` to reproduce flaky hashtag preferences unit test.
- Adds `examples/reproducers/issue-moderation-flake/reproduce_flake.spec.ts` to reproduce flaky moderation visual test in headless mode.
- Includes README instructions for running each reproducer.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 12:12:30 +00:00
thePR0M3TH3AN a61b6c4e19 Merge pull request #2348 from PR0M3TH3AN/batch-resolve-posted-at-14136623411216121457
⚡ Batch video timestamp resolution to eliminate N+1 network requests
2026-02-11 07:04:17 -05:00
google-labs-jules[bot]andPR0M3TH3AN b28e62963f perf: Batch video timestamp resolution to reduce N+1 network requests
- Implemented `hydrateVideoHistoryBatch` in `NostrClient` to fetch missing root events and sparse histories in a single `pool.list` request.
- Refactored `hydrateVideoHistory` to use shared helper methods `getLocalVideoHistory` and `_processAndCacheEvent`.
- Added `resolveVideoPostedAtBatch` to `PlaybackCoordinator` which delegates to the batched client method.
- Updated `VideoListView` to collect videos needing timestamp resolution and call the batch method, falling back to individual calls if necessary.
- Added regression test `tests/performance/resolvePostedAt.test.mjs` to verify reduced network calls.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 12:01:39 +00:00
thePR0M3TH3AN 7164475c5e Merge pull request #2344 from PR0M3TH3AN/ai/tests-core-modules-20250212-2377726082644067938
Add unit tests for core modules
2026-02-11 06:25:58 -05:00
google-labs-jules[bot]andPR0M3TH3AN ab72036a4f test(ai): add unit tests for authUtils, decryptionSchemeCache, videoPayloadBuilder (agent)
Added focused unit tests for three core modules to improve coverage:
- `js/services/authUtils.js`: Tested `normalizeProviderId` and `normalizeAuthType`.
- `js/nostr/decryptionSchemeCache.js`: Tested caching logic, TTL expiration, and cache clearing.
- `js/nostr/videoPayloadBuilder.js`: Tested payload extraction and event preparation, including NIP-71 metadata handling.

Tests use `node:test` and `node:assert/strict` and are integrated into the existing test suite.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 11:15:09 +00:00
thePR0M3TH3AN 2ca348bdac Merge pull request #2343 from PR0M3TH3AN/refactor-client-send-dm-1580382256443769824
Refactor sendDirectMessage to use strategy pattern for NIP-04/17
2026-02-11 05:49:50 -05:00
google-labs-jules[bot]andPR0M3TH3AN 8027ec9b2b Refactor sendDirectMessage to use strategy pattern for NIP-04/17
Extracted NIP-17 and NIP-04 logic into separate private methods `_sendNip17DirectMessage` and `_sendNip04DirectMessage` to reduce complexity and improve readability of `sendDirectMessage`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 10:46:17 +00:00
thePR0M3TH3AN 5d43bf8fa7 Merge pull request #2342 from PR0M3TH3AN/ai/onboarding-20250211-18093161619302896792
docs(ai): improve onboarding steps
2026-02-11 05:28:54 -05:00
thePR0M3TH3AN 90fad893bf Merge pull request #2341 from PR0M3TH3AN/refactor-events-cache-store-7678386515103062591
🧹 Refactor persistSnapshot in EventsCacheStore
2026-02-11 05:28:34 -05:00
thePR0M3TH3AN 96f1938004 Merge pull request #2337 from PR0M3TH3AN/fix/security-remove-unsafe-logging-997674150393261615
🔒 Remove vulnerable unused logging function
2026-02-11 05:27:52 -05:00
google-labs-jules[bot]andPR0M3TH3AN 13c626b5b6 docs(ai): improve onboarding steps
Audited the onboarding process and confirmed all steps pass.
Added .npmrc with engine-strict=true to enforce Node.js >=22 requirement.
Updated CONTRIBUTING.md and README.md to explicitly mention the Node version requirement and its enforcement.
Added artifacts/ONBOARDING_REPORT.md with the audit report.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 08:34:23 +00:00
google-labs-jules[bot]andPR0M3TH3AN e697d89946 Refactor persistSnapshot to use generic diffAndStore helper
Extracts the duplicate logic for diffing and persisting events and tombstones in `EventsCacheStore` into a private `_diffAndStore` helper method. This improves maintainability and reduces code duplication.

Also adds a new test file `tests/nostr/eventsCacheStore.test.mjs` to verify the functionality of `EventsCacheStore` using `fake-indexeddb`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 04:27:35 +00:00
thePR0M3TH3AN 58412220fc Merge pull request #2340 from PR0M3TH3AN/refactor-edit-video-4906399848004884511
Refactor editVideo method for better maintainability
2026-02-10 23:14:34 -05:00
google-labs-jules[bot]andPR0M3TH3AN 58fc143c66 Refactor editVideo into validation, prep, and publish steps
Split the long `editVideo` method in `js/nostr/client.js` into three
distinct parts:
1. `_validateEditPrerequisites`: Handles input validation and state checks.
2. `prepareVideoEditPayload`: Existing helper for payload construction.
3. `_signAndPublishEdit`: Handles signing and network operations.

This improves maintainability and readability by separating concerns.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 04:13:50 +00:00
thePR0M3TH3AN b1f06695a6 Merge pull request #2339 from PR0M3TH3AN/suppress-nip17-relay-warning-3701543430430345832
Add config to suppress NIP-17 relay warnings
2026-02-10 23:06:50 -05:00
google-labs-jules[bot]andPR0M3TH3AN 5ca378bb96 Add ENABLE_NIP17_RELAY_WARNING config to suppress privacy warnings
Added a new configuration variable `ENABLE_NIP17_RELAY_WARNING` to `config/instance-config.js` (defaulting to `false`) to control the display of NIP-17 relay fallback warnings. Updated `js/ui/profileModalController.js` and `js/app.js` to respect this setting.

This change allows instance operators to disable "Privacy warning: direct messages are using your default relays because no NIP-17 relay list is available" and related notifications.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 04:05:36 +00:00
thePR0M3TH3AN fd8324374e Merge pull request #2338 from PR0M3TH3AN/fix-missing-build-hash-error-handling-1559754443002918677
Make version injection failure fatal in build-dist.mjs
2026-02-10 23:02:04 -05:00
google-labs-jules[bot]andPR0M3TH3AN 349fa11422 fix(scripts): make version injection failure fatal in build-dist.mjs
Previously, `scripts/build-dist.mjs` caught errors during version injection and logged them but allowed the build to complete with a success exit code. This masked issues in CI/CD environments (like 4everland) where version injection failed silently, leading to deployments without version hashes.

This change modifies `injectVersionInfo` to `process.exit(1)` upon failure, ensuring that any issue with version injection halts the build pipeline and surfaces the error in the logs.

Tested locally by simulating injection failure (verified exit code 1) and by running a standard build (verified success and correct injection).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 03:57:45 +00:00
google-labs-jules[bot]andPR0M3TH3AN 99fbe96f5c security: Remove unused vulnerable logging function in NostrClient
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 03:57:24 +00:00
thePR0M3TH3AN ca57f9caaf Merge pull request #2336 from PR0M3TH3AN/decompose-profile-modal-controller-5857031998313460612
Decompose ProfileModalController: Extract Wallet and Storage Controllers
2026-02-10 22:57:11 -05:00
thePR0M3TH3AN 2fd63b39e5 Merge pull request #2335 from PR0M3TH3AN/refactor-numeric-constants-unstable-17302506405327886541
Refactor numeric constants to centralized module
2026-02-10 22:56:45 -05:00
thePR0M3TH3AN 0deba74ee1 Merge pull request #2334 from PR0M3TH3AN/security/migrate-innerhtml-1114713630074846257
[security] Migrate innerHTML in profileModalController.js
2026-02-10 22:55:06 -05:00
thePR0M3TH3AN 09fbc7330b Merge pull request #2333 from PR0M3TH3AN/audit-report-unstable-11659156663651364283
Audit Report for Unstable Branch
2026-02-10 22:54:12 -05:00
thePR0M3TH3AN 20115dee11 Merge pull request #2332 from PR0M3TH3AN/content-docs-audit-3706052772104384925
🌐 Align /content user docs with actual upload & contribution behavior
2026-02-10 22:53:53 -05:00
thePR0M3TH3AN 563c9fcc68 Merge pull request #2331 from PR0M3TH3AN/ai/ci-health-20260211-10843530064953127328
chore(ai): CI health fixes (flaky tests & lockfile)
2026-02-10 22:53:08 -05:00
thePR0M3TH3AN 9ec005868e Merge pull request #2330 from PR0M3TH3AN/ai/todo-triage-20240523-13260651508726397217
Triage TODOs and create issue for flaky test
2026-02-10 22:52:38 -05:00
google-labs-jules[bot]andPR0M3TH3AN 48d33f45eb [decompose] Extract Wallet and Storage controllers from ProfileModalController
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 03:30:40 +00:00
google-labs-jules[bot]andPR0M3TH3AN c47392aba6 Refactor numeric constants to centralized module
- Introduce `js/constants.js` with semantic time constants (e.g., `ONE_MINUTE_MS`, `STANDARD_TIMEOUT_MS`) and feature-specific TTLs.
- Export `KIND_MUTE_LIST` from `js/nostrEventSchemas.js` to standardize NIP-51 mute list kind usage.
- Refactor `js/state/cache.js`, `js/nostr/cachePolicies.js`, `js/channelProfile.js`, and various services to use centralized constants instead of hardcoded magic numbers.
- Update `js/nostr/relayConstants.js` to derive values from the shared time constants.
- Replace duplicate definitions of timeouts and retry delays across the codebase.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 03:27:26 +00:00
google-labs-jules[bot]andPR0M3TH3AN 8ca4a71240 [security] Migrate innerHTML in profileModalController.js
Replaced 26 instances of `innerHTML` assignment with safe DOM APIs (`textContent`, `replaceChildren`, `document.createElement`) in `js/ui/profileModalController.js`.
Updated the `scripts/check-innerhtml.mjs` baseline to reflect the reduction (from 27 to 1). The remaining instance loads a static HTML template.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 03:11:39 +00:00
google-labs-jules[bot]andPR0M3TH3AN eabcb1a475 Add audit report for unstable branch
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 03:06:19 +00:00
google-labs-jules[bot]andPR0M3TH3AN 311abee846 docs: align /content user docs with actual upload & contribution behavior
- Update `content/docs/guides/upload-content.md` to reflect current codebase and runtime behavior.
- Clarify automatic CORS configuration logic (via S3 `PutBucketCors`) and fallback manual steps.
- Add "Advanced Options (NIP-71)" section detailing `Content Warning`, `Duration`, `Summary`, `IMETA` (variants), `Web Seed`, `Torrent File`.
- Refine "Troubleshooting" section with exact error messages verified against `js/services/videoNotePayload.js`.
- Reiterate 2GB file size recommendation due to client-side hashing memory limits.
- Ensure accepted file types list matches HTML `accept` attribute in `components/upload-modal.html`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 02:39:28 +00:00
google-labs-jules[bot]andPR0M3TH3AN 69f475ab6b chore(ai): CI health fixes (flaky tests & lockfile)
- Fix `ReferenceError` in `tests/hashtag-preferences.test.mjs` by defining missing `permissionState` variable.
- Skip `tests/visual/overlay-layers.spec.ts` "mobile sidebar shares desktop rail behavior" as it is known to be flaky/timeout (documented in `issues/todo-moderation-tests.md`).
- Update `package-lock.json` via `npm install` to ensure consistency.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 02:12:10 +00:00
google-labs-jules[bot]andPR0M3TH3AN e858f5210f chore(ai): triage TODOs and create issue for flaky test
- Created `issues/todo-hashtag-preferences-unit-test.md` to document a flaky unit test in `tests/hashtag-preferences.test.mjs`.
- Generated `artifacts/todos.txt` with the scan results.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-11 01:13:14 +00:00
thePR0M3TH3AN 83d8023767 Merge pull request #2329 from PR0M3TH3AN/codex/update-ci-pipeline-for-deployment-verification
[ci] Gate release deploys on dist checks and deployed index verification
2026-02-10 17:20:57 -05:00
thePR0M3TH3AN 9992fc3acb [ci] verify deployed index artifact and enforce release checks 2026-02-10 17:20:42 -05:00
thePR0M3TH3AN b44683a38b Merge pull request #2328 from PR0M3TH3AN/codex/update-local-server-instructions
Codex-generated pull request
2026-02-10 17:17:26 -05:00
thePR0M3TH3AN 06118d290e docs: clarify local dist preview URL behavior 2026-02-10 17:17:11 -05:00
thePR0M3TH3AN 6fff162e0a Merge pull request #2327 from PR0M3TH3AN/codex/update-deployment-pipeline-for-dist-folder
[ci] Enforce dist-based deployment & verify deploy artifact
2026-02-10 17:15:47 -05:00
thePR0M3TH3AN 78f28105a9 ci/deploy: enforce dist artifact deployment settings 2026-02-10 17:12:34 -05:00
thePR0M3TH3AN acb3364d46 Merge pull request #2326 from PR0M3TH3AN/codex/document-local-server-setup-in-readme.md
Codex-generated pull request
2026-02-10 17:04:05 -05:00