> For the complete documentation index, see [llms.txt](https://help.resouris.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.resouris.com/manage-people/line-manager-and-team-calendar.md).

# Line manager and team calendar

Practical walk-through of the v1.6.8 line-manager features. Two audiences:

* **Roster-area admins** — assign line managers, view relationship history, filter the staff list by manager. Requires `admin.staff.edit`.
* **Line managers** (any worker who currently manages at least one direct report) — see the team calendar. **No new permission required** — visibility is derived from the relationship itself.

***

## Assign a worker's line manager

1. Go to **Staff → Staff list** (`/ui/admin/staff`).
2. Open the subordinate worker's row → **Edit**.
3. On the **Details** tab, find the **Line manager** card.
4. Pick a candidate from the dropdown (yourself + this worker's own direct reports are excluded to prevent cycles).
5. **Save**.

What happens under the hood:

* Any previous manager relationship for this subordinate is closed with `ended_reason='reassigned'`.
* A new spell opens with `effective_from` = today, `effective_until` = NULL (current).
* A `line_management.assigned` (first time) or `.reassigned` (subsequent) audit event is emitted.
* Cycles are refused — you cannot make a worker manage someone who already manages them (transitively).

**Clearing the field** — pick "— None —" from the dropdown to end the current relationship without a successor. This is what you use when a manager leaves and no replacement is nominated yet.

## View a worker's line-management history

Staff-edit → **Employment History** tab. Two new panels:

* **Managers of this worker** — reverse chronological list of everyone who has managed this subordinate. Shows manager name, from → until (or "current"), and the ended\_reason for closed spells.
* **Reports to this worker** — the same shape but from the manager side.

Deep-links let you jump between subordinate and manager pages without going back through the staff list.

## Find staff by manager

The **Staff list** (`/ui/admin/staff`) now shows a **Manager** column between the home roster area and the state pill. Filter by manager via the dropdown:

* **Any manager** — no narrowing.
* **No manager** — subordinates who have no current line manager.
* **A specific manager** — the picker only lists workers who currently manage at least one direct report, so it doesn't fill with irrelevant names.

## The team calendar (My Team)

If you currently manage at least one direct report, a new **My Team** item appears in the sidebar after the **My ReSouris** group. Click it to open the team calendar at `/ui/my-team`.

**No permission is needed** — the nav item and route are gated on the line-manager relationship itself. If you have no current subordinates, the item is hidden and the route returns 404.

### Choose a horizon

* **From** — the start date. For Week / Month views this snaps to the containing Monday. For Quarter view it anchors the 13-week window.
* **View** — Week (7 days), Month (28 days), or Quarter (13 weeks).
* **← Previous / Next →** links step by the view's horizon (7 / 28 / 91 days).

### Filter by department

If your subordinates span more than one department, the **Department** multi-select lets you narrow the grid. Options are scoped to just the departments your team actually spans — you never see a picker for a department you have no visibility into. Ctrl / Cmd click to pick more than one.

**Clear** removes the department filter and returns to showing all your subordinates.

### Read the grid

Rows are your subordinates, alphabetical. Each row × day (or week, in Quarter view) breaks down into 3 stacked cells for AM / PM / OOH.

Cell colour follows the same 8-status palette as the availability view:

* **Available** — working pattern applies + no absence recorded
* **Off pattern** — not scheduled to work that slot per their pattern
* **Rostered** — assigned to a service line + slot on the published roster
* **Extended leave** — maternity / paternity / sabbatical / long-sickness / etc.
* **Annual leave** — approved annual leave (dates only — no notes)
* **Training** — booked training day
* **Sickness** — off sick (dates only — no reason)
* **Holiday** — bank / public holiday

Hover any cell to see the subordinate + date + slot + status.

The **Month** view shades weekends and marks public holidays with `HOL`.

The **Quarter** view rolls up each week to its worst status per AM/PM/OOH — the visual may iterate after first operator use.

### What you don't see

Two things are intentionally private:

* **Availability preferences** — your subordinates' "prefers available / prefers unavailable" hints stay private to them. Only they and their admin can see those. A future opt-in ("share with my line manager") is on the roadmap.
* **Pending leave requests** — only approved leave appears. Pending requests remain private until they're actioned. A future line-manager-authority feature will surface them for approval.

These are not accidents — they're product decisions to keep the team-view respectful of the individual worker's privacy.

## Reversibility summary

* **Assign / reassign a manager** → the spell trail is durable; you can end the current spell (Save "None") but the history itself remains queryable.
* **Employment end** → open spells auto-close. When a subordinate's employment ends, their line-management spell closes with `ended_reason='org_change'`. When a manager's employment ends, all their direct reports have their spells closed with `ended_reason='manager_left'`.
* **Team calendar** → read-only. Nothing to reverse.

## Deferred to v1.7+

* **Pending leave visibility on the team view** — enhancement #50, not scheduled — pending leave stays hidden on the team view (a line-manager-authority cohort where the manager also gains approve/deny power.
* **Preference visibility on the team view (opt-in)** — enhancement #51, deferred to a v1.8+ privacy-config bundle where the individual worker chooses whether to share.
* **Skill filter on the team view** — will follow first operator use.
* **Cell drill-down to individual roster** — will follow first operator use (permission-model implications to work through).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.resouris.com/manage-people/line-manager-and-team-calendar.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
