Commit Graph
12 Commits
Author SHA1 Message Date
Claude 696a30051b Fix lint failures, console.* convention violations, and CI Node version mismatch
- Add docs/capacitor-native-app-plan.md to hex-lint ignore list (code examples
  naturally reference hex colors in Capacitor config)
- Replace direct console.error/console.log calls with logger utility in
  historyView.js, profileCache.js, EventDetailsModal.js, ZapInterface.js,
  and notificationController.js
- Update CI workflow from Node 20 to Node 22 to match package.json engines

https://claude.ai/code/session_01LzErpH9FNw4hAPsjoYb1v9
2026-02-10 02:35:24 +00:00
google-labs-jules[bot]andPR0M3TH3AN 88cca17de0 perf: Use requestIdleCallback for ProfileCache localStorage writes
Optimizes `setProfileData` to defer blocking `JSON.stringify` and `localStorage.setItem` calls to idle periods, significantly reducing main thread blocking time during profile updates (e.g., watch history).

- Adds `runIdle` helper with `requestIdleCallback` (fallback to `setTimeout`).
- Updates `setProfileData` to use `runIdle`.
- Updates `tests/profile-cache.test.mjs` to handle async persistence.
- Adds `benchmarks/profile_cache_storage_bench.js` to measure blocking time (370x improvement observed).

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-05 22:59:50 +00:00
google-labs-jules[bot]andPR0M3TH3AN 0073bf223b Optimize clearMemoryCache to O(1) using nested map structure
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-05 20:28:49 +00:00
google-labs-jules[bot]andPR0M3TH3AN 1296e4a06a Document and verify ProfileCache O(1) clearing optimization
- Add comments to ProfileCache constructor and clearMemoryCache explaining the nested map structure.
- Add benchmarks/profile_cache_bench.js to prove performance against a linear scan baseline.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-05 20:13:44 +00:00
google-labs-jules[bot]andPR0M3TH3AN 307a7e4553 Refactor ProfileCache to use nested Map for O(1) clearMemoryCache
- Changed memoryCache from flat Map<string, any> to Map<string, Map<string, any>>
- Updated all accessor methods to handle nested structure
- Reduced clearMemoryCache complexity from O(N) to O(1)
- Verified with benchmark: ~3600x speedup for 20k items

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-05 19:33:58 +00:00
thePR0M3TH3AN f0f36e7c7b Merge cached profile and DM data safely 2026-01-29 19:01:11 -05:00
thePR0M3TH3AN 1642b787ec Reset caches on logout 2026-01-29 15:54:44 -05: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] 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
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
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
google-labs-jules[bot] 926e6ebf39 Refactor user-specific lists to use centralized profileCache 2026-01-17 20:47:27 +00:00