Commit Graph
3099 Commits
Author SHA1 Message Date
thePR0M3TH3AN d567bdbdcf Use signer adapters in nostr client flows 2026-01-18 09:08:22 -05:00
thePR0M3TH3AN 66f3c9f4b0 Merge pull request #1310 from PR0M3TH3AN/codex/extend-signer-management-in-nostrclientregistry
Add signer registry and active-signer hooks
2026-01-18 09:04:36 -05:00
thePR0M3TH3AN 028d1164f9 Add signer registry helpers 2026-01-18 09:04:12 -05:00
thePR0M3TH3AN 0ead956fc5 Merge pull request #1309 from PR0M3TH3AN/codex/move-createprivatekeycipherclosures-to-signerhelpers
refactor: extract signer cipher helpers
2026-01-18 08:57:59 -05:00
thePR0M3TH3AN cef64aa5d3 refactor: extract signer cipher helpers 2026-01-18 08:56:53 -05:00
thePR0M3TH3AN 46fed1eb10 Merge pull request #1308 from PR0M3TH3AN/codex/create-async-signer-api-module-and-adapters
Add signer interface and Nostr signer adapters
2026-01-18 08:53:11 -05:00
thePR0M3TH3AN a6ae684a98 Add signer interface and nostr adapters 2026-01-18 08:52:25 -05:00
thePR0M3TH3AN f8a1e336e6 Merge pull request #1307 from PR0M3TH3AN/ai/reproducers-1-20260118-13735674150690396798
Add minimal reproducer for SimilarContentCard thumbnail blur bug
2026-01-18 07:57:08 -05:00
thePR0M3TH3AN 96b9cf114a Merge pull request #1306 from PR0M3TH3AN/ai/tests-profileCache-20260118-4171977534236207089
Add unit tests for profileCache and appState
2026-01-18 07:56:04 -05: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
thePR0M3TH3AN 30597191c7 Merge pull request #1304 from PR0M3TH3AN/ai/onboarding-20260118-2854898587831741605
docs(ai): improve onboarding steps
2026-01-18 07:53:37 -05:00
thePR0M3TH3AN bcb4777d59 Merge pull request #1303 from PR0M3TH3AN/ai/interop-tests-20260118-15201644868147508755
Add Nostr protocol interop test script
2026-01-18 07:52:13 -05:00
thePR0M3TH3AN d6ff9765b2 Merge pull request #1302 from PR0M3TH3AN/telemetry-aggregation-tool-15692846024567566751
Telemetry Aggregation Tool
2026-01-18 07:50:43 -05:00
google-labs-jules[bot] eecba37d3e Add reproducer for SimilarContentCard thumbnail bug 2026-01-18 12:19:32 +00:00
google-labs-jules[bot] e11f44f2f2 test(ai): add unit tests for profileCache and appState (agent) 2026-01-18 11:15:34 +00: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] 09545c869c docs(ai): improve onboarding steps and add devcontainer
- Update README.md to recommend `npm ci` and include test steps.
- Update CONTRIBUTING.md with explicit development setup instructions.
- Add `.devcontainer/devcontainer.json` for reproducible Node 20 environment.
- Add audit report in `ai/reports/onboarding-20260118.md`.
2026-01-18 08:23:14 +00:00
google-labs-jules[bot] 82f92d420f feat(ai): add interop-test.mjs for Nostr protocol validation
Implements `scripts/agent/interop-test.mjs` to validate core Nostr operations
(Video Post, View Event, Encrypted DM) against a small set of public relays.
Ensures ephemeral keys are used and no private data is persisted.

