discord-ops 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # discord-ops
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - c24d139: Cutting-edge template system upgrade — 23 templates with native Discord features
8
+ - **6 new templates**: dashboard (multi-embed status board), progress (visual bar), oncall (shift handoff), standup (daily summary), retro (sprint retrospective), alert (configurable levels)
9
+ - **Native Discord polls**: `poll` template now uses Discord's poll API with progress bars, vote tracking, multiselect, and duration (replaces emoji-based fallback)
10
+ - **Link buttons**: deploy (View Deployment + View Logs), incident (Status Page), review (Open PR), release (Release Notes + npm + Docs), oncall (Runbook), and more
11
+ - **Author branding**: every template supports `author_name` + `author_icon` for consistent identity at the top of embeds
12
+ - **Discord timestamps**: maintenance start/end, incident started_at, announcement deadlines, welcome start_date — all auto-convert to user's timezone with live countdowns
13
+ - **Footer status icons**: deploy, ci_build, incident, status_update show green/red indicator icons
14
+ - **Clickable titles**: release, deploy, review, changelog titles link directly to URLs
15
+ - **Multi-embed dashboards**: up to 10 embeds per message for service status boards
16
+ - **Syntax-highlighted code**: tip template supports `language` var for code block highlighting
17
+ - **Visual progress bars**: Unicode block progress indicator with percentage
18
+ - **Severity-based colors**: incident template colors vary by severity (critical/high/medium/low)
19
+ - **Webhook schema fix**: `execute_webhook` now supports thumbnail, image, author, footer.icon_url (was missing)
20
+ - **Changelog expansion**: deprecated and performance sections added
21
+ - 45 new template tests (255 total)
22
+
23
+ ## 0.6.0
24
+
25
+ ### Minor Changes
26
+
27
+ - 5a05546: Message template system with 17 built-in Discord embed templates
28
+ - `send_template` tool — send styled embeds using project routing (45 tools total)
29
+ - `list_templates` tool — discover templates with required/optional variables
30
+ - DevOps templates: release, deploy, ci_build, incident, incident_resolved, maintenance, status_update, review
31
+ - Team templates: celebration, welcome, shoutout, quote, announcement, changelog, milestone, tip, poll
32
+ - Curated color palette (success green, error red, celebration pink, premium gold, etc.)
33
+ - All templates support project routing, notification routing, and direct channel targeting
34
+ - 25 new template tests (235 total)
35
+
3
36
  ## 0.5.0
4
37
 
5
38
  ### Minor Changes
package/README.md CHANGED
@@ -8,7 +8,7 @@ Agency-grade Discord MCP server with multi-guild project routing.
8
8
 
9
9
  ## Features
10
10
 
11
- - **43 MCP tools** — messaging, channels, moderation, roles, webhooks, audit log, threads, guilds, invites, permissions, search, project introspection
11
+ - **45 MCP tools** — messaging, channels, moderation, roles, webhooks, audit log, threads, guilds, invites, permissions, search, 23 templates, project introspection
12
12
  - **Multi-guild project routing** — `send_message({ project: "my-app", channel: "builds" })` instead of raw channel IDs
13
13
  - **Notification routing** — map notification types (ci_build, deploy, error) to channels per project
14
14
  - **Multi-bot support** — manage multiple Discord bots from a single MCP server with per-project tokens
@@ -180,7 +180,7 @@ send_message({ channel_id: "123456789", content: "Hello" })
180
180
 
181
181
  ## Tools
182
182
 
183
- ### Messaging (8 tools)
183
+ ### Messaging (10 tools)
184
184
 
185
185
  | Tool | Description |
186
186
  | ----------------- | ------------------------------------------------- |
@@ -192,6 +192,8 @@ send_message({ channel_id: "123456789", content: "Hello" })
192
192
  | `pin_message` | Pin a message in a channel |
193
193
  | `unpin_message` | Unpin a message |
194
194
  | `search_messages` | Search messages by content, author, or date range |
195
+ | `send_template` | Send a styled embed using a built-in template |
196
+ | `list_templates` | List available templates with required variables |
195
197
 
196
198
  ### Channels (8 tools)
197
199
 
@@ -317,6 +319,109 @@ DRY_RUN=true discord-ops
317
319
 
318
320
  In dry-run mode, destructive tools return a simulated success response showing what would have happened.
319
321
 
