|
7 | 7 | - [What does the done lane mean for dashboard stats?](#what-does-the-done-lane-mean-for-dashboard-stats) |
8 | 8 | - [Are tag colors personal, or shared with the team?](#are-tag-colors-personal-or-shared-with-the-team) |
9 | 9 | - [How do I use Scrumboy with Claude or other MCP clients?](#how-do-i-use-scrumboy-with-claude-or-other-mcp-clients) |
| 10 | +- [What are VAPID keys, and do I need them?](#what-are-vapid-keys-and-do-i-need-them) |
| 11 | +- [How does auditing work, and where can I see it?](#how-does-auditing-work-and-where-can-i-see-it) |
10 | 12 | - [Does Scrumboy use telemetry, tracking, or “phone home”?](#does-scrumboy-use-telemetry-tracking-or-phone-home) |
11 | 13 | - [What do I need to do to contribute?](#what-do-i-need-to-do-to-contribute) |
12 | 14 |
|
@@ -85,6 +87,63 @@ When you open a board, Scrumboy refreshes colors from that board so what you see |
85 | 87 |
|
86 | 88 | For tool names, auth rules, examples, and the optional Agora discover/invoke edge, see [`docs/mcp.md`](docs/mcp.md). For full HTTP behavior, see [`API.md`](API.md). |
87 | 89 |
|
| 90 | +# Notifications |
| 91 | + |
| 92 | +## What are VAPID keys, and do I need them? |
| 93 | + |
| 94 | +**Usually no.** VAPID keys are optional server credentials for **Web Push** - background alerts when someone **assigns you a todo** while the app is closed or in the background (best with an installed PWA). Boards, SSE live updates, and normal use work fine without them. |
| 95 | + |
| 96 | +**Two different notification paths:** |
| 97 | + |
| 98 | +| Setting / feature | What it does | |
| 99 | +|-------------------|--------------| |
| 100 | +| **Enable notifications** (Settings) | In-tab / desktop alerts while the browser still has Scrumboy open (Notification API) | |
| 101 | +| **Web Push** (needs VAPID on the server) | Can reach you when the tab is in the background or the PWA is not focused; uses the browser’s push service (e.g. Apple or Google) | |
| 102 | + |
| 103 | +Do not confuse them: turning on desktop notifications does **not** replace VAPID, and setting VAPID does **not** bypass the browser permission prompt. |
| 104 | + |
| 105 | +**If you want background assignment push**, set **both** on the server: |
| 106 | + |
| 107 | +- `SCRUMBOY_VAPID_PUBLIC_KEY` |
| 108 | +- `SCRUMBOY_VAPID_PRIVATE_KEY` |
| 109 | + |
| 110 | +(URL-safe base64 from a VAPID generator; see [`docs/pwa.md`](docs/pwa.md).) When both are set, signed-in clients may try to subscribe automatically; each user must still **allow notifications** in the browser. **Settings → Customization → Web Push** can turn push off or back on per device. |
| 111 | + |
| 112 | +Optional: `SCRUMBOY_VAPID_SUBSCRIBER` is a **contact hint for push providers** (plain email or `mailto:` / `https:` URL). It does **not** control who can sign in and does not need to match OIDC or user emails. |
| 113 | + |
| 114 | +**Not telemetry:** VAPID identifies **your** Scrumboy server to the push network so assignment events can be delivered. It is not product analytics and does not send board data to Scrumboy’s project maintainers. |
| 115 | + |
| 116 | +# Auditing |
| 117 | + |
| 118 | +## How does auditing work, and where can I see it? |
| 119 | + |
| 120 | +Scrumboy **records an audit trail automatically** while you use the product. There is nothing to turn on in Settings and no separate “audit mode.” When maintainers and contributors create or change todos, members, projects, or todo links, the server appends a row to the **`audit_events`** table in your SQLite database (typically under your `data` directory). |
| 121 | + |
| 122 | +**What is logged** (per project) includes, among others: |
| 123 | + |
| 124 | +- Todo created, updated, moved, or deleted |
| 125 | +- Members added, removed, or role changes |
| 126 | +- Project created, renamed, image updated, default sprint weeks changed, or deleted |
| 127 | +- Todo links added or removed |
| 128 | + |
| 129 | +Each event stores **who** did it (`actor_user_id`, or NULL on anonymous boards), **what** happened (`action`), **which entity** (`target_type` / `target_id`), and **JSON metadata** (for example column moves or changed field names - not full note bodies). Rows are **append-only** (the database blocks updates and deletes on `audit_events`). |
| 130 | + |
| 131 | +**Assignee changes** are tracked separately in **`todo_assignee_events`**, not duplicated in `audit_events`. |
| 132 | + |
| 133 | +**Where to view it today:** there is **no audit log screen in the web UI** and **no public HTTP API** to list events yet (planned for the future). To review history now, query the database directly, for example: |
| 134 | + |
| 135 | +```sql |
| 136 | +SELECT created_at, action, actor_user_id, target_type, target_id, metadata |
| 137 | +FROM audit_events |
| 138 | +WHERE project_id = ? |
| 139 | +ORDER BY created_at DESC |
| 140 | +LIMIT 50; |
| 141 | +``` |
| 142 | + |
| 143 | +Project backups/exports may also include audit data depending on scope; see your backup workflow. |
| 144 | + |
| 145 | +For the full action list, metadata shapes, and security notes, see [`docs/audit_trail.md`](docs/audit_trail.md). |
| 146 | + |
88 | 147 | # Privacy |
89 | 148 |
|
90 | 149 | ## Does Scrumboy use telemetry, tracking, or “phone home”? |
|
0 commit comments