BARK! Another Report Keeper
BARK monitors a mailbox and converts incoming emails into reports. Subsequent emails in the same thread can update the status of that report using predefined commands. Admins and maintainers can update reports by writing directly to the monitored inbox, manage roles, and receive periodic digest emails.
For admin and maintainers, see the full BARK manual.
To explore BARK reports from your terminal, use bone.
You can also highlight BARK with gnus-bone.el and notmuch-bone.el.
Subject labels
Subject labels create reports, optionally with a topic/version:
| Type | Subject labels |
|---|---|
| bug | [BUG <topic>] |
| patch | [PATCH <topic> <version> <n/m>] |
| request | [FR <topic>] [FP <topic>] [RFC <topic>] [RFE <topic>] [POLL <topic>] [TASK <topic>] |
| announcement | [ANNOUNCEMENT <topic>] [ANN <topic>] [BLOG <topic>] [TIP <topic>] |
| release | [REL <topic> <version>] [RELEASE <topic> <version>] |
| change | [CHG <topic> <version>] [CHANGE <topic> <version>] |
All <…> parts are optional and positional.
For release and change, a single value is interpreted as <version>: [REL 2.0] sets version to "2.0". Use both for topic and version: =[REL parser 2.0]=.
Topics can also be set using a colon-delimited prefix in the subject after the label: [BUG] parser: crash on empty input sets the topic to "parser".
Status & priority commands
Replies to reports can update them by using command keywords such as Resolved., etc.
Command keywords should be placed at the beginning of the line and followed by a punctuation mark (. , ; : ? !).
All status/priority command keywords work on all report types:
| Effect on report | Command keyword | Type |
|---|---|---|
| Mark as acked | Acked Confirmed Reviewed Approved |
Status |
| Mark as owned | Owned Handled Assigned |
Status |
| Mark as closed (canceled) | Canceled Cancelled |
Status |
| Mark as closed (expired) | Expired |
Status |
| Mark as closed (resolved) | Resolved Applied Done Fixed Closed |
Status |
| Mark as urgent | Urgent. |
Priority |
| Mark as important | Important. |
Priority |
Users don't set the priority directly: it is computed as the sum of important (+1) and urgent (+2).
Please also note that Urgent. and Important. both require a full stop at the end.
You can combine several status/priority commands in a single email:
Confirmed. Handled. Urgent. Important.
Searching via the web page
| Long form | Short | Explanation |
|---|---|---|
| from:me@example.org | f: |
Reports from me@example.org |
| acked:me@example.org | a: |
Reports acked by me@example.org |
| owned:me@example.org | o: |
Reports owned by me@example.org |
| closed:me@example.org | c: |
Reports closed by me@example.org |
| urgent:me@example.org | u: |
Reports marked urgent by me@example.org |
| important:me@example.org | i: |
Reports marked important by me@example.org |
| subject:match | s: |
Reports matching subject |
| priority:[0-4] | p: |
Reports matching priority level 0 to 4 |
| mid:<...> | m: |
Report open with message-id <...> |
| date:3d.. | d: |
Reports from 3 days ago |
| date:2023-01-01..2023-12-31 | d: |
Reports from 2023-01-01 to 2023-12-31 |
| deadline:2026-09-01 | D: |
Reports with due date 2026-09-01 |
| deadline:2026-01-01..2026-06-30 | D: |
Reports with due date in that range |
| deadline:2m | D: |
Reports due between now and 2 months from now |
| expired:10d | e: |
Reports expired between now and 10 days from now |
| expired:2026-01-01..2026-03-31 | e: |
Reports expired in that date range |
| match1 | match2 | Reports matching "match1" or "match2" | |
| from:* acked:* … | f:* a:* … |
Wildcard for from/acked/owned/closed/urgent/important |
Durations: Nd (days), Nw (weeks), Nm (months).
For date: they look backward from today; for deadline: and expired: they look forward.
Combine filters freely: D:2m o:user@email.com finds reports due within 2 months owned by user@email.com.
Maintainers
- bzg@bzg.fr
- bzg@gnu.org
- mail@christianmoe.com
- yantar92@posteo.net
If you run BARK, add this to your config.edn to declare maintainers correctly:
{:maintainers
[{:email "yantar92@posteo.net"}
{:email "bzg@bzg.fr"}
{:email "bzg@gnu.org"}
{:email "mail@christianmoe.com"}]}