Mark Set Bio complete and set next feature to profile picture

Update the P1 backlog and standing specifier briefing for the merged
set-bio task. Add gotcha for the 217-byte profile-text limit vs the
indexer's looser validation.

By specifier.
This commit is contained in:
Chris Troutner
2026-08-27 08:13:55 -07:00
parent e321c7fec7
commit 2eb86e2d07
2 changed files with 28 additions and 22 deletions
+18 -9
View File
@@ -167,16 +167,16 @@ Goal: reach feature parity with [memo.cash](https://memo.cash).
| Tier | Features | Status |
|------|----------|--------|
| **P0** | Post, Set name, Reply, Efficient pagination | ✅ shipped |
| **P1** | Like counts (read side) ✅; client display ✅; Set profile text, Set profile picture, Follow/Unfollow | next |
| **P1** | Like counts (read side) ✅; client display ✅; Set profile text ✅; Set profile picture, Follow/Unfollow | next |
| **P2** | Topics (list, feed, post, follow/unfollow) | later |
| **P3** | Polls (create, add option, vote) | later |
| **P4** | Mute / unmute user | later |
| **P5** | Send money memo action, MIP-0009 token exchange | later |
| **P6** | Repost, ranked feed, notifications, search, tags, following feed | later |
**Suggested next spec:** P1.3 — add a "Set Bio" UI on the Account page that
broadcasts the `0x6d05` Set profile text action. The indexer and DB already
read/store profile text; the missing piece is the client write path and the
**Suggested next spec:** P1.4 — add a "Set Avatar URL" UI on the Account page that
broadcasts the `0x6d0a` Set profile picture action. The indexer and DB already
read/store profile pictures; the missing piece is the client write path and the
Account page editor.
---
@@ -305,7 +305,14 @@ that a single user-facing feature may require specs in more than one component.
`no-new` errors in unit tests that must be resolved before master is clean.
12. **Weak Gherkin examples can survive mutation** — when example values are both
the input and the expected output, mutating them passes trivially. Tie
assertions to independent fixture data where possible.
assertions to independent fixture data where possible. (Observed in
set-bio Scenario 1: the account-page bio assertion echoes the same example
value that was broadcast.)
13. **Profile-text byte limit is 217 bytes (protocol), but the indexer validates
looser.** The Memo protocol says `0x6d05` profile text is ≤ 217 bytes. The
client Set Bio UI enforces 217. The indexer's `handleSetProfile` still
validates against `MAX_POST_SIZE = 65000`; the looser indexer limit is a
separate hardening item (protocol parity would use 217).
---
@@ -343,7 +350,9 @@ At the end of each session, update this file:
- Note the current `master` HEAD commit.
- State the next feature to work on.
Current `master` HEAD: `21373f4` (like-count-display merged to `master`;
client + DB tests, build, and lint passing).
Next action: **spec P1.3** — add a "Set Bio" UI on the Account page that
broadcasts the `0x6d05` Set profile text action.
Current `master` HEAD: `e321c7f` (set-bio merged to `master`; client unit 48,
property 6, acceptance all-features, lint, and build passing). An unrelated
`swarmforge.conf` specifier-model switch that leaked in with the merge was
reverted to keep the merge focused on set-bio.
Next action: **spec P1.4** — add a "Set Avatar URL" UI on the Account page that
broadcasts the `0x6d0a` Set profile picture action.
+10 -13
View File
@@ -121,7 +121,7 @@ adding/editing the client UI.
|---|---------|-------------|------------|--------|-----------|
| 1.1 | Like / tip a Memo — read side | `0x6d04` | D | ✅ | `likeCount` returned on `/posts/*` and `/posts/:txid/thread` |
| 1.2 | Like / tip a Memo — client display | `0x6d04` | C | ✅ | Feed/Profile/Thread read `likeCount` from API instead of defaulting to 0 |
| 1.3 | Set profile text (bio) | `0x6d05` | C, I, D | 🟡 partial | C: add "Set Bio" UI on Account page; I/D already read |
| 1.3 | Set profile text (bio) | `0x6d05` | C | ✅ | C: "Set Bio" UI on Account page broadcasts `0x6d05` (217-byte limit) |
| 1.4 | Set profile picture | `0x6d0a` | C, I, D | 🟡 partial | C: add "Set Avatar URL" UI; I/D already read |
| 1.5 | Follow a user | `0x6d06` | C, I, D | 🔴 missing | C: follow button on profile; D: follow state + following/followers lists |
| 1.6 | Unfollow a user | `0x6d07` | C, I, D | 🔴 missing | C: unfollow button; D: follow state |
@@ -132,8 +132,8 @@ adding/editing the client UI.
2. **Like / tip a Memo — client display** ✅ DONE. The feed, profile, and
thread views now read `likeCount` from the API (profile shows a read-only
like button).
3. **Set profile text** — simple text broadcast + Account page UI.
4. **Set profile picture** — URL broadcast + Account page UI.
3. **Set profile text** ✅ DONE. Account page "Set Bio" UI broadcasts `0x6d05` with a 217-byte limit and byte counter (task `set-bio`).
4. **Set profile picture** — URL broadcast + Account page UI. NEXT.
5. **Follow / Unfollow user** — social graph; enables the following feed later.
### Like / tip details
@@ -211,18 +211,15 @@ Polls require a new data model and rendering. The indexer has no handler yet.
---
## Suggested first spec for the next session
## Suggested next spec
**Set profile text (bio)** (P1.3):
- `psf-memo-client`: add a "Set Bio" UI on the Account page that broadcasts the
`0x6d05` Set profile text action via `minimal-slp-wallet.sendOpReturn()`.
- `psf-memo-indexer` and `psf-memo-db` already read/store profile text, so this
is primarily a client broadcast + Account page UI feature.
- The profile page already renders `profileText` from the API; the missing piece
is the write path (broadcast) and the Account page editor.
**Set profile picture (bio)** (P1.4):
- `psf-memo-client`: add a "Set Avatar URL" UI on the Account page that broadcasts
the `0x6d0a` Set profile picture action via `minimal-slp-wallet.sendOpReturn()`.
- The indexer and DB already read/store profile pictures; the missing piece is
the client write path and the Account page editor.
This is the next smallest end-to-end win toward memo.cash parity after the
like-count read/display loop closed.
This is the next smallest end-to-end win after the set-bio write path closed.
---