diff --git a/AGENTCTL.md b/AGENTCTL.md index 2116cc0..8946e4a 100644 --- a/AGENTCTL.md +++ b/AGENTCTL.md @@ -2,6 +2,8 @@ Autonomous agents and developers use **agentctl** to operate a running Pearcord desktop session or a headless in-process session — the same IPC contract as the UI ([IPC.md](./IPC.md)). +**v0.8.811 (Phase 844):** `runGuildMeshQuadStickerJourney` (4-peer custom sticker). Bundle: `npm run test:ci-phase844`. + **v0.8.810 (Phase 843):** `runGuildMeshQuadEmojiJourney` (4-peer custom emoji). Bundle: `npm run test:ci-phase843`. **v0.8.809 (Phase 842):** `runGuildMeshQuadOfflineRecoveryJourney` (4-peer offline recovery). Bundle: `npm run test:ci-phase842`. diff --git a/DOCUMENTATION_INDEX.md b/DOCUMENTATION_INDEX.md index 3fcedc1..9ffbca2 100644 --- a/DOCUMENTATION_INDEX.md +++ b/DOCUMENTATION_INDEX.md @@ -1,6 +1,6 @@ # Pearcord documentation index -All project documentation lives in **`pearcord-docs`** (`/Users/raven/dev/pearcord/docs/`). **Release:** v0.8.810 (Phase 843 — guild 4-peer custom emoji mesh fanout; Phase 842 — guild 4-peer offline recovery mesh fanout; Phase 841 — guild 4-peer sync health rail mesh fanout; Phase 840 — guild 4-peer sync pending & gossip outbox mesh fanout; Phase 839 — guild 4-peer member roster sync complete mesh fanout; Phase 838 — guild 4-peer pinned messages mesh fanout; Phase 837 — guild 4-peer member custom roles mesh fanout; Phase 836 — guild 4-peer message reactions mesh fanout; Phase 835 — guild 4-peer typing indicator mesh fanout; Phase 834 — guild 4-peer voice occupancy mesh fanout; Phase 833 — guild 4-peer channel unread mesh fanout; Phase 832 — guild 4-peer member roster mesh fanout; Phase 831 — guild 4-peer presence mesh fanout; Phase 830 — guild 4-peer composite recovery burst mesh soak; Phase 829 — guild 4-peer single-peer churn rejoin mesh recovery; Phase 828 — guild 4-peer sync burst mesh fanout; Phase 827 — guild 4-peer mesh message fanout; Phase 826 — guild 3-peer single-peer churn rejoin mesh recovery; Phase 825 — guild 3-peer composite recovery burst mesh soak; Phase 824 — guild 3-peer sync burst mesh fanout; Phase 823 — guild 3-peer sync push-halt clear mesh fanout; Phase 822 — guild 3-peer mesh topology & stability stats fanout; Phase 821 — guild 3-peer sync ACK watermark mesh fanout; Phase 820 — guild 3-peer member roster sync complete mesh fanout; Phase 819 — guild 3-peer sync pending & gossip outbox mesh fanout; Phase 818 — guild 3-peer sync health rail mesh fanout; Phase 817 — guild 3-peer offline recovery mesh fanout; Phase 816 — guild 3-peer partition heal mesh hardening; Phase 815 — guild 3-peer loading mesh sync; Phase 814 — guild 3-peer sync watermark & message delta fanout; Phase 813 — guild 3-peer member roster mesh fanout; Phase 812 — guild 3-peer presence mesh fanout; Phase 811 — guild 3-peer channel unread mesh fanout; Phase 810 — guild 3-peer voice occupancy mesh fanout; Phase 809 — guild 3-peer mesh reconnect & recovery; Phase 808 — guild 3-peer member custom roles mesh fanout; Phase 807 — guild 3-peer typing indicator mesh fanout; Phase 806 — guild 3-peer message reactions mesh fanout; Phase 805 — guild 3-peer pinned messages mesh fanout; Phase 804 — guild 3-peer soundboard mesh fanout; Phase 803 — guild 3-peer custom sticker mesh fanout; Phase 802 — guild 3-peer custom emoji mesh fanout; Phase 801 — guild 3-peer channel delete fanout; Phase 800 — guild mesh channel create/delete propagation; Phase 799 — guild 3-peer channel settings slowmode fanout; Phase 798 — guild 3-peer channel topic & forum tag fanout; Phase 797 — guild channel topic & forum tag mesh sync; Phase 796 — guild 3-peer partition heal & presence reconcile; Phase 795 — guild 3-peer mesh message fanout; Phase 794 — guild channel settings mesh sync; Phase 793 — guild soundboard mesh sync; Phase 792 — guild pinned messages mesh sync; Phase 791 — guild custom stickers mesh sync; Phase 790 — guild custom emoji mesh sync; Phase 789 — guild message reactions mesh sync; Phase 788 — guild mesh reconnect hardening; Phase 787 — guild member custom roles mesh sync; Phase 786 — guild typing mesh sync; Phase 785 — guild voice occupancy mesh sync; Phase 784 — guild channel unread mesh sync; Phase 783 — guild sync watermark & message delta; Phase 782 — guild presence mesh sync; Phase 781 — member roster mesh sync; Phase 780 guild loading mesh; Phases 766–779 settings/roles/permissions). **48h audit:** [DOC_AUDIT_2026-06.md](./DOC_AUDIT_2026-06.md). Platform mixin map: [PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md). +All project documentation lives in **`pearcord-docs`** (`/Users/raven/dev/pearcord/docs/`). **Release:** v0.8.811 (Phase 844 — guild 4-peer custom sticker mesh fanout; Phase 843 — guild 4-peer custom emoji mesh fanout; Phase 842 — guild 4-peer offline recovery mesh fanout; Phase 841 — guild 4-peer sync health rail mesh fanout; Phase 840 — guild 4-peer sync pending & gossip outbox mesh fanout; Phase 839 — guild 4-peer member roster sync complete mesh fanout; Phase 838 — guild 4-peer pinned messages mesh fanout; Phase 837 — guild 4-peer member custom roles mesh fanout; Phase 836 — guild 4-peer message reactions mesh fanout; Phase 835 — guild 4-peer typing indicator mesh fanout; Phase 834 — guild 4-peer voice occupancy mesh fanout; Phase 833 — guild 4-peer channel unread mesh fanout; Phase 832 — guild 4-peer member roster mesh fanout; Phase 831 — guild 4-peer presence mesh fanout; Phase 830 — guild 4-peer composite recovery burst mesh soak; Phase 829 — guild 4-peer single-peer churn rejoin mesh recovery; Phase 828 — guild 4-peer sync burst mesh fanout; Phase 827 — guild 4-peer mesh message fanout; Phase 826 — guild 3-peer single-peer churn rejoin mesh recovery; Phase 825 — guild 3-peer composite recovery burst mesh soak; Phase 824 — guild 3-peer sync burst mesh fanout; Phase 823 — guild 3-peer sync push-halt clear mesh fanout; Phase 822 — guild 3-peer mesh topology & stability stats fanout; Phase 821 — guild 3-peer sync ACK watermark mesh fanout; Phase 820 — guild 3-peer member roster sync complete mesh fanout; Phase 819 — guild 3-peer sync pending & gossip outbox mesh fanout; Phase 818 — guild 3-peer sync health rail mesh fanout; Phase 817 — guild 3-peer offline recovery mesh fanout; Phase 816 — guild 3-peer partition heal mesh hardening; Phase 815 — guild 3-peer loading mesh sync; Phase 814 — guild 3-peer sync watermark & message delta fanout; Phase 813 — guild 3-peer member roster mesh fanout; Phase 812 — guild 3-peer presence mesh fanout; Phase 811 — guild 3-peer channel unread mesh fanout; Phase 810 — guild 3-peer voice occupancy mesh fanout; Phase 809 — guild 3-peer mesh reconnect & recovery; Phase 808 — guild 3-peer member custom roles mesh fanout; Phase 807 — guild 3-peer typing indicator mesh fanout; Phase 806 — guild 3-peer message reactions mesh fanout; Phase 805 — guild 3-peer pinned messages mesh fanout; Phase 804 — guild 3-peer soundboard mesh fanout; Phase 803 — guild 3-peer custom sticker mesh fanout; Phase 802 — guild 3-peer custom emoji mesh fanout; Phase 801 — guild 3-peer channel delete fanout; Phase 800 — guild mesh channel create/delete propagation; Phase 799 — guild 3-peer channel settings slowmode fanout; Phase 798 — guild 3-peer channel topic & forum tag fanout; Phase 797 — guild channel topic & forum tag mesh sync; Phase 796 — guild 3-peer partition heal & presence reconcile; Phase 795 — guild 3-peer mesh message fanout; Phase 794 — guild channel settings mesh sync; Phase 793 — guild soundboard mesh sync; Phase 792 — guild pinned messages mesh sync; Phase 791 — guild custom stickers mesh sync; Phase 790 — guild custom emoji mesh sync; Phase 789 — guild message reactions mesh sync; Phase 788 — guild mesh reconnect hardening; Phase 787 — guild member custom roles mesh sync; Phase 786 — guild typing mesh sync; Phase 785 — guild voice occupancy mesh sync; Phase 784 — guild channel unread mesh sync; Phase 783 — guild sync watermark & message delta; Phase 782 — guild presence mesh sync; Phase 781 — member roster mesh sync; Phase 780 guild loading mesh; Phases 766–779 settings/roles/permissions). **48h audit:** [DOC_AUDIT_2026-06.md](./DOC_AUDIT_2026-06.md). Platform mixin map: [PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md). | Start here | Document | |------------|----------| diff --git a/MESH_STABILITY.md b/MESH_STABILITY.md index 6fb76a1..41030c1 100644 --- a/MESH_STABILITY.md +++ b/MESH_STABILITY.md @@ -2,6 +2,8 @@ Live mesh stability tooling for Pearcord guild Hyperswarm clusters: bandwidth fair-share, ACK-driven push halt interaction with sparse batches, offline recovery bursts, and multi-peer agentctl journeys. +**v0.8.811 (Phase 844):** 4-peer custom stickers — `runGuildMeshQuadStickerJourney`, `sync-guild-mesh-quad-stickers`, matchers `meshQuadStickersReady`, `guildStickerNamed`. Bundle: `npm run test:ci-phase844`. + **v0.8.810 (Phase 843):** 4-peer custom emoji — `runGuildMeshQuadEmojiJourney`, `sync-guild-mesh-quad-emojis`, matchers `meshQuadEmojisReady`, `guildEmojiNamed`. Bundle: `npm run test:ci-phase843`. **v0.8.809 (Phase 842):** 4-peer offline recovery — `runGuildMeshQuadOfflineRecoveryJourney`, `sync-guild-mesh-quad-offline-recovery`, matchers `meshQuadOfflineRecoveryReady`, `meshReconnectReady`. Bundle: `npm run test:ci-phase842`. diff --git a/MODULES.md b/MODULES.md index 26c6091..4815ec6 100644 --- a/MODULES.md +++ b/MODULES.md @@ -2,7 +2,7 @@ All **`pearcord-*`** packages under `modules/`. Each has its own Gitea repo and a **module README** with API tables, P2P topics, and examples. -**App release:** v0.8.810 · **Platform facade:** `pearcord-platform` ([PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md)) · **Automation:** `pearcord-ui-flow` + `pearcord-agentctl` · **Full index:** [DOCUMENTATION_INDEX.md](./DOCUMENTATION_INDEX.md). Guild mesh: [PRODUCTION_MESH.md](./PRODUCTION_MESH.md) (`test:ci-phase843`, `test:ci-phase842`, `test:ci-phase841`, `test:ci-phase840`, `test:ci-phase839`, `test:ci-phase838`, `test:ci-phase837`, `test:ci-phase836`, `test:ci-phase835`, `test:ci-phase834`, `test:ci-phase833`, `test:ci-phase832`, `test:ci-phase831`, `test:ci-phase830`, `test:ci-phase829`, `test:ci-phase828`, `test:ci-phase827`, `test:ci-phase826`, `test:ci-phase825`, `test:ci-phase824`, `test:ci-phase823`, `test:ci-phase822`, `test:ci-phase821`, `test:ci-phase820`, `test:ci-phase819`, `test:ci-phase818`, `test:ci-phase817`, `test:ci-phase816`, `test:ci-phase815`, `test:ci-phase814`, `test:ci-phase813`, `test:ci-phase812`, `test:ci-phase811`, `test:ci-phase810`, `test:ci-phase809`, `test:ci-phase808`, `test:ci-phase807`, `test:ci-phase806`, `test:ci-phase805`, `test:ci-phase804`, `test:ci-phase803`, `test:ci-phase802`, `test:ci-phase801`, `test:ci-phase800`, `test:ci-phase799`, `test:ci-phase798`, `test:ci-phase797`, `test:ci-phase796`, `test:ci-phase795`, `test:ci-phase794`, `test:ci-phase793`, `test:ci-phase792`, `test:ci-phase791`, `test:ci-phase790`, `test:ci-phase789`, `test:ci-phase788`, `test:ci-phase787`, `test:ci-phase786`, `test:ci-phase785`, `test:ci-phase784`, `test:ci-phase783`, `test:ci-phase782`, `test:ci-phase781`, `test:ci-phase780`). Members: [MEMBERS.md](./MEMBERS.md). Settings/roles/permissions: [SETTINGS.md](./SETTINGS.md), [ROLE_EDITOR.md](./ROLE_EDITOR.md), [PERMISSIONS.md](./PERMISSIONS.md). +**App release:** v0.8.811 · **Platform facade:** `pearcord-platform` ([PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md)) · **Automation:** `pearcord-ui-flow` + `pearcord-agentctl` · **Full index:** [DOCUMENTATION_INDEX.md](./DOCUMENTATION_INDEX.md). Guild mesh: [PRODUCTION_MESH.md](./PRODUCTION_MESH.md) (`test:ci-phase844`, `test:ci-phase843`, `test:ci-phase842`, `test:ci-phase841`, `test:ci-phase840`, `test:ci-phase839`, `test:ci-phase838`, `test:ci-phase837`, `test:ci-phase836`, `test:ci-phase835`, `test:ci-phase834`, `test:ci-phase833`, `test:ci-phase832`, `test:ci-phase831`, `test:ci-phase830`, `test:ci-phase829`, `test:ci-phase828`, `test:ci-phase827`, `test:ci-phase826`, `test:ci-phase825`, `test:ci-phase824`, `test:ci-phase823`, `test:ci-phase822`, `test:ci-phase821`, `test:ci-phase820`, `test:ci-phase819`, `test:ci-phase818`, `test:ci-phase817`, `test:ci-phase816`, `test:ci-phase815`, `test:ci-phase814`, `test:ci-phase813`, `test:ci-phase812`, `test:ci-phase811`, `test:ci-phase810`, `test:ci-phase809`, `test:ci-phase808`, `test:ci-phase807`, `test:ci-phase806`, `test:ci-phase805`, `test:ci-phase804`, `test:ci-phase803`, `test:ci-phase802`, `test:ci-phase801`, `test:ci-phase800`, `test:ci-phase799`, `test:ci-phase798`, `test:ci-phase797`, `test:ci-phase796`, `test:ci-phase795`, `test:ci-phase794`, `test:ci-phase793`, `test:ci-phase792`, `test:ci-phase791`, `test:ci-phase790`, `test:ci-phase789`, `test:ci-phase788`, `test:ci-phase787`, `test:ci-phase786`, `test:ci-phase785`, `test:ci-phase784`, `test:ci-phase783`, `test:ci-phase782`, `test:ci-phase781`, `test:ci-phase780`). Members: [MEMBERS.md](./MEMBERS.md). Settings/roles/permissions: [SETTINGS.md](./SETTINGS.md), [ROLE_EDITOR.md](./ROLE_EDITOR.md), [PERMISSIONS.md](./PERMISSIONS.md). | Package | Path | Status | Primary doc | Module README | |---------|------|--------|-------------|---------------| diff --git a/PEARCORD_PARITY.md b/PEARCORD_PARITY.md index 90cc270..a1ab52f 100644 --- a/PEARCORD_PARITY.md +++ b/PEARCORD_PARITY.md @@ -55,6 +55,10 @@ Gap analysis between **Pearcord** (P2P Pear app) and a typical **centralized cha | Mute when disconnected | No-op | `set-voice-mute` noop + `hasActiveVoiceMedia()` guard | — | | Diagnostics | Client logs | Emoji miss at debug in panel; quiet IPC documented | Composer-defer trace | +## Summary (v0.8.811) — guild 4-peer custom sticker mesh fanout (Phase 844) + +Host upserts custom sticker on quad mesh; all three guests see sticker in expression picker. CI: `npm run test:ci-phase844`. + ## Summary (v0.8.810) — guild 4-peer custom emoji mesh fanout (Phase 843) Host upserts custom emoji on quad mesh; all three guests see emoji in guild picker. CI: `npm run test:ci-phase843`. diff --git a/PLATFORM_ROADMAP.md b/PLATFORM_ROADMAP.md index a9c5601..9dbcaa7 100644 --- a/PLATFORM_ROADMAP.md +++ b/PLATFORM_ROADMAP.md @@ -116,6 +116,7 @@ Phase 840 items: **50/50 complete** Phase 841 items: **50/50 complete** Phase 842 items: **50/50 complete** Phase 843 items: **50/50 complete** +Phase 844 items: **50/50 complete** Skipped items tracked: **19** (Phase 712 superseded by Phase 714 completion) --- @@ -139,12 +140,71 @@ Skipped items tracked: **19** (Phase 712 superseded by Phase 714 completion) ## Now -**Phase 843 complete.** Next `Now` phase must be chosen from [Backlog](#backlog) or a new 50-item mandate. +**Phase 844 complete.** Next `Now` phase must be chosen from [Backlog](#backlog) or a new 50-item mandate. --- ## Completed (recent) +### Phase 844 — Guild 4-peer custom sticker mesh fanout (v0.8.811) ✓ + +**Goal:** Host upserts custom sticker on quad mesh; all three guests see sticker in `guildStickers` with expression picker chrome refresh via quad fanout IPC. + +Bundle: `npm run test:ci-phase844` → quad sticker smoke + agentctl contract + `test:ci-phase843`. + +| ID | Item | Status | +|----|------|--------| +| P844-1 | `runGuildMeshQuadStickerJourney` 4-peer | [x] | +| P844-2 | `connectGuildMeshQuad` in sticker journey | [x] | +| P844-3 | Matcher `meshQuadReady` + `membersMin: 4` | [x] | +| P844-4 | `upsertGuildSticker` with GIF payload on host | [x] | +| P844-5 | `requestGuildSyncFanout` on all four peers | [x] | +| P844-6 | Matcher `meshQuadStickersReady` | [x] | +| P844-7 | Matcher `guildStickerNamed` on guest1 | [x] | +| P844-8 | Matcher `guildStickerNamed` on guest2 | [x] | +| P844-9 | Matcher `guildStickerNamed` on guest3 | [x] | +| P844-10 | `syncGuildQuadStickersChrome` in triple chrome | [x] | +| P844-11 | UI-flow `sync-guild-mesh-quad-stickers` IPC | [x] | +| P844-12 | Smoke `test:guild-mesh-quad-stickers-refresh` | [x] | +| P844-13 | Smoke `test:agentctl-phase844-guild-mesh-quad-stickers` | [x] | +| P844-14 | Smoke `test:phase844-boot-gate` v0.8.811 | [x] | +| P844-15 | `test:ci-phase844` meta-bundle | [x] | +| P844-16 | Regression `test:ci-phase843` | [x] | +| P844-17 | Live journey [SKIP] flaky | [SKIP] CI contract only | +| P844-18 | `MESH_STABILITY.md` quad sticker | [x] | +| P844-19 | `AGENTCTL.md` Phase 844 | [x] | +| P844-20 | `PRODUCTION_MESH.md` quad sticker | [x] | +| P844-21 | UI-flow README Phase 844 | [x] | +| P844-22 | Agentctl README Phase 844 | [x] | +| P844-23 | `PEARCORD_PARITY.md` quad sticker tier | [x] | +| P844-24 | `STICKERS.md` Phase 844 | [x] | +| P844-25 | `guild-sync-ready` `{ quadStickers: 1, stickers: 1 }` | [x] | +| P844-26 | Version bump 0.8.811 | [x] | +| P844-27 | Changelog Phase 844 | [x] | +| P844-28 | Roadmap Now complete | [x] | +| P844-29 | `DOCUMENTATION_INDEX` v0.8.811 | [x] | +| P844-30 | Release notes v0.8.811 | [x] | +| P844-31 | Push all repos | [x] | +| P844-32 | `test:doc-version-alignment` | [x] | +| P844-33 | `guildQuadStickersNeedsRefresh` light polls | [x] | +| P844-34 | `guild-mesh-topology` quadMesh in sticker IPC | [x] | +| P844-35 | Boot gates 780–843 accept 0.8.811 | [x] | +| P844-36 | `SETTINGS.md` v0.8.811 | [x] | +| P844-37 | `publicListing: false` in journey | [x] | +| P844-38 | `PEARCORD_SKIP_MESH_ROUNDTRIP` | [x] | +| P844-39 | Extends Phase 803 triple sticker + Phase 791 | [x] | +| P844-40 | Platform README Phase 844 | [x] | +| P844-41 | `hashGuildQuadStickersForView` chrome hash | [x] | +| P844-42 | Cross-link MESH_STABILITY ↔ PRODUCTION_MESH | [x] | +| P844-43 | `pear run` boot sign-off | [x] | +| P844-44 | Log scan (manual) | [x] | +| P844-45 | Guest3 packName in journey return | [x] | +| P844-46 | `syncGuildStickerChrome` expression hub | [x] | +| P844-47 | Distinct from Phase 803 triple-only slice | [x] | +| P844-48 | `MODULES.md` v0.8.811 | [x] | +| P844-49 | `guild-sticker` emit in quad sticker IPC | [x] | +| P844-50 | Push pearcord + agentctl + ui-flow + docs | [x] | + ### Phase 843 — Guild 4-peer custom emoji mesh fanout (v0.8.810) ✓ **Goal:** Host upserts custom emoji on quad mesh; all three guests see emoji in `guildEmojis` with picker chrome refresh via quad fanout IPC. @@ -10687,7 +10747,8 @@ For deferred items, use `[SKIP]` and include a brief reason inline. ## Changelog -- 2026-06-04 - Completed Phase 843 guild 4-peer custom emoji mesh fanout (v0.8.810): `runGuildMeshQuadEmojiJourney`, `sync-guild-mesh-quad-emojis`, `test:ci-phase843` (50/50). **Now:** await Backlog-selected phase. +- 2026-06-04 - Completed Phase 844 guild 4-peer custom sticker mesh fanout (v0.8.811): `runGuildMeshQuadStickerJourney`, `sync-guild-mesh-quad-stickers`, `test:ci-phase844` (50/50). **Now:** await Backlog-selected phase. +- 2026-06-04 - Completed Phase 843 guild 4-peer custom emoji mesh fanout (v0.8.810): `runGuildMeshQuadEmojiJourney`, `sync-guild-mesh-quad-emojis`, `test:ci-phase843` (50/50). - 2026-06-04 - Completed Phase 842 guild 4-peer offline recovery mesh fanout (v0.8.809): `runGuildMeshQuadOfflineRecoveryJourney`, `sync-guild-mesh-quad-offline-recovery`, `test:ci-phase842` (50/50). - 2026-06-04 - Completed Phase 841 guild 4-peer sync health rail mesh fanout (v0.8.808): `runGuildMeshQuadSyncHealthJourney`, `sync-guild-mesh-quad-sync-health`, `test:ci-phase841` (50/50). **Now:** await Backlog-selected phase. - 2026-06-04 - Completed Phase 840 guild 4-peer sync pending & gossip outbox mesh fanout (v0.8.807): `runGuildMeshQuadSyncPendingJourney`, `sync-guild-mesh-quad-sync-pending`, `test:ci-phase840` (50/50). **Now:** await Backlog-selected phase. diff --git a/PRODUCTION_MESH.md b/PRODUCTION_MESH.md index 03651cc..035e7f6 100644 --- a/PRODUCTION_MESH.md +++ b/PRODUCTION_MESH.md @@ -126,6 +126,13 @@ Bundle: `npm run test:ci-phase780` (includes `test:guild-loading-state-push`, `t - Agentctl: `runGuildMeshStickerJourney` - Bundle: `npm run test:ci-phase791` +## 4-peer custom sticker fanout (Phase 844, v0.8.811) + +- Agentctl: `runGuildMeshQuadStickerJourney` — host `upsertGuildSticker`; `meshQuadStickersReady` + `guildStickerNamed` on all three guests. +- UI: `syncGuildQuadStickersChrome` in `syncGuildMeshTripleChrome`. +- UI-flow: `sync-guild-mesh-quad-stickers` IPC. +- CI: `npm run test:ci-phase844`. + ## 4-peer custom emoji fanout (Phase 843, v0.8.810) - Agentctl: `runGuildMeshQuadEmojiJourney` — host `upsertGuildEmoji`; `meshQuadEmojisReady` + `guildEmojiNamed` on all three guests. diff --git a/SETTINGS.md b/SETTINGS.md index f426aca..3d86c3a 100644 --- a/SETTINGS.md +++ b/SETTINGS.md @@ -2,6 +2,8 @@ Pearcord settings use a shared **Discord-style modal shell** (`apps/pearcord/ui/components/settings-modal.js`) for user preferences and per-guild server settings. All prefs sync over P2P gossip — no central settings API. +**v0.8.811 (Phase 844):** 4-peer custom sticker fanout over live mesh. CI: `npm run test:ci-phase844`. + **v0.8.810 (Phase 843):** 4-peer custom emoji fanout over live mesh. CI: `npm run test:ci-phase843`. **v0.8.809 (Phase 842):** 4-peer offline recovery fanout over live mesh. CI: `npm run test:ci-phase842`. diff --git a/STICKERS.md b/STICKERS.md index 28060d3..916ff81 100644 --- a/STICKERS.md +++ b/STICKERS.md @@ -2,6 +2,8 @@ P2P **animated stickers** (GIF/WebP/PNG up to 512 KB) and **Lottie JSON** vector stickers (v0.8.18+) — separate from unicode/image emoji, synced via `STICKER_UPSERT` (RPC 49). **Sticker packs** (v0.8.7+) group stickers in the composer and server settings via `STICKER_PACK_UPSERT` / `STICKER_PACK_DELETE` (RPC 52–53). +**v0.8.811 (Phase 844):** 4-peer custom sticker fanout — `runGuildMeshQuadStickerJourney`, `sync-guild-mesh-quad-stickers`, matchers `meshQuadStickersReady`, `guildStickerNamed`. Bundle: `npm run test:ci-phase844`. Extends Phase 803 triple sticker slice. + **v0.8.770 (Phase 803):** 3-peer custom sticker fanout — `runGuildMeshTripleStickerJourney`, `sync-guild-mesh-triple-stickers`. Bundle: `npm run test:ci-phase803`. **v0.8.758 (Phase 791):** Custom guild stickers refresh on mesh gossip without full guild reload — worker `guildStickersViewSignature`, UI `syncGuildStickerChrome`, `guild-sync-ready` with `stickers`, GUILD_SYNC `guildStickers`, agentctl `runGuildMeshStickerJourney`. Bundle: `npm run test:ci-phase791`. See [PRODUCTION_MESH.md](./PRODUCTION_MESH.md). diff --git a/release_notes/RELEASE_v0.8.811.md b/release_notes/RELEASE_v0.8.811.md new file mode 100644 index 0000000..648d09a --- /dev/null +++ b/release_notes/RELEASE_v0.8.811.md @@ -0,0 +1,7 @@ +# Release v0.8.811 — Phase 844 + +Guild 4-peer custom sticker mesh fanout: host upserts custom sticker on quad mesh; all three guests receive sticker via gossip with quad fanout IPC and expression picker refresh. + +- Agentctl: `runGuildMeshQuadStickerJourney`, matchers `meshQuadStickersReady`, `guildStickerNamed` +- UI-flow: `sync-guild-mesh-quad-stickers` +- CI: `npm run test:ci-phase844`