docs: complete Phase 685 and open Phase 686 automation parity (v0.8.660)

Mark all P685 items complete, move Phase 685 to Completed, add Phase 686
automation hooks & digest relay (50 items, v0.8.661). Update WEBHOOKS.md,
INTEGRATIONS.md, RELEASE_v0.8.660.md, and PLATFORM_ROADMAP changelog/stats.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-06-03 00:26:53 -04:00
co-authored by Cursor
parent e9fc08632f
commit bf49429a14
4 changed files with 130 additions and 55 deletions
+2
View File
@@ -2,6 +2,8 @@
Discord [Integrations](https://docs.discord.com/developers/docs/intro) rely on centralized webhooks and OAuth. Pearcord uses **local Pear workers**, **mesh gossip**, and **signed bot tokens** — no HTTP callback URLs.
**v0.8.660 (Phase 685):** Webhook registry modal in Server settings **Integrations** — virtual window, create/delete flows, bot/slash bridge stub rows, execute builder, deep link `?webhooks=1`. See [WEBHOOKS.md](./WEBHOOKS.md). Bundle: `npm run test:ci-phase685`.
**v0.8.659 (Phase 684):** Bot registry modal in Server settings **Integrations** — virtual window, install/uninstall flows, scope builder, slash/webhook bridge stub rows, deep link `?bots=1`. See [BOTS.md](./BOTS.md). Bundle: `npm run test:ci-phase684`.
**v0.8.658 (Phase 683):** Slash registry modal in Server settings **Integrations** section — virtual window, create/delete flows, bot/webhook/managed stub rows, deep link `?slash=1`. See [SLASH_COMMANDS.md](./SLASH_COMMANDS.md). Bundle: `npm run test:ci-phase683`.
+112 -54
View File
@@ -5,8 +5,8 @@ Focused roadmap of unfinished items extracted from `PLATFORM_ROADMAP_v0.1-v0.8.6
**Legend:** `[ ]` not started
**Legend:** `[SKIP]` skip for now
Unfinished items tracked: **50** (Phase 685 in **Now**)
Platform carryover tracked: **0** (Phase 684 bot integrations & install flow parity complete)
Unfinished items tracked: **50** (Phase 686 in **Now**)
Platform carryover tracked: **0** (Phase 685 webhook integrations & channel bridge parity complete)
Skipped items tracked: **18**
---
@@ -26,68 +26,125 @@ Skipped items tracked: **18**
Primary in-flight work. Move completed items to `[x]` and add a changelog line.
### Phase 685Webhook integrations & channel bridge parity (v0.8.660)
### Phase 686Automation hooks & digest relay parity (v0.8.661)
Discord-parity webhook CRUD UX, execute bridge, dry-run relay, and agentctl regression.
Discord-parity automation hook CRUD UX, digest relay bridge, dry-run delivery, and agentctl regression.
| ID | Item | Status |
|----|------|--------|
| P685-1 | Webhook list virtual window for large channel sets | [ ] |
| P685-2 | Webhook row `aria-label` includes name + channel | [ ] |
| P685-3 | Webhook sort: name / created / last used | [ ] |
| P685-4 | Webhook filter chips: active / archived / managed | [ ] |
| P685-5 | Webhook search by name or channel | [ ] |
| P685-6 | Create webhook modal with name validation | [ ] |
| P685-7 | Delete webhook confirmation modal | [ ] |
| P685-8 | Managed webhook row lock indicator | [ ] |
| P685-9 | Webhook token reveal with optimistic UI | [ ] |
| P685-10 | Webhook avatar/color validation + preview chip | [ ] |
| P685-11 | Platform `webhook.create` span metadata extend | [ ] |
| P685-12 | Platform webhook mesh gossip dedupe keys | [ ] |
| P685-13 | Partition heal: webhook registry reconcile | [ ] |
| P685-14 | Partition heal: webhook execute cursor reconcile | [ ] |
| P685-15 | Dev overlay: **webhook-errors** filter tightened | [ ] |
| P685-16 | Dev-log clipboard `guildWebhookCount` meta extend | [ ] |
| P685-17 | Agentctl `runWebhookCreateJourney` | [ ] |
| P685-18 | Agentctl `runWebhookExecuteJourney` | [ ] |
| P685-19 | Smoke `test:phase685-webhooks` static contract | [ ] |
| P685-20 | Smoke `test:agentctl-phase685-webhooks` journey chain | [ ] |
| P685-21 | Integrate `test:ci-phase685` RELEASE_CI gate | [ ] |
| P685-22 | pear run boot gate after webhook wiring | [ ] |
| P685-23 | Docs: `WEBHOOKS.md` parity matrix update | [ ] |
| P685-24 | Module README audit: pearcord-webhooks + integrations | [ ] |
| P685-25 | UI-flow IPC: webhook modal open + composer blur | [ ] |
| P685-26 | Server settings webhook management entry | [ ] |
| P685-27 | Webhook permission inherit indicator in editor | [ ] |
| P685-28 | Webhook event groups in execute builder | [ ] |
| P685-29 | Forum webhook stub row in registry | [ ] |
| P685-30 | Announcement webhook row highlight | [ ] |
| P685-31 | Thread webhook inherit-from-parent banner | [ ] |
| P685-32 | Webhook diff live region on gossip ingest | [ ] |
| P685-33 | Guild-loading `aria-busy` on webhook modal | [ ] |
| P685-34 | Keyboard roving on webhook rows | [ ] |
| P685-35 | Mobile layout: webhook modal stack | [ ] |
| P685-36 | Empty state when no webhooks | [ ] |
| P685-37 | Cross-guild webhook list partition scope guard | [ ] |
| P685-38 | DM webhook N/A guard for guild webhook UI | [ ] |
| P685-39 | Duplicate webhook name toast copy parity | [ ] |
| P685-40 | `webhooks-ui.js` extracted modal helpers | [ ] |
| P685-41 | `webhooks-mixin.js` platform gossip + heal | [ ] |
| P685-42 | Release notes v0.8.660 draft | [ ] |
| P685-43 | Gitea release notes v0.8.660 + roadmap Phase 686 planning | [ ] |
| P685-44 | Incremental render hash for webhook modal | [ ] |
| P685-45 | Bot bridge row in webhook settings | [ ] |
| P685-46 | Managed integration lock indicator extend | [ ] |
| P685-47 | Slash webhook bridge stub row | [ ] |
| P685-48 | Webhook preset chips (logging/moderation/announce) | [ ] |
| P685-49 | Onboarding webhook deep-link parity | [ ] |
| P685-50 | Regression bundle includes phase684 bot smokes | [ ] |
| P686-1 | Automation hook list virtual window for large hook sets | [ ] |
| P686-2 | Hook row `aria-label` includes name + event type | [ ] |
| P686-3 | Hook sort: name / created / last triggered | [ ] |
| P686-4 | Hook filter chips: active / paused / managed | [ ] |
| P686-5 | Hook search by name or event type | [ ] |
| P686-6 | Create hook modal with name validation | [ ] |
| P686-7 | Delete hook confirmation modal | [ ] |
| P686-8 | Managed hook row lock indicator | [ ] |
| P686-9 | Hook delivery dry-run with optimistic UI | [ ] |
| P686-10 | Hook color/event validation + preview chip | [ ] |
| P686-11 | Platform `automation.dispatch` span metadata extend | [ ] |
| P686-12 | Platform automation mesh gossip dedupe keys | [ ] |
| P686-13 | Partition heal: automation registry reconcile | [ ] |
| P686-14 | Partition heal: digest relay cursor reconcile | [ ] |
| P686-15 | Dev overlay: **automation-errors** filter tightened | [ ] |
| P686-16 | Dev-log clipboard `guildAutomationCount` meta extend | [ ] |
| P686-17 | Agentctl `runAutomationHookCreateJourney` | [ ] |
| P686-18 | Agentctl `runDigestRelayDryRunJourney` | [ ] |
| P686-19 | Smoke `test:phase686-automation` static contract | [ ] |
| P686-20 | Smoke `test:agentctl-phase686-automation` journey chain | [ ] |
| P686-21 | Integrate `test:ci-phase686` RELEASE_CI gate | [ ] |
| P686-22 | pear run boot gate after automation wiring | [ ] |
| P686-23 | Docs: `AUTOMATION_EXPORT.md` parity matrix update | [ ] |
| P686-24 | Module README audit: pearcord-automation + integrations | [ ] |
| P686-25 | UI-flow IPC: automation modal open + composer blur | [ ] |
| P686-26 | Server settings automation management entry | [ ] |
| P686-27 | Hook permission inherit indicator in editor | [ ] |
| P686-28 | Hook event groups in dispatch builder | [ ] |
| P686-29 | Forum hook stub row in registry | [ ] |
| P686-30 | Announcement hook row highlight | [ ] |
| P686-31 | Thread hook inherit-from-parent banner | [ ] |
| P686-32 | Automation diff live region on gossip ingest | [ ] |
| P686-33 | Guild-loading `aria-busy` on automation modal | [ ] |
| P686-34 | Keyboard roving on hook rows | [ ] |
| P686-35 | Mobile layout: automation modal stack | [ ] |
| P686-36 | Empty state when no hooks | [ ] |
| P686-37 | Cross-guild hook list partition scope guard | [ ] |
| P686-38 | DM automation N/A guard for guild hook UI | [ ] |
| P686-39 | Duplicate hook name toast copy parity | [ ] |
| P686-40 | `automation-ui.js` extracted modal helpers | [ ] |
| P686-41 | `automation-mixin.js` platform gossip + heal | [ ] |
| P686-42 | Release notes v0.8.661 draft | [ ] |
| P686-43 | Gitea release notes v0.8.661 + roadmap Phase 687 planning | [ ] |
| P686-44 | Incremental render hash for automation modal | [ ] |
| P686-45 | Webhook bridge row in automation settings | [ ] |
| P686-46 | Managed integration lock indicator extend | [ ] |
| P686-47 | Worker template bridge stub row | [ ] |
| P686-48 | Hook preset chips (logging/moderation/digest) | [ ] |
| P686-49 | Onboarding automation deep-link parity | [ ] |
| P686-50 | Regression bundle includes phase685 webhook smokes | [ ] |
---
## Completed (recent)
### Phase 685 — Webhook integrations & channel bridge parity (v0.8.660)
Bundle: `npm run test:ci-phase685`. `webhooks-ui.js` + platform `webhooks-mixin.js`, webhook registry modal, create/delete/execute flows, agentctl create/execute journeys.
| ID | Item | Status |
|----|------|--------|
| P685-1 | Webhook list virtual window for large channel sets | [x] |
| P685-2 | Webhook row `aria-label` includes name + channel | [x] |
| P685-3 | Webhook sort: name / created / last used | [x] |
| P685-4 | Webhook filter chips: active / archived / managed | [x] |
| P685-5 | Webhook search by name or channel | [x] |
| P685-6 | Create webhook modal with name validation | [x] |
| P685-7 | Delete webhook confirmation modal | [x] |
| P685-8 | Managed webhook row lock indicator | [x] |
| P685-9 | Webhook token reveal with optimistic UI | [x] |
| P685-10 | Webhook avatar/color validation + preview chip | [x] |
| P685-11 | Platform `webhook.create` span metadata extend | [x] |
| P685-12 | Platform webhook mesh gossip dedupe keys | [x] |
| P685-13 | Partition heal: webhook registry reconcile | [x] |
| P685-14 | Partition heal: webhook execute cursor reconcile | [x] |
| P685-15 | Dev overlay: **webhook-errors** filter tightened | [x] |
| P685-16 | Dev-log clipboard `guildWebhookCount` meta extend | [x] |
| P685-17 | Agentctl `runWebhookCreateJourney` | [x] |
| P685-18 | Agentctl `runWebhookExecuteJourney` | [x] |
| P685-19 | Smoke `test:phase685-webhooks` static contract | [x] |
| P685-20 | Smoke `test:agentctl-phase685-webhooks` journey chain | [x] |
| P685-21 | Integrate `test:ci-phase685` RELEASE_CI gate | [x] |
| P685-22 | pear run boot gate after webhook wiring | [x] |
| P685-23 | Docs: `WEBHOOKS.md` parity matrix update | [x] |
| P685-24 | Module README audit: pearcord-webhooks + integrations | [x] |
| P685-25 | UI-flow IPC: webhook modal open + composer blur | [x] |
| P685-26 | Server settings webhook management entry | [x] |
| P685-27 | Webhook permission inherit indicator in editor | [x] |
| P685-28 | Webhook event groups in execute builder | [x] |
| P685-29 | Forum webhook stub row in registry | [x] |
| P685-30 | Announcement webhook row highlight | [x] |
| P685-31 | Thread webhook inherit-from-parent banner | [x] |
| P685-32 | Webhook diff live region on gossip ingest | [x] |
| P685-33 | Guild-loading `aria-busy` on webhook modal | [x] |
| P685-34 | Keyboard roving on webhook rows | [x] |
| P685-35 | Mobile layout: webhook modal stack | [x] |
| P685-36 | Empty state when no webhooks | [x] |
| P685-37 | Cross-guild webhook list partition scope guard | [x] |
| P685-38 | DM webhook N/A guard for guild webhook UI | [x] |
| P685-39 | Duplicate webhook name toast copy parity | [x] |
| P685-40 | `webhooks-ui.js` extracted modal helpers | [x] |
| P685-41 | `webhooks-mixin.js` platform gossip + heal | [x] |
| P685-42 | Release notes v0.8.660 draft | [x] |
| P685-43 | Gitea release notes v0.8.660 + roadmap Phase 686 planning | [x] |
| P685-44 | Incremental render hash for webhook modal | [x] |
| P685-45 | Bot bridge row in webhook settings | [x] |
| P685-46 | Managed integration lock indicator extend | [x] |
| P685-47 | Slash webhook bridge stub row | [x] |
| P685-48 | Webhook preset chips (logging/moderation/announce) | [x] |
| P685-49 | Onboarding webhook deep-link parity | [x] |
| P685-50 | Regression bundle includes phase684 bot smokes | [x] |
### Phase 684 — Bot integrations & install flow parity (v0.8.659)
Bundle: `npm run test:ci-phase684`. `bots-ui.js` + platform `bots-mixin.js`, bot registry modal, install/uninstall flows, agentctl install/message journeys.
@@ -1826,6 +1883,7 @@ For deferred items, use `[SKIP]` and include a brief reason inline.
## Changelog
- 2026-06-03 - Completed Phase 685 webhook integrations & channel bridge parity (v0.8.660): `webhooks-ui.js` + platform `webhooks-mixin.js`, webhook registry modal (virtual window/sort/filter/search/presets/create/delete), execute event builder, deep link `?webhooks=1`, ui-flow `webhook-modal-open`, agentctl create/execute journeys; bundle `npm run test:ci-phase685` (50/50). Opened Phase 686 (automation hooks & digest relay parity, v0.8.661, 50 items).
- 2026-06-03 - Completed Phase 684 bot integrations & install flow parity (v0.8.659): `bots-ui.js` + platform `bots-mixin.js`, bot registry modal (virtual window/sort/filter/search/presets/install/uninstall), `uninstallBot` + sendBotMessage permission fallback, deep link `?bots=1`, ui-flow `bot-modal-open`, agentctl install/message journeys; bundle `npm run test:ci-phase684` (50/50). Opened Phase 685 (webhook integrations & channel bridge parity, v0.8.660, 50 items).
- 2026-06-03 - Completed Phase 683 slash commands registry & server integrations parity (v0.8.658): `slash-commands-ui.js` + platform `slash-mixin.js`, registry modal (virtual window/sort/filter/search/presets/create/delete), Integrations settings section, deep link `?slash=1` + settings `section=integrations`, ui-flow `slash-modal-open`, agentctl create/invoke journeys; bundle `npm run test:ci-phase683` (50/50). Opened Phase 684 (bot integrations & install flow parity, v0.8.659, 50 items).
- 2026-06-03 - Completed Phase 682 effective permissions inspector & member role assignment parity (v0.8.657): `effective-permissions-ui.js` + platform `member-roles-mixin.js`, effective breakdown inspector (virtual window/sort/filter/search), member role picker + inline chips + remove confirm, deep link `?roles=1`, ui-flow `member-roles-modal-open`, agentctl assign/effective journeys; bundle `npm run test:ci-phase682` (50/50). Opened Phase 683 (slash commands registry & server integrations parity, v0.8.658, 50 items).
+13
View File
@@ -0,0 +1,13 @@
# Pearcord v0.8.660 — Phase 685
**Webhook integrations & channel bridge parity**
## Highlights
- **`webhooks-ui.js`** — Webhook registry modal with virtual window, sort/filter/search, preset chips, create/delete flows, execute event builder, and integration bridge rows.
- **`webhooks-mixin.js`** — Platform gossip dedupe (`_shouldGossipWebhookUpsert`) and partition heal for registry + execute cursor.
- **Platform** — Extended `webhook.create`/`webhook.delete`/`webhook.execute` span metadata (`guildWebhookCount`, `bridgeKind`).
- **Server settings****Manage channel webhooks** entry; deep link `?webhooks=1` and settings `section=webhooks`.
- **UI-flow**`webhook-modal-open` IPC with composer blur.
- **Agentctl**`runWebhookCreateJourney`, `runWebhookExecuteJourney`.
- **Bundle**`npm run test:ci-phase685` (includes Phase 684 bot regression smokes).
+3 -1
View File
@@ -4,7 +4,7 @@ Pearcord supports **channel webhooks** — local hooks that post messages into a
## Create & manage
Server settings → **Integrations** (Manage Server) → **Channel webhooks**.
Server settings → **Integrations** (Manage Server) → **Manage channel webhooks** (registry modal).
- Requires **Manage Channels** or **Manage Server**
- Webhook **metadata** (name, channel) gossips via `WEBHOOK_UPSERT` (RPC 80)
@@ -31,6 +31,8 @@ Messages appear with the webhook name as author (webhook id stored as `authorId`
- `webhook.delete`
- `webhook.execute`
**v0.8.660 (Phase 685):** Tenth webhooks depth pass — `webhooks-ui.js` registry modal (virtual window, sort/filter/search, preset chips, create/delete confirm, execute event builder, color preview), platform `webhooks-mixin.js` gossip dedupe + partition heal (registry + execute cursor), Server settings **Manage channel webhooks**, deep link `?webhooks=1`, ui-flow `webhook-modal-open`, `#webhook-diff-live` on mesh ingest, dev **webhook-errors** excludes bot/heal bleed, agentctl `runWebhookCreateJourney`/`runWebhookExecuteJourney`. Bundle: `npm run test:ci-phase685`.
**v0.8.581 (Phase 618):** Second webhooks hub depth pass — `#webhooks-hub-panel-live` hub mesh note + active channel hook count (`channelHookCount` in `#channelName`); `#webhooks-panel-live` guild mesh notes on multi-channel states; **webhook-errors** excludes thread bleed; `syncComposerWebhooksHint` refreshes both hub and panel live regions; platform `webhook.create`/`webhook.delete`/`webhook.execute` `activeChannelId` re-verify. Bundle: `npm run test:phase618-webhooks`.
**v0.8.567 (Phase 604):** Split webhooks panel live region (`#webhooks-panel-live`, `syncWebhooksLivePanelDuringGuildLoading`); hub `#webhooks-hub-panel-live` `aria-busy`; **webhook-errors** excludes automation/attachment/embed/message/reaction/pin/automod/ban/kick/timeout bleed; clipboard `webhooksPanelLiveBusy`; `syncComposerWebhooksHint``syncWebhooksHubLivePanelDuringGuildLoading`; webhook modal `aria-busy` during guild load. Bundle: `npm run test:phase604-webhooks`.