Project Commander Docs ← Back to site

Epics Tab — Feature Guide

Epics tab — search box, status and assignee dropdowns, and the epics table ending in the Why column
Epics tab — search box, status and assignee dropdowns, and the epics table ending in the Why column

What it's for

The Epics tab shows the project's hierarchical scope — every epic plus its child issues — and rolls up progress, scope-change, and status per epic. Where the Sprints tab is organised around time (which iteration owns which work) and the Scope tab around change over time, the Epics tab is organised around grouping (what work belongs together) and completion against that grouping.

It answers four questions: what are we building right now; how far through each epic are we; which epics are growing in scope versus shrinking; and which epics are at risk of missing their target. It is intended for product, programme, and delivery leads who want to assess the project at the work-package level without opening Jira.

The tab requires that issues are linked to a parent epic in Jira. Only issues whose direct parent is an epic are counted; issues without an epic parent are excluded.

Where the tab is switched on: the Epics checkbox in the Settings gear (top right of the app, the Project Commander Settings screen). It is ticked by default; unticking it removes the Epics tab from the tab bar.

Toolbar

A single row at the top with the search input, the status filter, and the assignee filter. All three filters compose — an epic must match all of them to appear.

Search field

A text input reading Search epics... that filters the epic list as the user types. Matching is case-insensitive and runs against the epic's summary and Jira key. Empty input shows everything.

Status filter

A dropdown labelled All Epics. The options are All Epics plus every computed status band present in the current set of epics, in alphabetical order — from Done, Ahead of pace, On pace, Behind pace, Overdue, To Do, and, for an epic with no dates to judge a pace from, On Track, At Risk or Behind (see Status below for how each band is derived). A band no epic currently has is not listed.

Assignee filter

A dropdown labelled All assignees. Lists every epic's assignee, in alphabetical order; selecting one narrows the list to that person's epics only. It filters on the person assigned to the epic itself, not on who is assigned to the issues under it.

Section header

Collapse all button

Appears only when an epic is currently open. Clicking it closes it. Since only one epic can be open at a time (see Child-issues table below), there is no matching Expand all — opening is one at a time, by clicking a row.

Epic row (always visible)

The Epics tab is presented as a flat list of epic rows, each clickable to expand a child-issue table beneath it.

Epic row columns

Hover and done styling

Hovering a row tints the background (#FAFBFC). Epics whose Status reads Done render at 60% opacity so the open epics stand out.

Sorting

Every column header except Why is clickable. The table opens sorted by Progress, highest first. Clicking the sorted column again flips between ascending and descending; the active column shows a ▲ or ▼ next to its label. Clicking a different column starts that column descending. Epics that tie keep the order in which they were first found in the project's issues.

Child-issues table (expanded view)

Clicking an epic row toggles a child table below it. Only one epic's children are open at a time — clicking a different epic's row collapses any other open epic.

Authentication epic expanded showing the inset child-issues table with key, status, assignee, points, and sprint columns
Authentication epic expanded showing the inset child-issues table with key, status, assignee, points, and sprint columns

Child table columns

Every child issue is listed, including cancelled ones, although cancelled issues are left out of the epic's totals (see Roll-up logic).

Child table styling

Inset grey background #F4F5F7, indented from the left, in the same text size as the epic table. No further nesting (sub-tasks under a story are not shown).

Status

The badge in the Status column shows a computed health band. Done (100% complete, or the epic's own Jira status is a done status), Overdue (past its due date and not done), and To Do (no issues linked, or 0% done with no child issue In Progress) are decided first, in that order.

For every other epic the band comes from its pace — how much of it should be done by now — worked out by the same rule the Dashboard's On Pace card uses for the whole project, pointed at this epic's own linked issues and its own dates. There is no second way of computing "planned by now" and no setting of its own: which rule applies follows the On Pace card's gear on the Dashboard exactly.

The verdict is completed as a share of planned-by-now, in the app's one set of pace words: Behind pace under 95%, On pace within 5% either way of the plan, Ahead of pace more than 5% above it. It is the same rule and the same cut the Dashboard's On Pace? card uses, read from one place so the two screens cannot disagree (Don's decision, 2026-09-11).

Until that day this tab had three bands of its own — Behind under 70% of planned-by-now, At Risk from 70% to under 95%, On Track at 95% or more — so an epic at 80% read At Risk in amber while the Dashboard called that same share Behind pace in red. The amber band is gone from the pace verdict: anything under 95% now reads Behind pace, and the tab can say Ahead of pace, which it never could before.

When there is no "by now" to compare against — no due date on the epic and no dates on its issues, or no estimates at all — the epic falls back to the share-done rule (Behind under 30% done, At Risk under 60%, On Track from 60%) and the Why column says so. That is a different question — how much of the epic is finished, not whether it is keeping to a plan — so it keeps its own words rather than the three pace ones: no dates, judged on share done or no estimates, judged on issue count. The badge is never blank, and it never pretends to a comparison it could not make. Cancelled work is left out of both sides, as the Dashboard card leaves it out.

The Why column beside it states the figures that produced the band, so nobody has to guess what Behind pace means for a particular epic. The Pace column carries the same gap as a number.

Every epic that reads Behind pace also raises an alert on the Alerts tab, under Delivery risk as Epics behind pace, and counts in the Alerts badge (Don's decision, 2026-09-04). An epic judged on share done (Behind, At Risk, On Track) raises no such alert. Because the amber band went on 2026-09-11, an epic between 70% and 95% of planned now raises that alert where it did not before.

Scope change

The percentage is (current − original) / original × 100, where current is the epic's total work now and original is its total work at a baseline. How the baseline is set depends on which edition of the app is open:

Empty / loading / error states

Points vs. Hours mode

The whole panel respects the project's estimation mode, set in the Estimation Mode dropdown of the Projects tab's Add / Edit Project form.

An issue counts as done work at its full size once its status is a done status, and as no done work before that — logged time does not count towards done. So the epic's completion percentage is worked out the same way in every mode.

Roll-up logic

The epic's done and total values are sums over its child issues, with the same size rule applied to each. Cancelled or removed-from-scope issues are left out of both. Only issues whose direct parent is the epic are counted: a sub-task under a story is neither listed nor added in, and the story counts at its own estimate.

Numbers are rounded to one decimal place to keep the column tidy.

Cross-cutting modes and settings

How the numbers are computed

Effects on other parts of the app

© 2026 Project Commander · projectcommander.app · Support · Privacy · Security · Terms