Skip to content

Reporting managers who can approve their reports' days off - #114

Merged
akumar-99 merged 3 commits into
mainfrom
feat/reporting-managers
Oct 28, 2026
Merged

akumar-99 merged 3 commits into
mainfrom
feat/reporting-managers

Conversation

@akumar-99

Copy link
Copy Markdown
Contributor

What and why

Spec: specs/009-reporting-managers.md

This carries forward the proposal in #113 by @shrey-CDZ, with the review's fixes.

Each person can have a reporting manager on a standup, picked from the people who manage a standup. On a standup that needs approval, their day-off requests also go to that reporting manager. The reporting manager can approve or decline them in Chat, the web app or the API, without managing the standup.

Changes

  • Migration 22 adds participants.reporting_manager and reporting_manager_name, with an index (SQLite and Postgres). It is per standup because it lives on the roster row.
  • A reporting manager can decide only a day off, only for a standup that needs approval, and only while they still manage an active standup. Anyone else gets "Only Bob's managers can decide this." The same rule applies to the Chat card, the web app and the API.
  • The request card goes to the standup's managers and the reporting manager, once each. The person's reply names the reporting manager unless they already manage that standup.
  • Working requests, and standups on self-service or managers only, are unchanged.
  • Adding someone back to a roster by hand clears their reporting manager. A group sync that brings them back keeps it.
  • API: PATCH /standups/:id/participants/:userName takes reportingManager, which must be a manager and not the person themselves; null clears it. Participants return reportingManager and reportingManagerName. New GET /standups/:id/manager-candidates. GET /requests and approve/decline admit a reporting manager.
  • Web: Settings › People has a Reports to dropdown after Required. On a phone it is one more line on each card. Create standup doesn't show it.
  • Docs: schedules, roles, web app and API.

Checks

  • bun run typecheck && bun run test:coverage pass (100% lines and functions)
  • bun run web:typecheck && bun run web:test pass
  • Each acceptance criterion has a test (tests/reporting-managers.test.ts, plus web tests for the picker)
  • Figma "AsyncUp v2 — Product Design" matches what was built (Specs › 009 Reporting managers)
  • Docs (docs/guide/) updated for anything people will notice, and bun run docs:build passes
  • Website (site/) updated if a feature it describes changed, and bun run site:build passes (no change needed)
  • Layout checked from 390px to 1440px, light and dark

akumar-99 and others added 3 commits October 28, 2026 09:14
… them decide days off

Each person can have a reporting manager on a standup, picked from the
people who manage a standup. On a standup that needs approval, their
day-off requests also go to that reporting manager, who can approve or
decline them in Chat, the web app or the API. Working requests, and
standups on self-service or managers only, are unchanged. The say ends
once the reporting manager no longer manages any standup.

Migration 22 adds the reporting manager to participants, with an index.

Co-authored-by: shrey-CDZ <279933707+shrey-CDZ@users.noreply.github.com>
@akumar-99
akumar-99 merged commit 7997a9c into main Oct 28, 2026
6 checks passed
@akumar-99
akumar-99 deleted the feat/reporting-managers branch October 28, 2026 04:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant