Project Commander Docs ← Back to site

Epics Tab — Feature Guide

Epics tab — search/filter toolbar, epics table with progress and scope-change
Epics tab — search/filter toolbar, epics table with progress and scope-change

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. Issues without an epic parent are excluded.

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 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 — Done, On Track, At Risk, Behind, Overdue, To Do (see Status pill below for how each band is derived).

Owner filter

A dropdown labelled All Owners. Lists every assignee found across the visible epics; selecting one narrows the list to that person's epics only.

Section header

Collapse All button

Appears only when at least one epic is currently expanded. Clicking it closes every open epic in one click. There is no symmetric Expand All button — expanding is one-at-a-time by clicking individual rows.

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 in Done status render at 60% opacity so the open epics stand out.

Sorting

Every column header is clickable. Clicking toggles between ascending and descending; the active column shows a ▲ or ▼ next to its label. Clicking a different column starts that column descending. Sorts are stable, so a tied secondary order is preserved between sorts.

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

Child table styling

Inset background #F4F5F7, 12px font, 32px left padding, no further nesting (subtasks under a story are not shown).

Status pill

The pill in the Status column shows a computed health band, derived from the epic's progress, children, and due date: Done (100% complete, or the epic's own Jira status is a done status), Overdue (past its due date and not done), To Do (no children, or 0% with nothing in progress), Behind (progress below 30%), At Risk (30–59%), On Track (60% or more). Colours: Done and On Track green, At Risk amber, Behind and Overdue red, To Do grey. (The child-issue table below shows each child's raw Jira status instead — green for done statuses, blue for In Progress, grey otherwise.) The status-filter dropdown in the toolbar lists the computed bands present on the current epics.

(The progress bar's colour is a separate thing — it is banded by completion, green ≥ 60% / amber 30–59% / red < 30%, as described in the Progress column above. That bar colour is per-epic completion only; it does not set the status pill.)

Scope change

A baseline date is the earliest active or future sprint start in the project. Issues created after that date count as added scope. The percentage is (currentPts − originalPts) / originalPts × 100.

When the backend exposes a richer per-epic scope endpoint, that data is preferred; otherwise the client-side fallback runs over the issue list. The percentage is (grey) when the epic is Done or when no baseline can be established (for example, no active or future sprints exist).

Empty / loading / error states

Points vs. Hours mode

The whole panel respects the project's estimation mode.

In hours mode, done per issue is the time spent; total is the first available of original estimate, then remaining + spent, then points-as-hours (a fallback chain, not a maximum). Done equals total on issues marked done so the epic completion percentage matches the points-mode result.

Roll-up logic

The epic's Done and Total values are pure sums over its children, with the same point-or-hour rule applied to each child. Subtasks roll up into their parent story automatically through Jira's hierarchy — they do not appear as their own row in the child table.

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