Features:
- Ephemeral sender/receiver key generation.
- Polyfills for WebSocket, localStorage, and Crypto for Node.js environment.
- Verification of event signatures, IDs, and content shape.
- DM encryption/decryption roundtrip verification.
- Safe relay list usage (only 2 known relays).
2026-01-18 07:11:08 +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
thePR0M3TH3AN a82c66b760 Merge pull request #1301 from PR0M3TH3AN/fix-hashtag-reset-crash-11374645465269223196
Fix hashtag preferences crash and prevent data reset on load failure
2026-01-17 23:51:18 -05:00
google-labs-jules[bot] cc66fafcdd fix(hashtag-preferences): prevent crash and data loss on load failure
- fix `TypeError: Assignment to constant variable` in `HashtagPreferencesService.load` by changing `const` to `let` for `wasLoadedForUser`.
- Prevent existing cached preferences from being wiped when remote decryption fails.
2026-01-18 04:49:07 +00:00
thePR0M3TH3AN b2d3ae3286 Merge pull request #1300 from PR0M3TH3AN/feat/optimistic-filtered-videos-cache-11029654294546507650
feat: optimistic persistent filtered-videos cache
2026-01-17 23:33:11 -05:00
google-labs-jules[bot] d4779a0825 feat: optimistic persistent filtered-videos cache (localStorage) for faster initial grid render
- Adds `STORAGE_KEY_FILTERED_VIDEOS` and `MAX_PERSISTED_VIDEOS` constants.
- Implements `loadPersistedFilteredVideos` and `persistFilteredVideos` helper methods.
- Updates `loadVideos` to load persistent videos optimistically and emit "persistent-cache" updates.
- Ensures all persistent data is strictly re-filtered (blocked authors, NSFW, access control) before use.
- Skips emitting empty in-memory cache updates if optimistic data is available to prevent UI flashing.
- Persists fresh filtered results in `applyAndNotify` to keep cache up-to-date.
- Adds comprehensive verification script logic (tested via `scripts/verify-optimistic-cache.mjs` before cleanup).
2026-01-18 04:31:43 +00:00
thePR0M3TH3AN e1a12868e0 Merge pull request #1298 from PR0M3TH3AN/ai/refactor-torrent-status-20231027-751310548949696499
Refactor updateTorrentStatus to TorrentStatusController
2026-01-17 22:24:56 -05:00
thePR0M3TH3AN 2088234a3e Merge pull request #1297 from PR0M3TH3AN/ai/ci-health-20250212-3024044749559597461
CI Health: Fix flaky tests in comments and moderation services
2026-01-17 22:23:20 -05:00
thePR0M3TH3AN 7697a3ce2d Merge pull request #1296 from PR0M3TH3AN/fix-hashtag-prefs-profile-cache-16997779974733027289
Fix hashtag preferences loading and profile persistence issues
2026-01-17 22:21:58 -05:00
google-labs-jules[bot] 45b20bb58e refactor(ai): extract updateTorrentStatus from js/app.js (agent)
Moved torrent status update logic to `js/ui/torrentStatusController.js` to improve separation of concerns as per `AGENTS.md`. The controller accepts a `getVideoModal` accessor and an `onRemovePoster` callback to decouple it from direct `videoModal` or `Application` dependencies. Added unit tests in `tests/ui/torrentStatusController.test.mjs`.
2026-01-18 03:11:25 +00:00
google-labs-jules[bot] 7743572a22 chore(ai): CI health fixes (flaky tests) 2026-01-18 02:39:42 +00:00
google-labs-jules[bot] a2de2b550d Fix hashtag preferences loading and profile persistence issues
- Migrated Kind 0 profile metadata storage to unified `profileCache.js` with partitioning and persistence.
- Added `defaultDTag` for hashtag preferences in `cachePolicies.js` to ensure consistent key resolution.
- Updated `hashtagPreferencesService.js` to use `profileCache` and implemented legacy data migration.
- Added `handleEvent` to `NostrClient` to centrally ingest Kind 0 events into the cache.
- Updated `authService.js` and `cache.js` to delegate profile operations to the unified cache system.
- Added `PROFILE_METADATA` schema to `nostrEventSchemas.js`.
2026-01-18 02:09:04 +00:00
thePR0M3TH3AN dedc2aefa5 Merge pull request #1295 from PR0M3TH3AN/jules-7892265785675999514-a989ee17
feat(ui): update zap dialog to show "Done" button on success
2026-01-17 21:00:26 -05: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
thePR0M3TH3AN 983f67fa1b Merge pull request #1294 from PR0M3TH3AN/jules-595217453721279420-8ff8ddbe
fix(moderation): remove verbose trusted mute log
2026-01-17 20:22:10 -05:00
google-labs-jules[bot] e43dbf77cd remove verbose trusted mute log from moderationService
This change removes a verbose log message that was cluttering the console output during trusted mute event ingestion. The removal of this log line does not affect any functionality.
2026-01-18 01:21:12 +00:00
thePR0M3TH3AN f9b445370b Merge pull request #1293 from PR0M3TH3AN/ai/todo-triage-YYYYMMDD-5266633771029061307
Triage TODOs and track tag preference filtering tasks
2026-01-17 20:10:53 -05:00
google-labs-jules[bot] 3f20ea0b5f chore(ai): triage TODOs and create tracking issue
Scanned the repository for TODO/FIXME/XXX comments and identified non-trivial items related to tag preference filtering. Since no trivial fixes were found, I have documented the findings in `artifacts/todos.txt` and created a tracking issue document `artifacts/todo_issues.md` outlining the necessary architectural changes in the feed engine.

