docs: v0.8.14 profile cosmetics — Phase 48, PROFILE_COSMETICS.md

Roadmap Phase 48 complete, parity P48-1, module/repo registry, automated
testing entry for npm run test:profile-cosmetics.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-05-21 23:30:30 -04:00
co-authored by Cursor
parent 3c382beff1
commit 1c89aadec0
6 changed files with 78 additions and 2 deletions
+1
View File
@@ -49,6 +49,7 @@ Pearcord validates itself without manual QA.
| `npm run test:emoji-packs` | Emoji pack registry + `emojisByPack` (`EMOJI_PACKS_SMOKE_OK`) |
| `npm run test:sticker-message` | Sticker-only send + gossip + view (`STICKER_MESSAGE_SMOKE_OK`) |
| `npm run test:hub-cards` | Hub mirror card builder + parse (`HUB_CARDS_SMOKE_OK`) |
| `npm run test:profile-cosmetics` | Profile cosmetics P2P + perk gates (`PROFILE_COSMETICS_SMOKE_OK`) |
| `npm run test:emoji-image` | Image emoji Hyperdrive + preview (`EMOJI_IMAGE_SMOKE_OK`) |
| `npm run test:timeout` | Member timeout blocks send (`TIMEOUT_SMOKE_OK`) |
| `npm run test:audit-gossip` | Audit log gossip (`AUDIT_GOSSIP_SMOKE_OK`) |
+1
View File
@@ -126,6 +126,7 @@ git remote -v
| `pearcord-ui-flow` | Desktop UI IPC dispatch + Bare flow scenarios |
| `pearcord-announcement-hub` | Remote announcement syndication on discovery mesh |
| `pearcord-hub-cards` | Rich announcement hub mirror card metadata |
| `pearcord-profile-cosmetics` | Nitro-style profile cosmetics (P2P sync) |
| `pearcord-device-sync` | `pcdv_` multi-device pairing |
| `pearcord-emoji` | Guild emoji registry + `EMOJI_UPSERT` gossip |
| `pearcord-sync` | Planned Autobase bridge |
+1
View File
@@ -16,6 +16,7 @@
| `pearcord-announcements` | `modules/pearcord-announcements` | Announcement follow + cross-post |
| `pearcord-announcement-hub` | `modules/pearcord-announcement-hub` | Remote announcement syndication on discovery mesh |
| `pearcord-hub-cards` | `modules/pearcord-hub-cards` | Rich hub mirror card builders + legacy parse |
| `pearcord-profile-cosmetics` | `modules/pearcord-profile-cosmetics` | P2P profile banner, bio, avatar ring |
| `pearcord-boosts` | `modules/pearcord-boosts` | Guild cosmetic boosts + gossip |
| `pearcord-stickers` | `modules/pearcord-stickers` | Guild animated stickers + gossip |
| `pearcord-ui-flow` | `modules/pearcord-ui-flow` | Desktop UI IPC dispatch + flow scenarios |
+3 -2
View File
@@ -4,7 +4,7 @@ Gap analysis between **Pearcord** (P2P Pear app) and a typical **centralized cha
> This is the only doc that compares against an external reference product. All other docs use Pearcord naming only.
## Summary (v0.8.13)
## Summary (v0.8.14)
| Area | Reference product | Pearcord | Gap |
|------|-------------------|----------|-----|
@@ -120,8 +120,9 @@ Phases **02** and **4** are largely complete; **3** (live audio) and **5** (n
| P45-1 | Emoji packs (EMOJI_PACK_* gossip, picker grouping) | [x] v0.8.11 |
| P46-1 | Sticker-only messages (`stickerNames[]`, picker send) | [x] v0.8.12 |
| P47-1 | Rich hub mirror cards (`pearcord-hub-cards`, UI cards) | [x] v0.8.13 |
| P48-1 | Profile cosmetics (banner, bio, avatar ring, RPC 56) | [x] v0.8.14 |
**Next tranches:** Lottie stickers · Nitro-style profile cosmetics · hub card avatar thumbnails · combined sticker+text layout polish.
**Next tranches:** Lottie stickers · hub card avatar thumbnails · banner image upload · combined sticker+text layout polish.
When Phase 5 checklist is `[x]`, copy open items here into tracked rows in `PLATFORM_ROADMAP.md`.
+12
View File
@@ -244,6 +244,17 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
---
### Phase 48 — Profile cosmetics (v0.8.14)
| ID | Item | Status |
|----|------|--------|
| P48-1 | `pearcord-profile-cosmetics` + `PROFILE_COSMETIC_UPDATE` RPC 56 | [x] |
| P48-2 | Platform save/gossip + `cosmeticsByUserId` view + boost gates | [x] |
| P48-3 | Profile modal + avatar rings + user panel banner | [x] |
| P48-4 | smoke-profile-cosmetics + PROFILE_COSMETICS.md | [x] |
---
### Phase 47 — Rich hub mirror cards (v0.8.13)
| ID | Item | Status |
@@ -572,6 +583,7 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
### Changelog
- **2026-05-21** — v0.8.14: profile cosmetics (`pearcord-profile-cosmetics`, RPC 56, banner/bio/avatar ring, smoke-profile-cosmetics).
- **2026-05-21** — v0.8.13: rich hub mirror cards (`pearcord-hub-cards`, `hubMirrorJson`, UI card layout, smoke-hub-cards).
- **2026-05-21** — v0.8.12: sticker-only messages (`stickerNames` on MESSAGE_CREATE, picker one-click send, smoke-sticker-message).
- **2026-05-21** — v0.8.11: emoji packs (`EMOJI_PACK_UPSERT`/`DELETE` RPC 5455, pack-grouped picker, smoke-emoji-packs, P5-4 complete).
+60
View File
@@ -0,0 +1,60 @@
# Profile cosmetics (v0.8.14+)
P2P **Nitro-style profile cosmetics** — banner color, bio, accent/avatar ring. No central account server; synced on a dedicated Hyperswarm topic per user.
## Module
`pearcord-profile-cosmetics` — local JsonStore + `pearcord:profile-cosmetics:{userId}` mesh.
## Fields
| Field | Description |
|-------|-------------|
| `bannerColor` | `#rrggbb` profile banner strip |
| `bannerImageHash` | Future: Hyperdrive image (requires `upload_cosmetic` perk) |
| `avatarRing` | `none` · `solid` · `animated` |
| `accentColor` | Ring / accent hex |
| `profileBio` | Up to 190 characters |
## Gossip
| RPC | ID | Payload |
|-----|-----|---------|
| `PROFILE_COSMETIC_UPDATE` | 56 | `{ userId, cosmetics, updatedAt, deviceId? }` |
Fanout: profile cosmetics mesh (multi-device), **guild mesh** (members), **contacts mesh** (friends).
## Boost perk gates
When saving in a guild context, `pearcord-boosts` perks apply:
| Perk | Unlocks |
|------|---------|
| `profile_badge` | Solid avatar ring |
| `animated_ring` (level 3) | Animated ring |
| `upload_cosmetic` (level 2+) | Banner image hash |
## Platform API
| Method | Description |
|--------|-------------|
| `updateProfileCosmetics(patch)` | Save + gossip |
View: `profileCosmetics` (self), `cosmeticsByUserId` (peers).
## UI IPC
| type | fields |
|------|--------|
| `update-profile-cosmetics` | `profileBio?`, `bannerColor?`, `accentColor?`, `avatarRing?` |
Edit from **user panel** → profile modal (Shift+click).
## Tests
```bash
cd apps/pearcord
npm run test:profile-cosmetics # PROFILE_COSMETICS_SMOKE_OK
npm run test:boosts
npm run test:boot
```