Section 14 in AGENTS.md covers the full test harness API, mock relay
HTTP endpoints, Playwright fixture usage, and data-testid selector
reference. CLAUDE.md testing section updated with quick-start example.
https://claude.ai/code/session_01XnrszNmdqrAGd8g8qhAn4G
- Introduce `videoTagCache` (WeakMap) in `js/feedEngine/kidsScoring.js`
- Cache result of `normalizeTagSetFromVideo` to avoid re-computation
- Improved benchmark performance by ~35%
Co-authored-by: PR0M3TH3AN <[email protected]>
- Update `tests/watch-history.test.mjs` to correctly verify that watch history snapshot items exist before checking for stripped metadata.
- Fix `TypeError` in test setup by accessing `nostrClient.signerManager.extensionPermissionCache` directly (as `nostrClient.extensionPermissionCache` is read-only) and handling it as a `Map`.
- Ensure tests align with the requirement that watch history snapshots publish only event IDs (stripping video metadata).
Co-authored-by: PR0M3TH3AN <[email protected]>
Extracted the complex playback logic from `js/app/playbackCoordinator.js` into a new `js/services/playbackStrategyService.js`.
This improves maintainability by separating the orchestration logic from the application glue code.
The coordinator now delegates to the service, passing a context object for UI interactions and state synchronization.
Co-authored-by: PR0M3TH3AN <[email protected]>
Replaces the dependency on `offsetWidth` and `offsetHeight` with a deterministic calculation based on module count and cell size. This prevents incorrect (huge) margins when the QR code is generated inside a hidden container where offset dimensions are 0.
Fixes: Margin values calculation in QRCode drawing logic.
Co-authored-by: PR0M3TH3AN <[email protected]>
Adds comprehensive unit tests for `js/utils/videoTimestamps.js` using the native Node.js test runner.
- Covers `getVideoRootIdentifier`, `applyRootTimestampToVideosMap`, and `syncActiveVideoRootTimestamp`.
- Verifies handling of invalid inputs, edge cases (e.g., missing IDs, type mismatches), and state updates.
- Ensures robust timestamp synchronization logic.
This addresses the testing gap identified in `js/utils/videoTimestamps.js`.
Co-authored-by: PR0M3TH3AN <[email protected]>
Extract contracts, default settings, and helpers from `js/ui/profileModalController.js` to `js/ui/profileModalContract.js`.
This reduces the file size of `js/ui/profileModalController.js` by 884 lines.
- Moved `SERVICE_CONTRACT`, `STATE_CONTRACT` and their builders.
- Moved internal settings helpers (`createInternalDefaultNwcSettings`, etc).
- Moved badge helpers (`resolveProviderBadgeClass`).
- Updated `scripts/check-file-size.mjs` with new line count.
- Cleaned up imports in `profileModalController.js`.
Co-authored-by: PR0M3TH3AN <[email protected]>
Three CI-enforced lint scripts to prevent common codebase growth problems:
- lint:file-size — enforces 1000-line max for new JS files, grandfathers
existing oversized files and prevents them from growing further
- lint:innerhtml — tracks innerHTML usage per-file with a baseline count,
blocks new innerHTML additions (guides agents toward safe DOM APIs)
- Relay constants consolidated from duplicate definitions in client.js and
ConnectionManager.js into shared js/nostr/relayConstants.js
- AGENTS.md Section 13: documents all three rules with examples
- docs/scheduled-agent-prompts.md: copy-paste prompts for recurring
file decomposition, innerHTML migration, and constant dedup tasks
https://claude.ai/code/session_01LzErpH9FNw4hAPsjoYb1v9
- AGENTS.md Section 12: subsystem boundary table, PR discipline rules,
in-flight work reservation section, and signaling conventions for
parallel AI agent workflows (Claude Code, Codex, Jules)
- CLAUDE.md: document the unstable→beta→main promotion pipeline,
add multi-agent workflow section with coordination rules for both
agents and human maintainers, fix Node.js version reference (20→22)
https://claude.ai/code/session_01LzErpH9FNw4hAPsjoYb1v9
- Update CORS configuration to exactly match the S3 client implementation (`AllowedMethods` order).
- Clarify accepted file types by adding specific MIME types for each extension.
- Expand the IMETA section to list specific metadata fields (`m`, `dim`, `url`, `x`).
- Add specific validation errors to the troubleshooting section (`Missing Title`, `Missing Source`, `Protocol Errors`).
- Confirm file size limits and moderation policies are accurate.
Co-authored-by: PR0M3TH3AN <[email protected]>
- 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
Comprehensive plan for wrapping bitvid as native apps using Capacitor
for Android, iOS, and desktop (Windows/macOS/Linux via Electron).
Covers architecture, phased implementation, CI/CD workflows, testing
strategy, platform risks, and app store submission guidance.
https://claude.ai/code/session_01RBdcFkjzXaawaLY68MMhxc
Extracted NIP-94 and NIP-71 publishing logic into private helper methods
`_handlePublishNip94` and `_handlePublishNip71`. This improves readability
and maintainability of the `publishVideo` method in `js/nostr/client.js`.
Co-authored-by: PR0M3TH3AN <[email protected]>
- 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]>