Files
fusion/plugins/examples/fusion-plugin-notification
gsxdsm 1aa1e723f6 chore(build,test): split desktop/mobile from default build; share vitest worker budget
- pnpm build now excludes @fusion/desktop and @fusion/mobile by default
  (recursive build still available as pnpm build:all). Saves time on
  workspace-wide builds that don't need the native shells.
- Hoist the per-package max-worker computation into a shared
  packages/core/src/__test-utils__/vitest-workers.ts util. Every
  vitest.config.ts now calls computeMaxWorkers(), which honors
  VITEST_MAX_WORKERS, FUSION_TEST_TOTAL_WORKERS, and a per-config
  defaultCap, clamped to cpus-1.
- pnpm test sets VITEST_MAX_WORKERS=2 so the workspace run keeps total
  fan-out modest with --workspace-concurrency=2.
- Switch dashboard vitest pool from forks to threads so jsdom/React
  suites share a V8 heap instead of duplicating ~500MB per worker.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 15:56:15 -07:00
..
2026-05-01 23:38:03 -07:00
2026-05-01 23:38:03 -07:00

Notification Plugin

Sends webhook notifications on Fusion task lifecycle events (task completed, task moved, errors).

Features

  • Webhook Notifications: Send notifications to Slack, Discord, or generic HTTP endpoints
  • Event Filtering: Configure which events trigger notifications
  • Multiple Webhook Formats: Native support for Slack and Discord webhook payloads

Installation

Option 1: Copy to plugins directory

cp -r fusion-plugin-notification ~/.fusion/plugins/

Option 2: Install via CLI

fn plugin install /path/to/fusion-plugin-notification

Configuration

After installation, configure the plugin through the Fusion dashboard:

  1. Go to Settings → Plugins
  2. Find "Notification Plugin" and click the settings icon
  3. Set your webhook URL and preferred webhook type
  4. Optionally filter which events trigger notifications

Settings Reference

Field Type Required Default Description
webhookUrl string Yes URL to send webhook notifications to
webhookType enum No generic Webhook payload format: slack, discord, or generic
events string No (all) Comma-separated list of events: task-completed, task-moved, task-failed. Empty = all events

Example Settings (JSON)

{
  "webhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ",
  "webhookType": "slack",
  "events": "task-completed,task-moved"
}

Webhook Payload Formats

Slack

{
  "text": "✅ Task completed: Fix login bug"
}

Discord

{
  "content": "✅ Task completed: Fix login bug"
}

Generic

{
  "event": "task-completed",
  "timestamp": "2024-01-01T00:00:00.000Z",
  "task": {
    "id": "FN-001",
    "title": "Fix login bug",
    "from": "todo",
    "to": "done"
  }
}

Development

# Install dependencies
pnpm install

# Run tests
pnpm test

# Build
pnpm build

License

MIT