Checkpoint: feed profile filter
This commit is contained in:
parent
55a49b442b
commit
3dfd15f9c1
1 changed files with 86 additions and 1 deletions
|
|
@ -1,4 +1,89 @@
|
||||||
# Checkpoint — Note publish latency trim (2026-08-24)
|
# Checkpoint — Feed "My notes" profile filter (2026-08-24)
|
||||||
|
|
||||||
|
A stopping point you can return to if this session is closed. Everything below was
|
||||||
|
verified green at the moment this file was written.
|
||||||
|
|
||||||
|
## Where things are
|
||||||
|
|
||||||
|
- Project: `/home/avi/Projects/Nostr_Keynctr`
|
||||||
|
- Git repo: `master` @ `55a49b4` ("Feed: 'My notes' scope with per-profile
|
||||||
|
dropdown filter"). Before it: `b001b3c` (note publish latency trim), `8f63761`
|
||||||
|
(checkpoint), `2ad054e` (NIP-05 checkpoint).
|
||||||
|
- Working tree is **clean** apart from this checkpoint update, which is committed right after.
|
||||||
|
|
||||||
|
## What was completed
|
||||||
|
|
||||||
|
1. **Feed "My notes" scope (2026-08-24, `55a49b4`).** The Feed screen now has a
|
||||||
|
third scope button next to *Everyone* and *My contacts*:
|
||||||
|
- **My notes** shows only posts published by one of the user's own profiles.
|
||||||
|
It defaults to the currently selected (active) profile.
|
||||||
|
- While active, a **dropdown** lists every stored profile (`Label (active)`);
|
||||||
|
picking one re-fetches the feed filtered to that account's npub.
|
||||||
|
- Disabled (with tooltip) when no profiles exist; dedicated empty state when
|
||||||
|
a profile has no recent notes.
|
||||||
|
2. **Backend support:** new `feed::profile_feed()` (author-filtered variant of
|
||||||
|
the shared aggregate query); IPC `feed_get` gained an optional `author`
|
||||||
|
param (npub or hex) that takes precedence over `contacts_only`; author key
|
||||||
|
parsing happens outside the state lock so slow relays still never block
|
||||||
|
interactive requests.
|
||||||
|
3. Earlier today: note-publish latency trim (`b001b3c`) — no global connection
|
||||||
|
wait, parallel sends, 6 s per-relay cap in `src/publish.rs`.
|
||||||
|
|
||||||
|
## Commits added most recently
|
||||||
|
|
||||||
|
- `55a49b4` Feed: 'My notes' scope with per-profile dropdown filter
|
||||||
|
- `b001b3c` Trim note publish latency: skip global connection wait, parallel sends, 6s cap
|
||||||
|
|
||||||
|
## Verification commands run (all green)
|
||||||
|
|
||||||
|
Rust (repo root):
|
||||||
|
|
||||||
|
```
|
||||||
|
cargo test # 104 passed; 0 failed (2 new profile_feed tests)
|
||||||
|
cargo clippy --all-targets # only pre-existing warnings in src/profiles.rs
|
||||||
|
cargo fmt --check # clean
|
||||||
|
cargo build --release # success
|
||||||
|
```
|
||||||
|
|
||||||
|
Frontend (`frontend/`):
|
||||||
|
|
||||||
|
```
|
||||||
|
npm test # 14 files, 87 tests passed (3 new FeedScreen tests)
|
||||||
|
npm run typecheck # clean
|
||||||
|
npm run lint # 0 errors
|
||||||
|
npm run format:check # clean
|
||||||
|
npm run build # vite build success
|
||||||
|
npm run electron:build # tsc electron main success
|
||||||
|
```
|
||||||
|
|
||||||
|
## How to use / reproduce
|
||||||
|
|
||||||
|
GUI: `cd ~/Projects/Nostr_Keynctr/frontend && npm start` → **Feed** → click
|
||||||
|
**My notes** (third segment). The feed reloads showing only the active profile's
|
||||||
|
notes; switch accounts with the dropdown that appears next to it.
|
||||||
|
|
||||||
|
CLI (existing commands unchanged):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
B=~/Projects/Nostr_Keynctr/target/release/keynectr
|
||||||
|
$B feed [limit] # everyone
|
||||||
|
$B feed --contacts # contacts of active profile
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes & next steps
|
||||||
|
|
||||||
|
- Possible follow-up: expose `--author <npub>` on the CLI `feed` command for
|
||||||
|
parity with the GUI scope (IPC already supports it).
|
||||||
|
- Feed reads are bounded to the last 24 h (LOOKBACK in `src/feed.rs`); "My
|
||||||
|
notes" therefore hides older posts by design — same rule as Everyone.
|
||||||
|
- Relay health (checked earlier today): damus.io 503, nostr.band WS handshake
|
||||||
|
timing out; consider disabling nostr.band until it recovers.
|
||||||
|
- Pre-existing clippy warnings in `src/profiles.rs` remain (drop of reference,
|
||||||
|
unused `delete_profile`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Older checkpoint — Note publish latency trim (2026-08-24)
|
||||||
|
|
||||||
A stopping point you can return to if this session is closed. Everything below was
|
A stopping point you can return to if this session is closed. Everything below was
|
||||||
verified green at the moment this file was written.
|
verified green at the moment this file was written.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue