mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
docs: record nip-07 list-decrypt + post-login freeze resolution
- README "Login with Nostr": recommend a well-maintained NIP-07 signer (nos2x/Alby) and add a troubleshooting note for the locked/asleep-signer case (unlock/reload + refresh), since a flaky extension was the root cause of the encrypted-list load failures. - KNOWN_BUGS #0: mark RESOLVED (2026-06-16) — confirmed in real env after the user switched to nos2x; DMs/watch-history/lists decrypt in ms with no timeouts. Documented the DM decrypt-resilience + receiver fixes and the post-login profile-panel freeze fix (defer panel rendering to selectPane). Recorded the remaining low-priority follow-ups (liveness-ranked relays, opt-in queue concurrency, optional DM double-decrypt routing). - Retitle the section "## Open" → "## Tracked" so resolved entries (#0/#1/#2) aren't mislabeled as open; status is now per-entry. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
a1a8f6cda6
commit
8022942464
2 files changed
+39
-7
No files matched your search
@@ -30,7 +30,9 @@
|
||||
|
||||
1. **Visit the Site**: Navigate to the live instance of **bitvid** (e.g., `[https://bitvid.network](https://bitvid.network)`).
|
||||
2. **Login with Nostr**:
|
||||
- Use a compatible Nostr browser extension or manually input your public key.
|
||||
- Use a compatible NIP-07 browser extension or manually input your public key.
|
||||
- For the most reliable experience we recommend a well-maintained signer such as [nos2x](https://github.com/fiatjaf/nos2x) or [Alby](https://getalby.com/). Encrypted features (DMs, hashtag preferences, watch history, block/subscription lists) require the extension to respond to decryption requests.
|
||||
- **Troubleshooting:** if those encrypted lists never finish loading after login, bitvid will surface a notice — your extension's signer is likely locked or its background worker went to sleep. Unlock/reload the extension and refresh the page. (bitvid caps relay fan-out and fast-fails an unresponsive signer so the tab no longer pins the CPU while waiting.)
|
||||
|
||||
### Upload a video
|
||||
|
||||
|
||||
+36
-6
@@ -9,9 +9,12 @@ refactor work in that doc — these are defects.
|
||||
|
||||
---
|
||||
|
||||
## Open
|
||||
## Tracked
|
||||
|
||||
### 0. Encrypted lists (hashtags, DMs, blocks) fail to DECRYPT on login *(top priority)*
|
||||
> Status is per-entry (RESOLVED / FIXED / Open). Items #3 and #4 below remain
|
||||
> open; #0, #1, and #2 are resolved and kept here for provenance.
|
||||
|
||||
### 0. Encrypted lists (hashtags, DMs, blocks) fail to DECRYPT on login — RESOLVED (2026-06-16)
|
||||
- **Severity:** high — the user's recurring "hashtags/DMs/watch-history don't
|
||||
load in the profile modal."
|
||||
- **Diagnosed from real-env console (2026-06-14):** the lists are *fetched* (e.g.
|
||||
@@ -87,10 +90,37 @@ refactor work in that doc — these are defects.
|
||||
proves the client now loads all lists for signers answering up to the decrypt
|
||||
budget; lists only fail once per-call latency exceeds the budget (i.e. the
|
||||
signer is the wall, not the client).
|
||||
- **Still open:** liveness-ranked relay health (see #4); DM decrypt resilience
|
||||
(don't hard-fail DMs on a transient permission miss — retry); optional nip-07
|
||||
queue concurrency bump for slow signers (risks channel drops on some
|
||||
providers — opt-in).
|
||||
- **DM decrypt resilience (SHIPPED):** `buildDmDecryptContext` now gates on
|
||||
method existence (`typeof activeSigner.nip44Decrypt === "function"`) rather than
|
||||
a possibly-stale `extensionPermissionResult`/capability snapshot, so DMs no
|
||||
longer hard-fail with "DM decryption helpers are unavailable" on a transient
|
||||
permission miss. Also fixed the Controller→Actions wrong-receiver bugs that made
|
||||
opening a conversation throw "… is not a function"
|
||||
(`ProfileDirectMessageController`/`ProfileDirectMessageActions`). Tests:
|
||||
`tests/dm-decrypt-context.test.mjs`, `tests/dm-conversation-select.test.mjs`.
|
||||
- **Post-login UI freeze (SHIPPED, 2026-06-16):** once a responsive signer (nos2x)
|
||||
made decryption instant, `profileModalController.handleAuthLogin` rendered EVERY
|
||||
profile panel at login (friends list + per-contact avatars, subscriptions,
|
||||
blocks, relays, wallet, hashtags, storage) into a CLOSED modal — one main-thread
|
||||
burst that froze the tab for ~10-15s and stopped the profile panel from opening.
|
||||
Fixed by deferring panel rendering to `selectPane()` (lazy per-pane on open;
|
||||
added the missing `friends` case) and gating the block/subscription/contacts
|
||||
"change" re-renders on `isProfileModalOpen()`. DM-identity setup stays eager.
|
||||
- **CONFIRMED RESOLVED in real env (2026-06-16):** after the user switched from
|
||||
KeysBand (dead MV3 worker) to **nos2x**, real-browser logs show DMs (NIP-04 +
|
||||
NIP-44), watch history (kind 30078), and contact/subscription lists all
|
||||
decrypting in milliseconds with no timeouts, no `signerStatus: missing`, no
|
||||
channel-death, and no forever-retry. The whole resilience stack
|
||||
(relay cap → DM defer → circuit breaker → transient-retry → decrypt budget →
|
||||
signer-health notice → DM receiver fixes → post-login freeze fix) is validated
|
||||
against the user's real vault. Moving #0 to resolved.
|
||||
- **Still open (follow-ups, lower priority):** liveness-ranked relay health
|
||||
(see #4); optional nip-07 queue concurrency bump for slow signers (risks
|
||||
channel drops on some providers — opt-in); optional DM decrypt efficiency —
|
||||
bitvid currently tries BOTH `nip44.decrypt` and `nip04.decrypt` per message
|
||||
(half log expected `invalid base64`/`invalid payload length` errors), which
|
||||
could be halved by routing on the `?iv=` (NIP-04) ciphertext marker. Benign;
|
||||
only worth doing if large-mailbox DM load feels slow.
|
||||
|
||||
### 1. Logged-out: video grid stays empty until a manual refresh — FIXED (2026-06-16)
|
||||
- **Severity:** medium (first-load UX, logged-out).
|
||||
|
||||
Reference in new issue
Block a user