mirror of
https://github.com/Sea-Haven-Industries/afterhours-shift-manager.git
synced 2026-09-30 07:53:11 +00:00
* Fix payroll email: grant SES config-set permission + isolate failures The weekly pay-summary email to payroll has been failing with SES AccessDenied since 2026-06-08. The sending identity (seahaven.com) gained a default configuration set (seahaven-email-events), and SES authorizes SendEmail against the config-set ARN as well as the identity — but the WeeklyPostFunction role only granted ses:SendEmail on identity/*. - template.yaml: add the configuration-set ARN (scoped to the known set name) to the SES policy so sends are authorized again. - weekly-post/app.py: wrap _send_pay_email in try/except so a delivery failure can never abort the handler before the Slack schedule post. Previously the SES error also blocked the two-week schedule post. - Add a regression test covering the isolation. Cross-family GPT-4.1 IAM review: APPROVE. * Bump to v1.10.1 in CHANGELOG and sync App Home copy
110 lines
4.8 KiB
Markdown
110 lines
4.8 KiB
Markdown
# Changelog
|
|
|
|
What's changed in the **After-Hours Shift Manager** — the Slack bot that runs our
|
|
after-hours on-call phone duty. Newest first, in plain language.
|
|
|
|
Versions are `MAJOR.MINOR.PATCH`: a **minor** bump adds a new feature, a **patch**
|
|
is a fix or tidy-up, and a **major** would be a big change to how things work.
|
|
A few older entries cover two versions at once (e.g. `v1.9.0 / v1.9.1`) — that's
|
|
fine and still supported.
|
|
|
|
---
|
|
|
|
## v1.10.1 — June 15, 2026
|
|
|
|
**Payroll summary emails are sending again.** The automated weekly pay summary
|
|
to payroll had stopped going out (an email-permissions change on our side blocked
|
|
it from June 8 onward). Fixed the permission so the emails send, and made the
|
|
Monday job sturdier: if the payroll email ever fails again, it no longer stops
|
|
the on-call schedule from being posted in Slack. The two missed summaries were
|
|
re-sent by hand.
|
|
|
|
## v1.10.0 — June 11, 2026
|
|
|
|
**The bot now tells you what's new.** Two things:
|
|
|
|
- When a noticeable update ships (a new feature or a bigger change), the bot
|
|
posts a short "What's New" note right in the on-call channel — so you hear
|
|
about changes without having to go looking. Small fixes stay quiet.
|
|
- The bot now has an **About** page. Click the bot's name in Slack and open its
|
|
**Home** tab to see what it does, the full list of `/oncall` commands, and the
|
|
latest "What's New". It always shows the current version.
|
|
|
|
## v1.9.2 — June 1, 2026
|
|
|
|
**Setup-guide fix.** Corrected the install instructions so secrets (the Slack and
|
|
phone-system passwords) are stored in the right, secure place. No change to the
|
|
bot itself — this only affects someone setting it up from scratch.
|
|
|
|
## v1.9.0 / v1.9.1 — June 1, 2026
|
|
|
|
**You can no longer drop a shift at the last minute.** If a shift starts within
|
|
the next 24 hours, you can't just drop it and walk away — you have to hand it to
|
|
someone specific (a swap they accept), or ask an admin. This stops the phones
|
|
from being left uncovered with no notice. *(v1.9.1 was a routine update of
|
|
behind-the-scenes software libraries.)*
|
|
|
|
## v1.8.0 — June 1, 2026
|
|
|
|
**Swaps now need the other person to say yes.** Before, `/oncall swap` instantly
|
|
dumped your shift on someone else. Now they get a Slack message with **Accept**
|
|
and **Decline** buttons, and the shift only moves if they accept. Until then it
|
|
stays yours. If they don't respond before the shift starts, the request quietly
|
|
expires.
|
|
|
|
## v1.7.19 — June 1, 2026
|
|
|
|
**Quality safety net (no visible change).** Added an automated test suite that
|
|
checks the bot's behavior on every change, so bugs get caught before they ship.
|
|
You won't notice anything different day-to-day — it just makes future updates
|
|
safer.
|
|
|
|
---
|
|
|
|
## May 2026 — Phone-system automation & a big fix
|
|
|
|
- **Live phone routing follows the schedule.** The system that decides which
|
|
phone rings after hours now reads directly from the on-call schedule, so
|
|
pickups, drops, and swaps take effect automatically.
|
|
- **Fixed a release that had broken the whole bot.** A packaging mistake stopped
|
|
all of the bot's functions from running; this was found and fixed.
|
|
- Ongoing routine updates to behind-the-scenes software libraries.
|
|
- **Behind the scenes:** moved to an automated build-and-release pipeline, added
|
|
automatic code checks and formatting, and turned on automated dependency and
|
|
code-review tooling. None of this changes how you use the bot.
|
|
|
|
## May 1, 2026 — Reliability & notifications
|
|
|
|
- **No more double-booking.** Fixed a timing bug where two people could grab the
|
|
same open shift at once.
|
|
- **Shift changes are announced.** When someone picks up, drops, or swaps a
|
|
shift, a note is posted to the team channel.
|
|
- **Fixed a confusing error** that showed up when picking a shift even though the
|
|
pickup had actually worked.
|
|
|
|
## April 8, 2026 — Schedule & pay polish
|
|
|
|
- The weekly schedule now always starts on **Monday** (it used to start from
|
|
today).
|
|
- Tidied up the weekly pay report (recipient and wording).
|
|
|
|
## April 7, 2026 — Scheduling & pay
|
|
|
|
- **Two-week schedule view** instead of just the current week.
|
|
- **Weekly pay totals** for on-call shifts, with a configurable flat rate.
|
|
- **Per-person pay rates** and an `/oncall rate` command to manage them from
|
|
Slack.
|
|
- **Weekend day shifts** — weekends are split into a daytime and an overnight
|
|
shift.
|
|
- **Automatic employee roster sync** — the bot pulls the staff list from the
|
|
phone system each day, so the roster stays current on its own.
|
|
- **Weekly "Bonus Pay Summary"** emailed to payroll (and sent as a Slack DM to
|
|
the admin) every Monday.
|
|
|
|
## April 3, 2026 — Launch 🎉
|
|
|
|
The first version of the After-Hours Shift Manager:
|
|
|
|
- See the on-call schedule in Slack with `/oncall`.
|
|
- **Pick up** an open shift and **drop** a shift you're covering.
|
|
- Link your Slack account to your phone extension with `/oncall register`.
|