This work prepares the ground for moving preference-aware filtering from the view layer to the feed engine pipeline.
2026-01-18 01:04:35 +00:00
thePR0M3TH3AN 31946ad470 Merge pull request #1292 from PR0M3TH3AN/ai/report-20260118-14555220432416113661
docs: add weekly agent report for 2026-01-18
2026-01-17 19:47:36 -05:00
google-labs-jules[bot] c1782acb9e docs: add weekly agent report for 2026-01-18 2026-01-18 00:03:23 +00:00
thePR0M3TH3AN 923b3a718e Merge pull request #1290 from PR0M3TH3AN/update-watch-history-cache-registry-3141393103014008562
Integrate watch history policies with centralized cache registry
2026-01-17 18:05:23 -05:00
google-labs-jules[bot] a1b1d85c9d feat(cache): integrate watch history with centralized registry
- Update `cachePolicies.js` to include `defaultDTag` for watch history.
- Update `profileCache.js` to resolve policies dynamically via `SECTION_TO_NOTE_TYPE`.
- Implement `resolveAddressKey` in `profileCache.js` for canonical key generation.
- Implement TTL expiration logic in `profileCache.js`.
- Update `watchHistory.js` to use `NOTE_TYPES.WATCH_HISTORY` for storage operations.
2026-01-17 23:04:08 +00:00
thePR0M3TH3AN e54d9f0453 Merge pull request #1289 from PR0M3TH3AN/codex/session-actor-telemetry-isolation-16408739976850381609
Isolate view telemetry and restrict session actor publishing
2026-01-17 17:50:15 -05:00
google-labs-jules[bot] b49a294dc0 feat: isolate view telemetry and restrict session actor publishing
- Add `isSessionActor` helper to `js/nostr/sessionActor.js` to identify ephemeral keys.
- Update `js/nostr/viewEvents.js` to namespace view deduplication caches by `actorPubkey` to prevent data leakage between sessions.
- Block comment publishing for session actors in `js/nostr/commentEvents.js`.
- Block watch history list publishing for session actors in `js/nostr/client.js`.
- Block user block list publishing for session actors in `js/userBlocks.js`.
- Block hashtag preference publishing for session actors in `js/services/hashtagPreferencesService.js`.
- Add inline documentation clarifying variable sources.
2026-01-17 22:48:31 +00:00
thePR0M3TH3AN 37e2e6dfc6 Merge pull request #1288 from PR0M3TH3AN/lru-cache-integration-8595072792152932110
LRU Cache Integration for Comments & Reactions
2026-01-17 17:20:37 -05:00
google-labs-jules[bot] 083f0c9ecc feat: implement shared LRU cache for video comments and reactions
- Added `js/utils/lruCache.js` with hit/miss tracking.
- Updated `js/nostr/cachePolicies.js` to set 5-minute TTL for comments/reactions.
- Integrated caching and incremental fetching in `js/nostr/commentEvents.js`.
- Implemented `listVideoReactions` in `js/nostr/reactionEvents.js` with caching logic.
2026-01-17 22:15:46 +00:00
thePR0M3TH3AN 019a87b8af Merge pull request #1287 from PR0M3TH3AN/codex/partitioned-profile-cache-and-signer-invalidation-12811025791925587536
Implement partitioned profile cache and signer invalidation
2026-01-17 16:51:00 -05:00
google-labs-jules[bot] 3deb8d08f0 Implement profile-scoped caching and signer invalidation logic
- Updated `profileCache.js` to support clearing runtime memory on signer change.
- Updated `NostrClient` to trigger `clearSignerRuntime` on `setActiveSigner`.
- Updated list services (`subscriptions`, `userBlocks`, `hashtagPreferences`, `watchHistory`) to listen for `runtimeCleared` and reload data.
- Updated `NostrClient` sync metadata methods to default to the active profile pubkey.
- Added `partition-updated` event emission to `profileCache`.
2026-01-17 21:43:35 +00:00
thePR0M3TH3AN 1f8dfab811 Merge pull request #1285 from PR0M3TH3AN/ai/smoke-tests-20260117-10426525355644906665
chore(ai): add smoke test script (agent)
2026-01-17 16:25:46 -05:00
thePR0M3TH3AN f5368b8b45 Merge pull request #1286 from PR0M3TH3AN/codex/incremental-list-fetching-9588608129744192836
Implement incremental fetching for Nostr lists
2026-01-17 16:24:28 -05:00
google-labs-jules[bot] 9d06f43321 feat: implement incremental fetching for Nostr lists
Implements a `SyncMetadataStore` to persist last-seen timestamps for replaceable lists (Kind 10000, 30000, 30002, 30015).
Adds `fetchListIncrementally` helper to `NostrClient` which performs per-relay `since` queries.
Updates `SubscriptionsManager`, `UserBlockListManager`, `HashtagPreferencesService`, and `adminListStore` to utilize incremental fetching.
Prevents local cache wipes when incremental fetches return empty results (indicating "no updates").
2026-01-17 21:11:48 +00:00
google-labs-jules[bot] a8647c109f chore(ai): add smoke test script (agent)
Added `scripts/agent/smoke-test.mjs` to verify key application flows in a headless environment.

Features:
- Verifies Relay Connection
- Verifies NSEC Login (Ephemeral)
- Verifies Video Publishing (Sign & Send)
- Verifies Event Retrieval
- Verifies DM Encryption/Decryption

Usage:
```bash
npm install
node scripts/agent/smoke-test.mjs
```

Artifacts (logs/reports) are generated in `artifacts/` and are ignored by git.
Utilizes `scripts/agent/simple-relay.mjs` for a local relay.
Uses `jsdom` to polyfill browser environment for `NostrClient`.
2026-01-17 21:10:02 +00:00
thePR0M3TH3AN 1786ad9068 Merge pull request #1284 from PR0M3TH3AN/refactor-profile-cache-storage-4640521263541154726
Refactor storage for profile-scoped lists
2026-01-17 15:52:26 -05:00