322
+ ## Message Templates
323
+
324
+ 23 built-in templates with cutting-edge Discord features. Use `send_template` with project routing.
325
+
326
+ **Features across all templates:**
327
+
328
+ - **Author branding** — every template has a configurable `author_name` + `author_icon` at the top
329
+ - **Link buttons** — clickable buttons below embeds (View Logs, Open PR, Runbook, etc.)
330
+ - **Discord timestamps** — dates auto-convert to each user's timezone with live countdowns
331
+ - **Native polls** — real Discord polls with progress bars and vote tracking
332
+ - **Multi-embed dashboards** — up to 10 embeds per message for service status boards
333
+ - **Footer icons** — status indicator icons (green/red) next to footer text
334
+ - **Clickable titles** — embed titles link directly to URLs
335
+ - **Syntax-highlighted code** — code examples with language-specific highlighting
336
+ - **Progress bars** — visual Unicode block progress indicators
337
+
338
+ ### DevOps Templates (10)
339
+
340
+ | Template | Description | Key Features |
341
+ | ------------------- | ---------------------------------------------- | -------------------------------------------- |
342
+ | `release` | Version release with install + link buttons | Author, link buttons, clickable title |
343
+ | `deploy` | Deploy success/failure with logs button | Footer icon, view/logs buttons |
344
+ | `ci_build` | CI result with build link button | Footer icon, clickable title |
345
+ | `incident` | Incident alert with severity colors | Discord timestamps, status page button |
346
+ | `incident_resolved` | Resolution with postmortem button | Discord timestamps, postmortem link |
347
+ | `maintenance` | Maintenance with live timezone countdowns | Discord timestamps, countdown, status button |
348
+ | `status_update` | Service status (operational/degraded/outage) | Footer icon, dashboard button |
349
+ | `review` | PR review with diff stats + PR button | Clickable title, additions/deletions |
350
+ | `dashboard` | Multi-embed service status board (up to 9 svc) | Multi-embed, per-service color cards |
351
+ | `oncall` | On-call handoff with shift timestamps | Discord timestamps, runbook button |
352
+ | `alert` | Configurable alert (info/warn/error/critical) | Level-based colors, metric thresholds |
353
+
354
+ ### Team & Community Templates (12)
355
+
356
+ | Template | Description | Key Features |
357
+ | -------------- | --------------------------------------- | --------------------------------------------- |
358
+ | `celebration` | Celebrate wins with images | Author, thumbnail, image |
359
+ | `welcome` | Welcome members with onboarding buttons | Discord timestamps, handbook/onboarding links |
360
+ | `shoutout` | Recognize work with avatar thumbnail | Thumbnail, nomination attribution |
361
+ | `quote` | Block-quoted inspirational text | Block quote formatting, author avatar |
362
+ | `announcement` | Announcement with deadline countdown | Discord timestamps, countdown, link button |
363
+ | `changelog` | Changelog with 7 section types | Deprecated, performance, security sections |
364
+ | `milestone` | Milestone with target date countdown | Discord timestamps, progress tracking |
365
+ | `tip` | Pro tip with syntax-highlighted code | Language-specific code blocks, doc button |
366
+ | `poll` | Native Discord poll with vote tracking | Native poll API, multiselect, duration |
367
+ | `progress` | Visual progress bar with deadline | Unicode progress bar, countdown |
368
+ | `standup` | Daily standup summary | Yesterday/today/blockers sections |
369
+ | `retro` | Sprint retrospective | Went-well/improve/actions, velocity |
370
+
371
+ ### Example
372
+
373
+ ```
374
+ send_template({
375
+ template: "release",
376
+ vars: {
377
+ version: "0.7.0",
378
+ name: "discord-ops",
379
+ notes: "Cutting-edge template system with native Discord features",
380
+ highlights: "23 templates, native polls, link buttons, Discord timestamps",
381
+ npm: "discord-ops@0.7.0",
382
+ link: "https://github.com/bookedsolidtech/discord-ops/releases",
383
+ author_name: "Clarity CI",
384
+ author_icon: "https://example.com/logo.png"
385
+ },
386
+ project: "my-app",
387
+ channel: "releases"
388
+ })
389
+ ```
390
+
391
+ ### Native Discord Poll
392
+
393
+ ```
394
+ send_template({
395
+ template: "poll",
396
+ vars: {
397
+ question: "Best language for MCP servers?",
398
+ options: "TypeScript|Rust|Go|Python",
399
+ duration: "48",
400
+ multiselect: "true"
401
+ },
402
+ project: "my-app",
403
+ channel: "dev"
404
+ })
405
+ ```
406
+
407
+ ### Multi-Embed Dashboard
408
+
409
+ ```
410
+ send_template({
411
+ template: "dashboard",
412
+ vars: {
413
+ services: "API|Database|CDN|Auth|Queue",
414
+ statuses: "operational|operational|degraded|operational|outage",
415
+ title: "Production Status",
416
+ url: "https://status.example.com"
417
+ },
418
+ project: "my-app",
419
+ channel: "alerts"
420
+ })
421
+ ```
422
+
423
+ All templates support project routing (`project`, `channel`, `notification_type`, `channel_id`) and author branding (`author_name`, `author_icon`).
424
+
320
425
  ## Multi-Organization Troubleshooting
321
426
 
322
427
  ### Validating your config
@@ -0,0 +1,15 @@
1
+ import type { TemplateRenderer, RenderedTemplate } from "./types.js";
2
+ export interface TemplateInfo {
3
+ name: string;
4
+ category: string;
5
+ description: string;
6
+ requiredVars: string[];
7
+ optionalVars: string[];
8
+ render: TemplateRenderer;
9
+ features?: string[];
10
+ }
11
+ export declare const templates: Record<string, TemplateInfo>;
12
+ export declare function getTemplate(name: string): TemplateInfo | undefined;
13
+ export declare function listTemplates(): TemplateInfo[];
14
+ export declare function renderTemplate(name: string, vars: Record<string, string>): RenderedTemplate;
15
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAi2BpB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA8dlD,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAElE;AAED,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAE9C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAa3F"}