Project Commander Docs ← Back to site

Team & Capacity Tab — Feature Guide

Team & Capacity tab — period selector, member table, status badges, total row
Team & Capacity tab — period selector, member table, status badges, total row

What it's for

The Team & Capacity tab is where the team's roster, base capacity, time off, holidays, and per-project allocations are kept. Every other capacity-aware feature in the app — the forecast, the cascade chart, the feasibility score, sprint pre-mortem, weekly demand vs capacity, Auto-Level — reads its inputs from here.

The tab does four things: lets the user manage the team roster (add, edit, remove members); set base capacity in story points per sprint or hours per week, optionally with per-week overrides; track time off (PTO) and company holidays; and allocate each member's effort across multiple projects when programmes are configured.

The data is local-only — there is no Jira write-back for capacity. Removing a member, however, does unassign that person's open issues in Jira so the work doesn't silently stay on a person who is no longer on the team.

Header / Toolbar

Period selector

Five buttons across the top of the team table — Weekly, Biweekly, Monthly, Quarterly, Yearly. The choice changes how the table aggregates per-week capacity and how the table reads as bulk-edit input. Underneath, capacity is always stored per ISO week; the period view is a convenience for setting many weeks at once and for reading totals at the right granularity.

Period navigation arrows

Left/right arrows step the visible window forward or backward by one period. The current period label sits between the arrows.

"Populate weeks from legacy" banner

Appears once per team configuration. Offers to backfill the per-week capacity map from the team's legacy hoursPerWeek and pointsPerSprint defaults so existing setups keep working when they upgrade. After clicking, the banner dismisses for that team.

Add Member button

A + Add Member button opens a dialog asking for a name and (optionally) hours-per-week, utilisation %, and points-per-sprint. New members default to 40 hours, 100% utilisation, and a points value derived from the team-wide default.

Show total / Show per selected project toggle

Visible only when programme projects are configured. Show total (the default) shows each member's full capacity. Show per selected project scales every capacity column by that member's allocation factor for the project currently selected in the main app's project picker. In project view, capacity and utilisation become read-only — they are scaled values, not stored values, so editing them would be ambiguous. Time off, holidays, and demand still display unscaled.

Team Members table

One row per member. Sticky-header table with the columns listed below.

Selection

Identity

Capacity (period bulk)

Allocation (programme projects only)

Time off and holidays

Net capacity

Demand

Issue count and inline expand

Status badge

Removal

Per-member detail rows

Three independent inline expansions:

Issues detail

Lists every non-done issue assigned to the member that overlaps the period, with Jira key, summary, and points.

Time off detail

Lists every PTO entry and holiday in the period grouped by date. PTO entries have a × to delete them inline. Holidays have no delete button — they are managed in the Holidays section.

Allocation popover

