From 1c89aadec0390c8e2188184419314ad13e3aa763 Mon Sep 17 00:00:00 2001 From: Raven Scott Date: Thu, 21 May 2026 23:30:30 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20v0.8.14=20profile=20cosmetics=20?= =?UTF-8?q?=E2=80=94=20Phase=2048,=20PROFILE=5FCOSMETICS.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Roadmap Phase 48 complete, parity P48-1, module/repo registry, automated testing entry for npm run test:profile-cosmetics. Co-authored-by: Cursor --- AUTOMATED_TESTING.md | 1 + GITEA_DEVELOPER.md | 1 + MODULES.md | 1 + PEARCORD_PARITY.md | 5 ++-- PLATFORM_ROADMAP.md | 12 +++++++++ PROFILE_COSMETICS.md | 60 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 PROFILE_COSMETICS.md diff --git a/AUTOMATED_TESTING.md b/AUTOMATED_TESTING.md index c81a657..077dfa7 100644 --- a/AUTOMATED_TESTING.md +++ b/AUTOMATED_TESTING.md @@ -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`) | diff --git a/GITEA_DEVELOPER.md b/GITEA_DEVELOPER.md index c0188a0..39cc7b4 100644 --- a/GITEA_DEVELOPER.md +++ b/GITEA_DEVELOPER.md @@ -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 | diff --git a/MODULES.md b/MODULES.md index eb11e6a..759607c 100644 --- a/MODULES.md +++ b/MODULES.md @@ -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 | diff --git a/PEARCORD_PARITY.md b/PEARCORD_PARITY.md index 5933b0d..c843fe5 100644 --- a/PEARCORD_PARITY.md +++ b/PEARCORD_PARITY.md @@ -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 **0–2** 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`. diff --git a/PLATFORM_ROADMAP.md b/PLATFORM_ROADMAP.md index 7f65ba0..4f9a12b 100644 --- a/PLATFORM_ROADMAP.md +++ b/PLATFORM_ROADMAP.md @@ -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 54–55, pack-grouped picker, smoke-emoji-packs, P5-4 complete). diff --git a/PROFILE_COSMETICS.md b/PROFILE_COSMETICS.md new file mode 100644 index 0000000..f255a76 --- /dev/null +++ b/PROFILE_COSMETICS.md @@ -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 +```