diff --git a/CHANGELOG.md b/CHANGELOG.md index a01eb10..b2cd6e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,23 @@ fine and still supported. --- +## v1.14.0 — July 2, 2026 + +**Point-and-click admin actions, right inside Slack.** Admins no longer have to +remember the exact word order of `/oncall admin …` commands for the two most +fiddly tasks: + +- **Set an override or add a holiday from a form.** The bot's *Home* tab now has + an **Admin** section with two buttons — *Set override* and *Add holiday* — that + open a small form with a date picker, an employee dropdown, and clearly + labelled fields (the holiday pay multiplier is its own box instead of a + squeezed-in `x2`). Pick the values, submit, and the change lands exactly as the + typed command would — same phone-routing update for same-day changes, same + schedule-post refresh — with mistakes flagged on the field instead of a wall of + usage text. The typed `/oncall admin …` commands still work as before. +- **See what's coming up.** The Admin section also lists the upcoming overrides + and holidays so you can scan the next couple of months at a glance. + ## v1.13.1 — June 29, 2026 **Fixed: the weekly pay summary email to payroll is sending again.** A diff --git a/docs/admin-ui-evaluation.md b/docs/admin-ui-evaluation.md new file mode 100644 index 0000000..a08f334 --- /dev/null +++ b/docs/admin-ui-evaluation.md @@ -0,0 +1,200 @@ +# Evaluation: admin web UI vs. clarifying/expanding in-Slack admin commands + +_Spike for issue #136 — decide how to make administration easier: a separate +**admin web UI**, or **clarifying/expanding the in-Slack admin commands** (Block +Kit modals + an App Home admin section). This document records the options, a +recommendation, and the scope of the follow-up build. It is a "decide and +recommend" spike — no admin-surface code ships in this PR. The route is left for +sign-off (see "Decision needed" at the end)._ + +## Current admin surface + +Every admin action is a positional-text subcommand of `/oncall admin …`, +authorized by `is_admin = user_id in schedule.get_admin_users()` +(`src/shared/shared/schedule.py`, `get_admin_users`) and handled in +`_handle_admin()` / `_handle_admin_holiday()` (`src/slack-bot/app.py`): + +- `admin override [day|night]` — assign a shift +- `admin open [day|night]` — mark a shift open +- `admin clear [day|night]` — remove an override (revert to weekly) +- `admin roster add|remove|rename [name]` +- `admin holiday add [x]