A floating panel anchored to the Alloc button. Lists every programme project by key in a four-column grid (rows wrap when more than four projects exist). Each project card has two fields: a percent input (the share of this member's capacity dedicated to that project) and an editable "= X pts/hrs" line that shows the computed absolute. Edit either field and blurring persists the change; the other field recomputes from the member's current capacity. The popover header shows Project allocations and a close button. Two Σ chips at the bottom row sum the percents per unit — Σ Hrs: X% / 100% and Σ Pts: Y% / 100% — both turning red with a ⚠ marker when totals exceed 100%. Switching out of the Show per selected project mode while the popover is open auto-closes it.

Percent storage is the source of truth: when the member's Pts/Wk or Hrs/Wk is edited in the row above, every "= X" computed value in their popover updates immediately without any allocation edit. A 60% allocation stays 60% across capacity changes — that's the intent the planner expressed, not the absolute value.

Zero-allocation confirm

When the user edits an allocation cell down to zero (in either the matrix on the Projects tab or this popover) and the affected member still has unfinished work assigned to that project, a ConfirmDialog opens before the change saves. The title reads Zero allocation with assigned work; the message names the member, the project key, and the count of unfinished issues, then asks whether to continue (e.g., "Sarah Chen has 3 unfinished issues assigned in AUTH. Setting allocation to 0 will leave them with no capacity for this project. Continue?"). The user picks Cancel (allocation reverts to the previous value) or Continue (allocation is zeroed and the forecast recomputes). It does not fire when the member has no open issues on the project — there is nothing to warn about.

Per-member time-off modal

Per-member Time Off modal opened from
Per-member Time Off modal opened from "view time off" — header with avatar and name, summary line counting PTO days, holidays, total hours, list of entries (or empty state), and Add Time Off form with date picker, duration buttons, reason field, Add and Close buttons

Reached by the view time off link on the member's name. Full-screen modal with four parts:

Useful for entering a year of PTO upfront or for spotting clashes with a release window.

Time Off calendar section

A collapsible section beneath the team table. Contains a month-view calendar plus controls for bulk multi-day time-off entry.

Time Off calendar with member-filter chips, the four-colour day legend (weekend / holiday / time off / selected), and the click-to-select day grid
Time Off calendar with member-filter chips, the four-colour day legend (weekend / holiday / time off / selected), and the click-to-select day grid

Calendar navigation

Independent period bar with left/right arrows; the calendar's month is decoupled from the team table's period. Useful for editing forward time off while reading current-quarter capacity.

Member filter

A Show checkbox row letting the user filter the calendar to one or more team members. Clear resets to all members.

Legend

Four dot colours: weekend (light grey), holiday (yellow), time off (blue), selected (darker blue).

Day selection

Click a non-weekend day to select it. Ctrl-click toggles a day in or out of the selection. Shift-click selects a range from the last clicked day to the current day, skipping weekends. While days are selected, three buttons appear: Add Time Off (opens the bulk-add modal), Delete Time Off (removes any PTO entries on selected days), Clear (deselects).

Add Time Off bulk modal

Triggered from the selection action bar. Shows the chosen date range, lists each selected day as a chip (with an H badge for any day that already has a holiday), allows the user to pick a member, set hours-per-day from segmented buttons, type a reason, and confirm. The modal also has a collapsible Mark as Company Holiday form for declaring the same selection a holiday — but only when none of the selected days already have one.

Company Holidays section

Company Holidays section expanded with the inline Add form — date picker, holiday name field, Yearly checkbox, Add button
Company Holidays section expanded with the inline Add form — date picker, holiday name field, Yearly checkbox, Add button

A collapsible list. Each row shows date (formatted as Mon, Jan 1), name, an optional 🔄 recurring badge for yearly holidays, and Edit / Delete buttons. The Edit button switches the row into inline edit mode (date input, name input, Yearly checkbox, Save / Cancel). The Delete button removes the holiday immediately. The Add form at the bottom takes a date, a name, and a Yearly checkbox; submitting persists the holiday. Duplicate dates are silently ignored.

Holidays apply company-wide and are deducted from every member's net capacity automatically.

Total row

The last row of the team table aggregates across the visible (filtered) members.

In Show per selected project mode, capacity and Net are scaled by per-member allocation factor; time-off, holidays, and demand totals remain unscaled.

Demand-vs-Capacity feed (no chart in this tab)

The Team & Capacity tab itself does not render the cascade or feasibility chart. Once configuration is saved, the weekly bucketing engine reads the same data and feeds the Plan-Risk weekly grid, the cascade bar chart in What-If, and the feasibility scores on the Sprints tab. The link is one-way: configure here, see results elsewhere.

Estimation mode and time units

The whole tab adapts to the project's estimation mode:

Per-week capacity is stored in whichever unit the project is in; switching modes does not convert stored values automatically.

Data persistence

The saveTeamCapacityConfig bridge writes the entire roster + holidays + PTO + allocations as one document into the project's persistent store. Changes are saved on blur and on dialog confirm. There is no explicit Save button.

Removing a member calls unassignIssuesForUser which is the only Jira write the tab makes. All other edits are local.

Cross-cutting modes and settings

How the numbers are computed

Effects on other parts of the app

© 2026 Project Commander · projectcommander.app · Support