[docs] add TODOs #45-#48 (tag suggestions, feed auto-refresh, Most Zapped tab, fluent profile switching)

Per maintainer: #45 upload-modal tag suggestions from the user's previous videos;
#46 auto-refresh the feed after posting a video; #47 "Most Zapped" sidebar tab
(trending-by-zaps); #48 fluent profile switching across signing methods.

#48 verified NOT already done: switching to a saved nsec profile throws "secret-required"
(switchProfile -> requestLogin -> nsec provider.login with no passphrase) and silently
fails — it never prompts for the PIN. Same root gap as #36 but in the switch path;
NIP-46 likely needs an analogous reconnect on switch.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
thePR0M3TH3ANandClaude Opus 4.8 committed 2026-06-30 22:00:15 -04:00
1 parent 7a11473d0d
commit 577e5d27c5
1 file changed
+38
+38
View File
@@ -571,6 +571,44 @@ toward freshness and looked identical. Gave each a structural identity:
upload (and optionally the default). Reuse `loadFromStorage` / the per-provider
connection model.
### 45. Upload modal: suggest tags from the user's previous videos (UX)
- [ ] In the upload modal, let the user **pick tags reused from their other videos** —
surface a set of their **commonly-used tags** (frequency-ranked across their past
uploads) as one-tap chips, plus their less-common individual tags. Source from the
user's own video events' `t` tags (My Videos / their kind-30078+NIP-71 posts).
Rank by usage count; clicking a chip adds it to the new video's tags.
### 46. Feed auto-refreshes after posting a video (UX)
- [ ] After a video note is published, **automatically refresh the feed** so the new
video appears without a manual page reload. Hook the post-publish success (upload
modal `upload:submit` / `publishVideoNote` completion) to
`refreshAllVideoGrids`/`onVideosShouldRefresh` (optimistically inject the just-
published event so it shows instantly). Mind the feed-identity + dedupe paths (#20/
#21) so the injected event isn't dropped or duplicated.
### 47. "Most Zapped" sidebar tab (trending-by-zaps)
- [ ] Add a **Most Zapped** sidebar tab: like Trending (#27, view-count) but ranked by
**total zaps** (sats / zap count) per video. Reuse the zap accounting (kind-9735
receipts) already used for the zap system; build a feed source/ranker that sorts by
zap total over a window, wired into the feed engine like Trending. Depends on
reliable zap data (couples with the zap system already shipped in #3).
### 48. Fluent profile switching across signing methods (nsec / NIP-46 / NIP-07)
- [ ] **CONFIRMED NOT DONE (verified 2026-06-30).** Switching to a saved **nsec** profile
fails: `switchProfile(pubkey, { providerId: "nsec" })` → `requestLogin` → the nsec
provider's `login()` is called with **no secret/passphrase**, so it throws
`"secret-required"` and the switch silently fails (caught + logged in
`profileModalController`). It never prompts for the PIN or routes to the stored-key
unlock flow. Same root gap as #36 (nsec signer needs the passphrase to be restored),
but in the SWITCH path. Fix: when switching to a saved nsec profile, detect the
stored encrypted key (`getStoredSessionActorMetadata`) and prompt for the pin/
passphrase (route through `unlockStoredSessionActor`, e.g. open the login modal's
unlock flow), then activate. Apply the same for **NIP-46** (reconnect / re-authorize
the remote signer on switch if needed). Goal: switch fluently between NIP-07 ⇄ nsec
⇄ NIP-46 accounts regardless of the current signing method. NOTE: multiple saved
nsec accounts share ONE stored session entry today — confirm per-account key storage
is needed for switching among several nsec profiles.
### 8. Orphan storage garbage-collection tool
- [x] **Largely delivered by the My Videos tab** (`9d3a0df0`): lists bucket objects no
live note references and offers per-file delete (under the user's prefix only).