Commit Graph
6648 Commits
Author SHA1 Message Date
thePR0M3TH3AN 6692fe1a30 Merge pull request #2732 from PR0M3TH3AN/fix/dm-decryptor-race-order-8056308351647388512
⚡ Use ordered race for parallel DM decryption to respect preference
2026-02-26 13:00:18 -05:00
google-labs-jules[bot]andPR0M3TH3AN feb7ad765a Refactor VideoModal to delegate comments to CommentsController
Move comment-related logic and state from VideoModal.js to CommentsController.js.
Split CommentsController into CommentsController (orchestration), CommentsListRenderer (DOM management), and CommentNodeFactory (element creation) to maintain modularity and adhere to file size limits.
Update VideoModal to initialize and destroy CommentsController correctly.
Fix minor lint issues.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:53:34 +00:00
google-labs-jules[bot]andPR0M3TH3AN 2703382ab4 Refactor RevertModal rendering logic into separate module
Extracted excessive DOM rendering logic from `RevertModal.js` into `revertModalRenderers.js`.
This improves code readability and maintainability by separating the view construction from the modal logic.
Added unit tests for the new renderers using a lightweight DOM mock.
Replaced local d-tag extraction with shared utility `getDTagValueFromTags`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:50:10 +00:00
google-labs-jules[bot]andPR0M3TH3AN 6e42d2c97c perf: Optimize nostrService video subscription updates
Optimizes the `subscribeVideos` callback in `js/services/nostrService.js` to handle video updates incrementally, avoiding O(N*M) complexity during high-volume updates (e.g., initial load).

Changes:
- Modified `js/nostr/videoEventBuffer.js` to include deleted videos in the flushed batch, allowing consumers to handle deletions incrementally.
- Updated `js/services/nostrService.js` to process `updatedVideos` incrementally:
  - Separates updates into active and deleted.
  - Updates `this.videosMap` directly (removing deleted, adding/updating active).
  - Filters and caches only the active updates (O(M)).
  - Emits `videos:updated` with the full sorted list (derived from the updated map) to maintain API contract with consumers.
  - Persists the full sorted list to localStorage.

This reduces the per-batch overhead significantly by avoiding O(N) filtering and map reconstruction for every batch of updates.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:48:37 +00:00
google-labs-jules[bot]andPR0M3TH3AN 56ffdb693d Refactor decryptLegacyDm to use ordered parallel race for decryptors.
Replaces Promise.any with raceOrdered utility to respect decryptor preference order while maintaining parallel execution.
Adds regression test for order preference.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:45:31 +00:00
google-labs-jules[bot]andPR0M3TH3AN fd5e6fef6b test: add missing tests for LinkPreviewSettings utility
- Refactor `tests/utils/linkPreviewSettings.test.mjs` to be self-contained and remove dependency on `jsdom` (via `test-setup.mjs`).
- Add comprehensive test cases for `getLinkPreviewSettings`, `setLinkPreviewAutoFetch`, `allowLinkPreviewDomain`, `isLinkPreviewDomainAllowed`, and `subscribeToLinkPreviewSettings`.
- Add robustness checks for missing `localStorage` (simulated) and invalid inputs.
- Polyfill `EventTarget` and `CustomEvent` (as fallback) to ensure tests run reliably in environments where `jsdom` is unavailable.

