docs: Phase 38 animated stickers and v0.8.4 roadmap parity

Add STICKERS.md, mark Phase 38 and P5-4 partial complete, update parity
summary to v0.8.4, cross-link from EMOJI.md, and register pearcord-stickers
in GITEA_DEVELOPER.
This commit is contained in:
Raven Scott
2026-05-21 22:26:42 -04:00
parent 7fddf33eb3
commit 7406f9b52c
5 changed files with 81 additions and 5 deletions
+4 -1
View File
@@ -77,7 +77,10 @@ cd apps/pearcord && npm run test:emoji
npm run test:emoji-image # EMOJI_IMAGE_SMOKE_OK
```
## Stickers
Animated GIF/WebP stickers live in **`pearcord-stickers`** — see [STICKERS.md](./STICKERS.md).
## Future
- Animated stickers (APNG)
- HyperDB `@pearcord/guild-emojis` collection
+1
View File
@@ -122,6 +122,7 @@ git remote -v
| `pearcord-boosts` | Local guild cosmetic boosts + `GUILD_BOOST_UPDATE` gossip |
| `pearcord-voice-capture` | Mic PCM feed from UI into voice media |
| `pearcord-display-capture` | Display JPEG feed from UI into screen share |
| `pearcord-stickers` | Guild animated stickers + `STICKER_UPSERT` gossip |
| `pearcord-device-sync` | `pcdv_` multi-device pairing |
| `pearcord-emoji` | Guild emoji registry + `EMOJI_UPSERT` gossip |
| `pearcord-sync` | Planned Autobase bridge |
+4 -3
View File
@@ -4,13 +4,13 @@ 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.3)
## Summary (v0.8.4)
| Area | Reference product | Pearcord | Gap |
|------|-------------------|----------|-----|
| Account | Email/OAuth, cloud profile | Local username + HyperDB + **`pcdv_` device link** | No cloud identity recovery |
| Servers | Hosted guilds | P2P guild topic + local DB + **public discovery mesh** | No curated global index (fully P2P topic) |
| Text chat | Full | … **announcement** follow/cross-post, **forum**, threads, typing, **guild emoji** | animated stickers |
| Text chat | Full | … **announcement** follow/cross-post, **forum**, threads, typing, **guild emoji**, **animated stickers** | sticker packs / Lottie |
| DMs | E2E optional | … **sidebar previews**, **group DM (310)**, read-on-open | Full E2E group vault |
| Voice/video | WebRTC SFU | Voice + **stage** + **Opus audio** + **mic capture** + **P2P screen share** + **display capture** | HD video stream, SFU scale |
| Moderation | Roles, bans, automod | Kick, ban, timeout, roles UI, slowmode, audit+gossip; **local automod** (keywords, mentions, invites); step-up PIN | ML/heuristic cloud automod |
@@ -110,8 +110,9 @@ Phases **02** and **4** are largely complete; **3** (live audio) and **5** (n
| P35-1 | Guild cosmetic boosts (local Nitro-style) | [x] v0.8.1 |
| P36-1 | Microphone capture bridge (Web Audio → P2P voice) | [x] v0.8.2 |
| P37-1 | Display capture for screen share (getDisplayMedia → P2P frames) | [x] v0.8.3 |
| P38-1 | Animated guild stickers (GIF/WebP, STICKER_UPSERT) | [x] v0.8.4 |
**Next tranches:** Animated stickers · remote announcement hub · per-user boost ledger · onboarding smoke expansion.
**Next tranches:** Remote announcement hub · per-user boost ledger · sticker packs · UI flow smoke.
When Phase 5 checklist is `[x]`, copy open items here into tracked rows in `PLATFORM_ROADMAP.md`.
+13 -1
View File
@@ -85,7 +85,7 @@ Track implementation status here. Update checkboxes as phases land.
| P5-1 | Server discovery (P2P topic directory) | [~] public listings mesh + explore UI + filters + TTL prune |
| P5-2 | Notifications + unread badges | [x] inbox + prefs + desktop + guild badges |
| P5-3 | Search (hyperdb indexes) | [~] guild-wide local search + channel filter |
| P5-4 | Emoji/sticker packs (hyperdrive) | [~] unicode + image emoji on drive |
| P5-4 | Emoji/sticker packs (hyperdrive) | [~] unicode + image emoji + animated stickers |
| P5-5 | User settings sync (hyperconf) | [~] notification + appearance prefs topics |
| P5-6 | Mobile companion (future) | [ ] |
| P5-7 | Nitro-equivalent local boosts (cosmetic) | [x] |
@@ -149,6 +149,7 @@ See [PEARCORD_PARITY.md](./PEARCORD_PARITY.md) for full gap analysis and Phases
| `pearcord-boosts` | Local guild cosmetic boosts + `GUILD_BOOST_UPDATE` gossip |
| `pearcord-voice-capture` | Mic PCM bridge from UI into voice media |
| `pearcord-display-capture` | Display JPEG feed from UI into screen share |
| `pearcord-stickers` | Guild animated stickers + `STICKER_UPSERT` gossip |
---
@@ -241,6 +242,16 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
---
### Phase 38 — Animated stickers (v0.8.4)
| ID | Item | Status |
|----|------|--------|
| P38-1 | `pearcord-stickers` module + `STICKER_UPSERT` RPC 49 | [x] |
| P38-2 | Platform APIs + picker tabs + inline animated render | [x] |
| P38-3 | smoke-stickers + STICKERS.md + onboarding emoji asserts | [x] |
---
### Phase 37 — Display capture for screen share (v0.8.3)
| ID | Item | Status |
@@ -464,6 +475,7 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
### Changelog
- **2026-05-21** — v0.8.4: animated guild stickers (`pearcord-stickers`, STICKER_UPSERT RPC 49, picker tabs, smoke-stickers, STICKERS.md).
- **2026-05-21** — v0.8.3: display capture for screen share (`pearcord-display-capture`, getDisplayMedia JPEG @ 2 fps, smoke-display-capture, DISPLAY_CAPTURE.md).
- **2026-05-21** — v0.8.2: microphone capture (`pearcord-voice-capture`, UI Web Audio → IPC, mic/synthetic indicator, smoke-voice-capture, VOICE_CAPTURE.md).
- **2026-05-21** — v0.8.1: guild cosmetic boosts (`pearcord-boosts`, RPC 48, levels 03, server settings + UI accents, smoke-boosts, GUILD_BOOSTS.md).
+59
View File
@@ -0,0 +1,59 @@
# Guild animated stickers (v0.8.4+)
P2P **animated stickers** (GIF/WebP/PNG up to 512 KB) — separate from unicode/image emoji, synced via `STICKER_UPSERT` (RPC 49).
## Module
`pearcord-stickers``PearcordStickerRegistry` (JsonStore per guild).
## Upload
Mods with **Manage Server** add stickers from the composer **😀** picker → **Stickers** tab → **+ Sticker**.
| Field | Rule |
|-------|------|
| Name | `a-z`, `0-9`, `_` (232 chars) |
| File | GIF, WebP, or PNG — max **512 KB** |
| Mesh | `STICKER_UPSERT` + `ATTACHMENT_META` on Hyperdrive |
## Messages
Type `:sticker_name:` in chat — renders as an animated `<img class="inline-sticker">` when the blob is cached locally.
## Gossip
| RPC | ID | Payload |
|-----|-----|---------|
| `STICKER_UPSERT` | 49 | Full sticker row (`guildId`, `name`, `attachmentId`, `mimeType`, `animated`, …) |
## Platform API
| Method | Description |
|--------|-------------|
| `upsertGuildSticker({ name, description?, image? })` | Mod only |
| `listGuildStickers()` | List for active guild |
| `readStickerImage(nameOrAttachmentId)` | Preview bytes |
View: `guildStickers`.
## IPC
| type | fields |
|------|--------|
| `upsert-guild-sticker` | `name`, `description?`, `image?` (`dataBase64`, `filename`, `mimeType`) |
| `request-emoji-image` | Reused for sticker attachment previews |
## Tests
```bash
cd apps/pearcord
npm run test:stickers # STICKERS_SMOKE_OK
npm run test:emoji-image
npm run test:boot
```
## Future
- Sticker packs / categories
- Sticker-only message type (no `:name:` token)
- Lottie / APNG first-class