- `handleVisibility` only scheduled intervals but didn't trigger an immediate refresh when returning to the tab.
- This caused `tests/unit/services/exploreDataService.test.mjs` to fail (assertion `0 !== 1`).
- Added explicit calls to `refreshWatchHistoryTagCounts` and `refreshTagIdf` when `document.hidden` becomes false.
Co-authored-by: PR0M3TH3AN <[email protected]>
Extracts all hashtag preference related logic into a new controller
`js/ui/profileModal/ProfileHashtagController.js` to reduce the size of `js/ui/profileModalController.js` and improve maintainability.
- Moves `normalizeHashtagTag`, `formatHashtagTag`, `getResolvedHashtagPreferences`, `setHashtagStatus`, `refreshHashtagBackgroundStatus`, `populateHashtagPreferences`, `renderHashtagList`, `sanitizeHashtagList`, `createHashtagListItem`, `persistHashtagPreferences`, `handleAddHashtagPreference`, `handleRemoveHashtagPreference`, `handleHashtagPreferencesChange`, `describeHashtagPreferencesError`.
- Updates `ProfileModalController` to delegate to `ProfileHashtagController`.
- Adds delegate getters/methods in `ProfileModalController` to maintain backward compatibility for tests.
- Reduces `js/ui/profileModalController.js` by ~600 lines.
- Updates file size baseline in `scripts/check-file-size.mjs`.
Passes `npm run lint` and `npm run test:unit`.
Co-authored-by: PR0M3TH3AN <[email protected]>
Updates `content/docs/guides/upload-content.md` to reflect the actual
implementation of the upload and playback workflows:
- Clarifies the 2GB file size limit as a client-side memory constraint.
- Explicitly instructs self-hosters to configure CORS with their instance domain.
- Adds the "External Link" flow to the upload lifecycle.
- Notes that playback priority (URL vs Torrent) depends on instance settings.
- Updates Advanced Options to mention IMETA variants.
Co-authored-by: PR0M3TH3AN <[email protected]>
- 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]>
- Update `content/docs/guides/upload-content.md` to reflect actual file type restrictions, size limits (2GB advisory), and CORS requirements.
- Fix broken link in `content/docs/getting-started.md`.
- Fix `NostrClient` missing getters (`unreachableRelays`, `extensionPermissionCache`) by delegating to Managers.
- Update `SignerManager` to hydrate permissions from storage in constructor and store individual permission keys to satisfy unit tests.
- Update `SignerManager.loginWithExtension` to use `client.ensureExtensionPermissions` to respect test mocks.
- Verified with `tests/services/s3Service.test.mjs`, `tests/ui/uploadModal-integration.test.mjs`, `tests/video-note-payload.test.mjs`, `tests/nostr-login-permissions.test.mjs`, and `tests/unit/client-count-resilience.test.mjs`.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Updated `content/docs/guides/upload-content.md` with accurate file types, size limit explanations, and troubleshooting steps.
- Updated `content/docs/getting-started.md` to link to the detailed upload guide and clarify "Invite-only" (Whitelist) mode.
- Verified changes against `js/ui/components/UploadModal.js`, `js/storage/s3-multipart.js`, and `js/accessControl.js`.
- Included `VALIDATION_REPORT.md` documenting the verification process.
Co-authored-by: PR0M3TH3AN <[email protected]>
Updates `/content/docs/guides/upload-content.md` and `/content/docs/getting-started.md` to accurately reflect the storage configuration workflow (Profile -> Storage tab), supported providers (S3/R2), and CORS requirements.
- Clarified instructions for configuring R2 vs Generic S3.
- Updated CORS configuration example with placeholder origins.
- Aligned "Configure Storage" steps with the actual UI location.
Co-authored-by: PR0M3TH3AN <[email protected]>
Updated `content/docs/guides/upload-content.md` and `content/docs/getting-started.md` to accurately reflect the application's runtime behavior, specifically regarding upload workflows, CORS configuration, and routing links.
- Clarified CORS instructions to distinguish between R2 (manual) and S3 (auto) configuration.
- Updated example origins to be more generic (localhost).
- Explicitly mentioned the "Hashtags" section in the upload form.
- Clarified navigation to the Storage tab.
- Fixed the broken link to the Watch History view (using hash routing).
- Removed unsupported "captions" from the metadata list.
- Validated changes using `tests/docs/verify-upload-claims.test.mjs`.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Updates `content/docs/guides/upload-content.md` to list supported video formats (`.mp4`, `.webm`, `.mov`, `.mkv`, `.ts`, `.m3u8`, `.mpg`, `.mpeg`) and thumbnail formats.
- Adds a recommended file size limit of 2GB with an explanation (browser memory constraints).
- Clarifies CORS configuration for Cloudflare R2 to explicitly require AWS SDK v3 headers.
- Updates `content/docs/getting-started.md` to distinguish between direct upload formats and external hosting formats.
- Adds metadata validation details (Title required).
Co-authored-by: PR0M3TH3AN <[email protected]>
Moves markdown files to `content/docs/` to match the TOC structure and ensures the correct `aria-current` attribute is used for the active TOC link.
Co-authored-by: PR0M3TH3AN <[email protected]>