This addresses the gap in testing coverage for `js/utils/linkPreviewSettings.js` while ensuring test stability.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:44:51 +00:00
google-labs-jules[bot]andPR0M3TH3AN e2835603c5 Refactor js/utils/qrcode.js to replace innerHTML with DOM manipulation
- Replaced `innerHTML` usage in `Drawing.prototype.draw` (table fallback) with `document.createElement`, `appendChild`, etc.
- Replaced `innerHTML` usage in `Drawing.prototype.clear` with `removeChild` loop.
- Added `tests/qrcode_table_fallback.test.mjs` to verify the table generation logic in a simulated environment (JSDOM) without Canvas support.
- Updated `package.json` to include `jsdom` in `devDependencies` (if it wasn't already there and committed, though I verified it is present after install).

This change eliminates the potential for HTML injection vulnerabilities in the QR code generation library.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:42:43 +00:00
google-labs-jules[bot]andPR0M3TH3AN 0fcfc6009f Refactor qrcode.js to use DOM methods instead of innerHTML
- Replaces unsafe innerHTML usage with document.createElement and appendChild in the table drawing fallback.
- Adds a unit test `tests/qrcode_table_fallback.test.mjs` to verify the table generation logic using JSDOM.
- Addresses a potential security vulnerability where HTML injection could occur (though unlikely in this specific context, it is best practice).
- Updates package.json to include jsdom in devDependencies (if not already present).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:42:28 +00:00
google-labs-jules[bot]andPR0M3TH3AN 7ec726aad1 Add tests for staticModalAccessibility.js
- Create `tests/static-modal-accessibility.test.mjs` to test `prepareStaticModal`, `openStaticModal`, and `closeStaticModal`.
- Tests cover element resolution, DOM state updates (classes, attributes), and edge cases (missing elements, null targets).
- Use `jsdom` to mock the browser environment.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:42:07 +00:00
google-labs-jules[bot]andPR0M3TH3AN e95355fdb0 Add unit tests for video menu renderers
- Created `tests/video-menu-renderers.test.mjs` to test `js/ui/components/videoMenuRenderers.js`.
- Implemented comprehensive test coverage for `createVideoMoreMenuPanel`, `createVideoShareMenuPanel`, `createChannelProfileMenuPanel`, and `createVideoSettingsMenuPanel`.
- Tests use `jsdom` to simulate DOM element creation and verify structure, classes, and dataset attributes.
- Ensured dependencies (`jsdom`) are installed.
- Verified tests pass with `npm run test:unit`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:41:34 +00:00
google-labs-jules[bot]andPR0M3TH3AN 822ba4d478 Refactor DeleteModal to use shared getDTagValueFromTags
Replaced the local `extractDTagValue` function in `js/ui/components/DeleteModal.js` with the shared `getDTagValueFromTags` utility from `js/nostr/nip71.js` to reduce code duplication and improve maintainability.

Added `tests/ui/components/DeleteModal.test.mjs` with manual DOM mocks to verify the refactor and ensure no regressions.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:39:38 +00:00
google-labs-jules[bot]andPR0M3TH3AN 4bdcfbdb2e Refactor: Replace duplicated extractDTagValue in DeleteModal
Replaced the local `extractDTagValue` function in `js/ui/components/DeleteModal.js` with the shared `getDTagValueFromTags` utility from `js/nostr/nip71.js` (exported via `js/nostr/index.js`).

Added a new unit test `tests/ui/components/DeleteModal.test.mjs` to verify the d-tag extraction logic and ensure the refactor is correct and safe. This test uses `jsdom` to mock the necessary DOM environment.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:39:07 +00:00
google-labs-jules[bot]andPR0M3TH3AN c4fc0cdb16 test: Add unit tests for linkPreviewSettings.js
- Added comprehensive tests for default settings, storage parsing, and error handling.
- Covered `setLinkPreviewAutoFetch` and `allowLinkPreviewDomain` (including normalization and silent mode).
- Verified `isLinkPreviewDomainAllowed` and event subscriptions.
- Mocked `window.dispatchEvent`, `addEventListener`, and `CustomEvent` locally as they are missing from test helpers.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:38:30 +00:00
google-labs-jules[bot]andPR0M3TH3AN 931f57eebe Refactor RevertModal to use shared d-tag extraction utility
- Removed duplicated `extractDTagValue` method from `js/ui/components/RevertModal.js`
- Imported and used `getDTagValueFromTags` from `js/nostr/nip71.js`
- Added unit tests for `getDTagValueFromTags` in `tests/nostr/nip71-d-tag.test.mjs`

This reduces code duplication and ensures consistent d-tag extraction logic.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:37:26 +00:00
google-labs-jules[bot]andPR0M3TH3AN 30fbb8d81a Refactor RevertModal to use shared nip71.getDTagValueFromTags
Replaced the duplicated `extractDTagValue` method in `RevertModal.js` with the standard `getDTagValueFromTags` utility from `js/nostr/nip71.js`.

Verified by adding a new unit test suite `tests/nostr/nip71-d-tag.test.mjs` ensuring the utility covers all edge cases.

This improves code health by reducing duplication and centralizing NIP-71 logic.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:36:43 +00:00
google-labs-jules[bot]andPR0M3TH3AN b1b797a12b Add unit tests for commentAvatar.js utility functions
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:36:00 +00:00
google-labs-jules[bot]andPR0M3TH3AN 37d55944ba perf: parallelize watch history publishing
Replaced `pMap` with `Promise.all` in `publishRecords` to remove concurrency limit for faster syncing of multiple month records.

Measured ~50% improvement in mock benchmark (200ms -> 100ms for 10 items with concurrency 5 vs unbounded).

Note: The task description described the existing code as a sequential `for` loop, but the actual file used `pMap` with concurrency 5. This change optimizes it further by removing the concurrency limit as requested.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:35:40 +00:00
google-labs-jules[bot]andPR0M3TH3AN 12dc1ac57c Add unit tests for comment avatar utilities
Added `tests/comment-avatar.test.mjs` to cover `normalizeCommentAvatarKey`, `resolveCommentAvatarAsset`, and `registerCommentAvatarFailure`.
Tests cover:
- Input validation and edge cases.
- Caching logic and fallback behaviors.
- Failure registration and cache invalidation.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:34:14 +00:00
google-labs-jules[bot]andPR0M3TH3AN 2eec105545 Add tests for commentAvatar.js utility functions
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:33:09 +00:00
google-labs-jules[bot]andPR0M3TH3AN d5296f82d7 Fix: Add rel="noopener noreferrer" to embed watch button
This commit mitigates a reverse tabnabbing vulnerability by ensuring
that the external link in the embed player opens with proper
security attributes.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:33:00 +00:00
google-labs-jules[bot]andPR0M3TH3AN d18b3c4838 Refactor extractDTagValue in js/app.js to use getDTagValueFromTags
This commit replaces the duplicated d-tag extraction logic in `extractDTagValue` method of `js/app.js` with the standard utility function `getDTagValueFromTags` from `js/nostr/nip71.js`. This improves code reuse and maintainability.

The fallback logic for `extractDTagValue` now delegates to `getDTagValueFromTags` if `similarContentController` is not present, ensuring consistent behavior.

Verified with unit tests and linting.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:31:04 +00:00
google-labs-jules[bot]andPR0M3TH3AN d0f0b3ee2e Fix: Add rel="noopener noreferrer" to target="_blank" link in channel profile
This commit addresses a security vulnerability in `views/channel-profile.html` where an external link with `target="_blank"` was missing `rel="noopener noreferrer"`. This could allow the target page to manipulate the `window.opener` object (reverse tabnabbing).

Changes:
- Added `rel="noopener noreferrer"` to the `#channelWebsite` anchor tag.

Verification:
- Confirmed the attribute is present using a Playwright verification script.
- Confirmed no visual regressions.
- Ran linting checks (passed).
- Ran unit tests (pre-existing unrelated failures in NIP compliance noted).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:30:59 +00:00
thePR0M3TH3AN 9913e484ab chore: add torch update backup snapshots 2026-02-26 08:43:59 -05:00
thePR0M3TH3AN 865dbe841c torch: skip self-copy during update in self-host installs 2026-02-26 08:43:29 -05:00
thePR0M3TH3AN dcff2e7646 chore(torch): track update backup snapshot 2026-02-25 21:12:41 -05:00
thePR0M3TH3AN 25b590647b chore(torch): update package and sanitize colon timestamps 2026-02-25 21:12:08 -05:00
thePR0M3TH3AN 5e01d04e1d update 2026-02-25 15:21:24 -05:00
thePR0M3TH3AN 3ca420a9df Merge pull request #2712 from PR0M3TH3AN/agents/daily/protocol-research-agent-2026-02-25-5019456252140959148
Daily Agent: Protocol Research & Inventory
2026-02-25 13:36:24 -05:00
google-labs-jules[bot]andPR0M3TH3AN c75ed4d431 feat(protocol): Create initial protocol inventory and report
- Create `PROTOCOL_INVENTORY.md` to track non-NIP dependencies (BitTorrent, HLS, LNURL, HTTP Auth).
- Generate `reports/protocol/protocol-report-2026-02-25.md` with findings and recommendations.
- Fix linting false positives by excluding `torch/` and `dev/` directories from design system checks.
- Add `protocol-research-agent` task log.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-25 18:25:04 +00:00
thePR0M3TH3AN 51f37ece22 docs: add TORCH memory integration guidance 2026-02-25 13:12:07 -05:00
thePR0M3TH3AN 0f89cc1524 chore(torch): migrate to new TORCH system and remove legacy agent stack 2026-02-25 12:58:46 -05:00
thePR0M3TH3AN 8fd371b36c Merge pull request #2711 from PR0M3TH3AN/agents/daily/audit-agent-run-1785131454333457700
audit-agent: Daily audit run
2026-02-25 12:38:37 -05:00
google-labs-jules[bot]andPR0M3TH3AN be5ad33918 audit-agent: Daily audit run
- Ran audit scripts: check-file-size, check-innerhtml, lint
- Generated artifacts/audit/2026-02-25/
- Created docs/agents/task-logs/daily/2026-02-25_..._audit-agent_completed.md

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-25 17:07:41 +00:00
thePR0M3TH3AN c0edc196ef Merge pull request #2710 from PR0M3TH3AN/agents/daily/ci-health-agent-2026-02-25-7092880812493571695
fix(test): add wait for logout state in login-flows e2e
2026-02-25 11:33:00 -05:00
google-labs-jules[bot]andPR0M3TH3AN b8cf1315e1 fix(test): add wait for logout state in login-flows e2e
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-25 16:11:48 +00:00
thePR0M3TH3AN 8102fb97ee Merge pull request #2695 from PR0M3TH3AN/agents/weekly/smoke-agent-harness-11898996381844705269
test(smoke): add smoke-test.mjs harness
2026-02-25 10:36:23 -05:00
thePR0M3TH3AN 9e33fe74ba Merge branch 'unstable' into agents/weekly/smoke-agent-harness-11898996381844705269 2026-02-25 10:36:07 -05:00
thePR0M3TH3AN 7ec86487f5 Merge pull request #2693 from PR0M3TH3AN/agents/daily/scheduler-update-agent-2026-02-23-1075521348879577769
docs(agents): scheduler-update-agent sync (no changes)
2026-02-25 10:35:31 -05:00
thePR0M3TH3AN 4ab759c0bd Merge branch 'unstable' into agents/daily/scheduler-update-agent-2026-02-23-1075521348879577769 2026-02-25 10:35:24 -05:00
thePR0M3TH3AN 2901c0e5c4 Merge pull request #2690 from PR0M3TH3AN/agents/daily/test-audit-agent-2026-02-23-4813203485121112615
Daily Test Audit Agent Execution
2026-02-25 10:34:58 -05:00
thePR0M3TH3AN 887c802436 Merge branch 'unstable' into agents/daily/test-audit-agent-2026-02-23-4813203485121112615 2026-02-25 10:34:50 -05:00
thePR0M3TH3AN cd1e14ca67 Merge pull request #2685 from PR0M3TH3AN/agents/daily/style-agent-2019821918795786941
chore(daily): execute style-agent
2026-02-25 10:34:25 -05:00
thePR0M3TH3AN faf71804f3 Merge pull request #2684 from PR0M3TH3AN/agents/daily/scheduler-update-agent-2026-02-23_15-01-13-11531375802940964250
docs(agents): sync scheduler rosters — 2026-02-23
2026-02-25 10:34:09 -05:00
thePR0M3TH3AN a169a05a29 Merge pull request #2680 from PR0M3TH3AN/agents/daily/scheduler-update-2026-02-23-6263634357757049561
docs(agents): sync scheduler rosters
2026-02-25 10:30:49 -05:00
thePR0M3TH3AN 149ace149a Merge pull request #2678 from PR0M3TH3AN/agents/daily/scheduler-update-agent-2026-02-22-9351640604648205171
docs(agents): sync scheduler rosters — 2026-02-22
2026-02-25 10:30:24 -05:00
thePR0M3TH3AN 824e9edd65 Merge branch 'unstable' into agents/daily/scheduler-update-agent-2026-02-22-9351640604648205171 2026-02-25 10:30:15 -05:00
thePR0M3TH3AN b26355dd95 Merge pull request #2709 from PR0M3TH3AN/agents/daily/audit-agent-2026-02-25-17655067361694083380
Daily Agent: audit-agent (2026-02-25)
2026-02-25 10:29:51 -05:00
thePR0M3TH3AN 80bd498624 Merge pull request #2708 from PR0M3TH3AN/agents/weekly/weekly-synthesis-agent-20260225-15317277716215461345
Weekly Agent: weekly-synthesis-agent execution
2026-02-25 10:29:23 -05:00
google-labs-jules[bot]andPR0M3TH3AN 4e78b3878d Daily Agent: audit-agent
Completed audit run for 2026-02-25.

- Ran file size check (43 grandfathered files, 0 new violations).
- Ran innerHTML check (37 assignments).
- Ran lint (0 failures).
- Generated summary report.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-25 14:56:48 +00:00
google-labs-jules[bot]andPR0M3TH3AN be836f9f94 Weekly Agent: weekly-synthesis-agent execution
Executed the weekly-synthesis-agent as per the scheduler flow.
Generated `ai/reports/weekly-20260225.md` summarizing the week's activity.
Created scheduler log `docs/agents/task-logs/weekly/2026-02-25_13-34-49_weekly-synthesis-agent_completed.md`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-25 13:37:50 +00:00