feat(mail-templates): markdown inputs in a multi-line field (1.0.3)
description and callout_text declare format: markdown, which Riposte 0.322+ edits in a text area that keeps line breaks; older versions ignore it and \n still works. README documents format: multiline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BJu1jvaug4qY1kMgz8wx41
This commit is contained in:
@@ -141,6 +141,18 @@ issue_type_name:
|
|||||||
Riposte refuses an `options_from` command that is not `risk: read`: opening a
|
Riposte refuses an `options_from` command that is not `risk: read`: opening a
|
||||||
field must never change anything in the customer's tool.
|
field must never change anything in the customer's tool.
|
||||||
|
|
||||||
|
### Multi-line inputs
|
||||||
|
|
||||||
|
`format: multiline` (or `format: markdown`, which says what the text is) makes
|
||||||
|
the playbook editor show a resizable text area instead of a one-line field
|
||||||
|
(Riposte 0.322+). Use it for a mail body, a comment, a markdown description:
|
||||||
|
a one-line field turns the line breaks of a pasted text into spaces. Older
|
||||||
|
Riposte versions ignore `format` and keep the one-line field.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
description: { type: string, format: markdown, description: "Body in markdown" }
|
||||||
|
```
|
||||||
|
|
||||||
### `risk:` — the agent approval gate
|
### `risk:` — the agent approval gate
|
||||||
|
|
||||||
Every command declares a tier. It is what Riposte's agent approval gate reads:
|
Every command declares a tier. It is what Riposte's agent approval gate reads:
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
id: mail_templates
|
id: mail_templates
|
||||||
name: Mail Templates (ACKnowledge)
|
name: Mail Templates (ACKnowledge)
|
||||||
version: 1.0.2
|
version: 1.0.3
|
||||||
description: "Turns a subject and a markdown description into an ACKnowledge SOC email (dark theme, header badge, signature with the logo, footer) — nothing is sent: chain the output into exchange-send-mail or mail-sender (`subject` → subject, `html_body` → html_body, `text_body` → body). Eight templates, each with its own badge and colour: sla_breach, incident_notification (colour follows `severity`), incident_update, incident_closure, action_required, escalation, threat_bulletin, info. The description takes markdown: headings (## is the blue capitalised section title), bold, italic, links, lists, quotes, rules, GFM tables, `code` and ``` blocks (hashes, IPs, command lines), and level pills `{{critical}}` `{{high}}` `{{medium}}` `{{low}}` `{{info}}` `{{ok}}` — `{{high:Élevée}}` changes the label. Raw HTML in the inputs is escaped, so alert data can be interpolated safely. The logo is an inline data-URI PNG: exchange-send-mail and mail-sender embed it; the Gmail integration does not, and the logo is lost there. No connection, no secret; stdlib-only."
|
description: "Turns a subject and a markdown description into an ACKnowledge SOC email (dark theme, header badge, signature with the logo, footer) — nothing is sent: chain the output into exchange-send-mail or mail-sender (`subject` → subject, `html_body` → html_body, `text_body` → body). Eight templates, each with its own badge and colour: sla_breach, incident_notification (colour follows `severity`), incident_update, incident_closure, action_required, escalation, threat_bulletin, info. The description takes markdown: headings (## is the blue capitalised section title), bold, italic, links, lists, quotes, rules, GFM tables, `code` and ``` blocks (hashes, IPs, command lines), and level pills `{{critical}}` `{{high}}` `{{medium}}` `{{low}}` `{{info}}` `{{ok}}` — `{{high:Élevée}}` changes the label. Raw HTML in the inputs is escaped, so alert data can be interpolated safely. The logo is an inline data-URI PNG: exchange-send-mail and mail-sender embed it; the Gmail integration does not, and the logo is lost there. No connection, no secret; stdlib-only."
|
||||||
changelog: "1.0.2 — The playbook editor's input field is a single line and drops pasted newlines, so a pasted description rendered as one heading: description and callout_text without a line break now read the two characters \\n as one. | 1.0.1 — The Test button failed (NameError: __file__) and render-mail-template printed nothing: Riposte runs a script with exec(), without __file__ or __name__. The test no longer imports the renderer and the renderer runs main() unconditionally. | 1.0.0 — Initial release: render-mail-template (8 templates, markdown description with tables, code and level pills, optional callout, action button, case reference and severity, SOC or client footer, French or English) and a self-test."
|
changelog: "1.0.3 — description and callout_text declare format: markdown: Riposte 0.322+ edits them in a multi-line text area that keeps line breaks (\\n still works on older versions). | 1.0.2 — The playbook editor's input field is a single line and drops pasted newlines, so a pasted description rendered as one heading: description and callout_text without a line break now read the two characters \\n as one. | 1.0.1 — The Test button failed (NameError: __file__) and render-mail-template printed nothing: Riposte runs a script with exec(), without __file__ or __name__. The test no longer imports the renderer and the renderer runs main() unconditionally. | 1.0.0 — Initial release: render-mail-template (8 templates, markdown description with tables, code and level pills, optional callout, action button, case reference and severity, SOC or client footer, French or English) and a self-test."
|
||||||
category: email
|
category: email
|
||||||
|
|
||||||
# Nothing to connect to. The only setting names the bot in the SOC footer
|
# Nothing to connect to. The only setting names the bot in the SOC footer
|
||||||
@@ -27,8 +27,8 @@ commands:
|
|||||||
enum: [sla_breach, incident_notification, incident_update, incident_closure, action_required, escalation, threat_bulletin, info]
|
enum: [sla_breach, incident_notification, incident_update, incident_closure, action_required, escalation, threat_bulletin, info]
|
||||||
description: "Layout: sla_breach (red, SLA ALERT), incident_notification (colour of `severity`), incident_update (blue, STATUS UPDATE), incident_closure (green, CLOSED), action_required (orange), escalation (magenta), threat_bulletin (violet), info (grey, default)"
|
description: "Layout: sla_breach (red, SLA ALERT), incident_notification (colour of `severity`), incident_update (blue, STATUS UPDATE), incident_closure (green, CLOSED), action_required (orange), escalation (magenta), threat_bulletin (violet), info (grey, default)"
|
||||||
subject: { type: string, description: "Subject, also shown as the title of the mail" }
|
subject: { type: string, description: "Subject, also shown as the title of the mail" }
|
||||||
description: { type: string, description: "Body in markdown — ## section titles, **bold**, lists, tables, `code`, ``` blocks, {{medium}} pills. In a one-line field, write each line break as \\n" }
|
description: { type: string, format: markdown, description: "Body in markdown — ## section titles, **bold**, lists, tables, `code`, ``` blocks, {{medium}} pills. On Riposte before 0.322 (one-line field), write each line break as \\n" }
|
||||||
callout_text: { type: string, description: "Highlighted box above the description (markdown). Empty: no box" }
|
callout_text: { type: string, format: markdown, description: "Highlighted box above the description (markdown). Empty: no box" }
|
||||||
callout_title: { type: string, description: "Title of the box (default: the template badge, e.g. ⚠ SLA ALERT)" }
|
callout_title: { type: string, description: "Title of the box (default: the template badge, e.g. ⚠ SLA ALERT)" }
|
||||||
button_label: { type: string, description: "Action button text, e.g. Open the case in Riposte (needs button_url)" }
|
button_label: { type: string, description: "Action button text, e.g. Open the case in Riposte (needs button_url)" }
|
||||||
button_url: { type: string, description: "Action button link (http or https)" }
|
button_url: { type: string, description: "Action button link (http or https)" }
|
||||||
|
|||||||
Reference in New Issue
Block a user