URSACORP Apps / Epic Lens

Epic Lens

A Jira project page that shows the active sprint as one dense, foldable table grouped by epic, with progress on every epic and a keyboard-first interface.

How it works

Jira's board is a planning surface. Most of the time you do not want to plan, you want to answer one question: what is in this sprint, which epic does it belong to, and how far along is that epic?

Epic Lens answers that as a single table. When you open the page it finds the Scrum boards belonging to the project, takes the active sprint, loads its issues, groups them by parent epic, and renders one row per issue. Each group header carries a done-versus-total count and a progress bar. Issues with no parent collect under No epic at the bottom.

If the project has no Scrum board, or the board has no active sprint, the page does not show an empty panel. It falls back to all open work in the project and tells you why it did.

Everything is computed in your browser from data Jira returns for the signed-in user. The app stores nothing except which groups you folded, which stays in your own browser.

Key features

Keyboard shortcuts

KeyAction
jMove focus down one row
kMove focus up one row
eFold or unfold the focused group
/Jump to the filter box
EnterOpen the focused issue in Jira

Setup

  1. Install the app from the Marketplace. This needs Jira administrator rights.
  2. Open any Jira project.
  3. In the project sidebar, choose Epic Lens.

There is nothing to configure. The page reads the project you are in from the Jira page context.

Verifying that it works

What you need on the site first

Steps

  1. Open the project and choose Epic Lens in the sidebar.
  2. Check the contents. The rows should be exactly the issues in the active sprint. Compare against the board's sprint.
  3. Check the grouping. Each issue should sit under its parent epic. Issues with no parent should sit under No epic at the bottom.
  4. Check the progress. A group header showing 2/5 should mean two of that epic's five issues in this sprint are in a Done status. Verify one group by hand.
  5. Check folding. Click a group header to fold it, reload the page, and confirm it is still folded.
  6. Check the keyboard. Press j and k to move between rows, e to fold the focused group, / to jump to the filter, and Enter to open the focused issue.
  7. Check the filter. Type part of an issue summary or an assignee name. Only matching rows should remain, empty groups should disappear, and the done/total counts should recount against what is left.
  8. Check regrouping. Switch the grouping to assignee and then to status. The same rows should regroup. Under status grouping, the groups should be ordered by workflow position, not alphabetically.
  9. Check the fallback. Open Epic Lens on a project that has no Scrum board or no active sprint. The page should show all open work in that project and state why it fell back. This is the intended behaviour, not an error.
  10. Check the permission boundary. Open the page as a user who cannot see some of the project's issues. Only the issues that user can already open in Jira should appear.

Permissions

Nine permissions, all read-only. The app requests no write permission. Every request is made with asUser(), so a viewer only ever sees issues they could already open in Jira.

PermissionWhy it is needed
read:board-scope:jira-software
read:project:jira
List the Scrum boards belonging to the project being viewed.
read:sprint:jira-software Find the active sprint on those boards and load its issues.
read:issue-details:jira The six fields the table renders: key, summary, status, assignee, issue type and priority.
read:jql:jira The enhanced search endpoint, used for the all-open-work fallback view.
read:audit-log:jira
read:avatar:jira
read:field-configuration:jira
read:issue-meta:jira
The set Atlassian's documentation lists as required for that same search endpoint. The app does not read your audit log, field configurations or issue metadata for any other purpose; the endpoint will not authorize without them.

Granular permissions are used rather than the older read:jira-work because the Jira Software agile endpoints reject read:jira-work, and Forge does not permit mixing classic and granular permissions in one app.

Data handling

No data leaves your Atlassian site. The manifest declares no external permissions and the source contains no outbound network call, so the app is eligible for Atlassian's Runs on Atlassian programme. The only thing kept is which groups you folded, stored in your own browser. Full detail is in the privacy policy.

Support

ursacorp.llc@gmail.com