Skip to content
claused

[ every user-visible change ]

Changelog

atom feed →

version 2.6.0

  1. changedv2.6.0

    The DONE column counts work items only, the same number as Hierarchy Progress

    The DONE column on Hierarchy Totals now counts work items only — sub-tasks, and stories without sub-tasks — by the same rule as Hierarchy Progress, so the two gadgets print the same percentage for the same row. An epic or a story with sub-tasks is no longer counted itself; its work is. The percentage on existing dashboards therefore changes after this update without any change in Jira: an open epic whose stories are all finished now reads 100 %, and a closed epic whose work is all still open reads 0 %. With Open work only on, the share is still taken over every status, but a row needs rows under it to carry one: that open epic has nothing listed below it there and leaves the cell empty. A JQL filter still narrows the share to the matched issues, and the column header’s tooltip and the “how it’s counted” panel now state the rule.

    seen in: cross project total

  2. fixedv2.6.0

    A new gadget refreshes itself from its first render; errors say what to do

    The first render of a newly configured gadget now says the background sync is running and replaces the live preview with the complete numbers on its own; before, it could sit on the preview, saying the sync had not started, until someone reloaded the dashboard. The preview no longer implies that its numbers only grow: it covers the oldest few hundred issues, so the complete numbers may be higher or lower. If the tile’s own refreshes fail five times in a row, it now stops asking and the footer reads “live preview — stopped refreshing; reload the dashboard” instead of still promising to replace the preview on its own. The filter-error panel no longer offers a “Try again” that could not help and names the fix instead. When the daily history capture fails for a gadget with one project and no filter, the Trend panel now says so rather than “History starts today”.

    seen in: cross project total

  3. addedv2.6.0

    Hierarchy Progress: percent complete by issue count and by story points

    A second gadget, Hierarchy Progress, is now part of the app. Every epic, every level above it and every project shows done out of total, % done by issue count, % by story points or any numeric field, and what is left — rolled up across up to 50 projects, the row furthest behind listed first, and the done figure on an epic opens the issues behind it in Jira’s issue search. A trend draws each project’s percentage by day, starting when the gadget is set up, and teams that do not estimate can switch the gadget to count issues only. Done means Jira’s status category Done, and a row whose open work carries no estimate at all shows a dash rather than a 100% that reads as finished; on a tile too narrow for the unest. badge, a * after the share marks the rows where unestimated work weighs nothing in it. The footer’s “how it’s counted” link spells out every division in your field’s own name.

    seen in: percent by points

  4. changedv2.6.0

    Hierarchy Totals: a one-line footer, sticky headers and clearer refusals

    The footer is now one line — data as of, the issue count, how it’s counted, support, debug. The new “how it’s counted” link opens the counting rule together with everything the line used to carry: partial reads, rows not listed, issues outside the hierarchy. Column headers stay in place while a long table scrolls, and the settings screen shows one line per setting with its explanation behind a “details” link. A branch that cannot be loaded now says why and offers a retry only where a retry can help, and a branch that arrived incomplete is marked partial. The admin page keeps its last answer when a refresh fails and says when it was read, and a live preview re-reads itself less often when Jira’s hourly request budget for the app is low.

    seen in: verify in jira

  5. fixedv2.6.0

    The first pass of a large gadget is paced; a new field waits for a complete read

    A gadget over more than seven projects now starts its background reads seven projects at a time, fourteen minutes apart; before, every refresh of an open tile started seven more, so a 50-project gadget had most of its projects being read at the same time. The tile keeps re-reading itself through the whole first pass, between those groups too, and still replaces the live preview with the complete numbers on its own. A second gadget on a different number field over projects that are already synced now computes its numbers live from Jira until that field has been read in full for every project; before, after an hourly update it could show totals that were too low, from a stored copy that held the new field on a few issues only. When an hourly update cannot be started while a dashboard is open, the tile shows the numbers it has already read instead of an error.

    seen in: cross project total

  6. changedfixedv2.6.0

    Trend lines are withheld one by one; a filtered trend errs on the safe side

    When issue security hides some issues from a viewer, the Trend panel now withholds only the lines those issues are counted in, draws the rest, and names the missing projects under the legend; before, one such issue blanked the whole chart. A filtered gadget has a single blended line that cannot be split, so it is now hidden from any viewer who is outside a security level used in the gadget’s projects — even when the filter matches nothing restricted. Deciding by the projects rather than by the filter means the chart never says anything about issues a viewer cannot open; the price is that some viewers lose a chart they could have been shown. A filter with an unpaired parenthesis or quote is now refused, and the tile shows a filter error instead of numbers.

    seen in: scope over time

version 2.5.0

  1. addedv2.5.0

    Hierarchy Totals is on the Atlassian Marketplace

    The gadget can now be installed from the Atlassian Marketplace, on any Jira Cloud site. It is free on Jira sites with up to 10 users, and the paid tiers start above that. Nothing changed in the gadget itself: this is the same build that has been running here, with cross-project rollups, the trend panel and the “what’s counted” query.

  2. addedv2.5.0

    The trend chart has axes

    The Trend panel now shows how much and over how long, not just the shape of the lines. Round values sit on the right; dated ticks along the bottom fall on calendar boundaries — single days for a few days of history, Mondays for a month or two, month starts for a year — with as many labels as the tile is wide enough to hold. The chart is drawn at the tile’s real width, so the labels stay the same size on a narrow tile and on a wallboard.

  3. addedv2.5.0

    Hover the trend for a single day's values

    Move the pointer over the Trend chart and a cursor snaps to the nearest captured day, with a dot on each line and a card showing the date and every project’s value. A project with no point that day shows a dash rather than a zero. Works with touch as well as a mouse.

    seen in: scope over time

  4. addedv2.5.0

    Enormous portfolios drill in on demand

    On very large portfolios (tens of thousands of rows in one gadget) the deepest rows are not shipped up front — totals always include them, but the detail stayed out of reach. Containers holding withheld rows now carry a +N … chip: click it and exactly that branch loads in, recursively, as deep as you care to go. The rest of your view stays exactly as it was, and the footer’s “rows not listed” count updates live as branches stream in.

  5. fixedv2.5.0

    Edge-case hardening before launch

    A final adversarial pass over admin scenarios, ahead of the Marketplace listing. What it caught:

    • An empty project no longer disables the fast path. Adding a brand-new project with no issues used to knock the whole gadget onto a slow fallback that read only the first few hundred issues — permanently, while claiming a sync was still running. Precompute now stays engaged.
    • Very large portfolios keep working. Beyond roughly 23,000 rows the response outgrew the platform’s size limit and the gadget broke outright. Totals are still computed over your full hierarchy; when a tree is too big to ship whole, the deepest rows are held back, those containers are marked, and the footer says exactly how many rows are not listed.
    • A ORDER BY pasted into the filter no longer breaks it. Copying JQL straight from issue search brings its sort clause along; it is now ignored (sorting means nothing for a rollup) instead of causing a parse error.
    • Broken settings can be repaired. A configured project that was deleted, renamed, or that you cannot browse used to be invisible in the settings — unremovable, and silently occupying one of the ten project slots. It now appears as a row you can uncheck.
    • Trends skip a point rather than record an undercounted one when a filter matches more issues than the app can read at once, and the footer wording distinguishes “still loading” from “this is as much as fits”.
    • Trends tell the truth about time. Older points are thinned out by retention, and the chart used to space them evenly — drawing a month-long gap exactly as wide as a single day. The axis is time-proportional now, dates are marked UTC, and the long-term history keeps a point a month as intended (it was keeping about two a year).
    • Filters that depend on who is asking (currentUser() and friends) no longer record a trend at all: the daily capture runs in the background with no user, so it was quietly charting a different population than the tile showed.
    • An epic whose work is all finished is no longer labelled “unestimated” in open-work-only mode, viewers without access are told that instead of being told the filter matched nothing, and a bad filter on a brand-new gadget shows the filter error rather than a generic failure.
    • The trend chart now uses the dark palette on dark dashboards (it was reading the theme a moment before the platform set it), and the project picker loads large sites in one round of parallel requests instead of up to fifty sequential ones.
    • The trend’s empty state now tells the truth. “History starts today” used to cover three unrelated situations. Now a filter the daily capture cannot run says exactly why (a saved filter the app cannot access, a filter that depends on who is viewing, a match too large to read), and a viewer whose permissions hide part of the portfolio is told that instead.
    • Settings gained a Cancel button, the field picker explains when the saved field no longer exists in Jira (instead of silently re-saving a dead reference), the JQL editor follows your Jira language, and rows held back by the size cap now show a “+N …” chip with an accurate count.
  6. addedfixedv2.5.0

    Jira's own JQL editor in the settings

    • The JQL filter field is now the same editor Jira’s issue search uses: syntax highlighting, autocomplete for your fields, values, and functions, and inline validation before you save. It loads only on the settings screen, so the gadget itself stays as light as before.
    • Fixed: the platform HTML-escapes gadget settings when storing them, which could turn a filter like "Story Points" >= 5 into a JQL parse error (>= reaching Jira). Saved filters now decode correctly — including ones saved while the bug was live, with no re-save needed.
  7. addedfixedv2.5.0

    Full keyboard navigation, small-tile controls, and background-sync hardening

    Two more adversarial audit passes over the freshest code. The user-visible part:

    • The tree is now fully keyboard-navigable. Arrow keys move between rows, Left/Right collapse and expand, Home/End jump, Enter toggles — and focus follows correctly through a tree of tens of thousands of virtualized rows. Screen readers hear the hierarchy as a hierarchy: level, position, and expanded state on every row, including the “show more” pagers.
    • Small tiles keep their controls. On tiles narrower than 300px the column that hosted “load the rest of this subtree” disappeared with no replacement — the marker itself is now clickable and a compact chip appears inline.
    • Background sync is harder to knock over. A whole class of rare failure windows — a scheduled run dying between two steps, a queue push failing after its claim, a partially-failed chain leaving orphaned data — now recovers within the hour instead of waiting for the next daily run, and interrupted syncs clean up after themselves.
    • Renamed projects are safe. A project configured under both its old and new key after a Jira rename no longer loses or double-counts issues — in the table or in the trend.
  8. fixedchangedv2.5.0

    Resilience against Jira changing under the gadget

    Two deeper fixes for things that change out from under a configured gadget:

    • A field deleted from Jira no longer corrupts the numbers. Deleting (or trashing) the tracked field used to leave the gadget summing a decaying mix of frozen old values and blanks — under a fresh-looking “data as of” stamp. The gadget now detects the deletion within a day, says plainly that the field no longer exists, and keeps the last good snapshot intact: restore the field from Jira’s trash and your data is back untouched, or pick another field in the settings.
    • Heavy automation no longer triggers rebuild storms. If automation rules or bulk edits change thousands of issues every hour, the hourly refresh used to give up and rebuild the whole project — potentially around the clock. The hourly pass now absorbs about twice as many changes in place, and full rebuilds are limited to one per six hours, with the nightly full sync as the unchanged correctness floor.
  9. fixedv2.5.0

    Every number on the screen agrees with every other

    A dedicated consistency audit across the tile, the trend, the footer, and the debug block — plus a hands-on pass over every aggregate on live data:

    • The very first render of a freshly filtered gadget now computes exactly like every later one (containers, Done%, and unestimated badges no longer shift after the first background sync).
    • The footer’s issue count, the count aggregate, and the trend now count the same population — structure-only rows (like an epic shown just to hold its matched children) are no longer “issues” in one place and not another.
    • Large values in the Σ column size and clip cleanly with the full number on hover; every count on screen uses your locale’s digit grouping.
    • A team’s own issue type literally named “Project” no longer confuses the gadget’s project grouping.
    • Row baselines align across all columns, fast scrolling can no longer leave the table momentarily blank, and collapsing a deep-scrolled tree snaps cleanly back to the top.
  10. changedfixedv2.5.0

    Instant at any size, and rename-proof counting

    • The tree is now virtualized. However large the portfolio, the gadget renders only the rows in view — “Expand all” on a 15,000-row tree used to freeze the tile for seconds; it is instant now, and deep scrolling stays smooth. Nothing else changed: same tree, same controls, same numbers.
    • Renaming a project key no longer distorts totals. If a project’s key changes (say ABC → XYZ), the gadget now recognizes both keys as the same project: no double counting when both end up selected in the settings, no duplicated issues in the hourly refresh, and a freshly renamed project keeps rendering instead of showing an empty tree.
  11. changedv2.5.0

    Filtered rollups keep the hierarchy

    A JQL filter on a numeric field (say, "Story Points" > 2) rarely matches epics — they carry no points of their own — so filtered results used to collapse into one flat “No parent in view” group. Now the filter selects issues while the tree keeps its structure: matched issues appear under their real epics and parents, shown as containers whose own value is stripped. Totals still count only what matched — containers outside the filter add nothing and are never flagged as unestimated.

    The same structural care now applies to Open work only: a Done epic whose children are still open stays visible as a container (its own points no longer count toward remaining work), instead of dropping out and orphaning its children.

  12. fixedv2.5.0

    Trends now group cross-project work exactly like the table

    For gadgets watching several projects, the trend used to count each issue under its own project while the table counts a whole subtree under the project of its topmost parent — so with cross-project hierarchies the chart could disagree with the rows above it. The daily capture now attributes subtrees exactly like the table, per gadget configuration. The corrected series starts collecting the day the gadget is next viewed; until it has points, the chart keeps showing the previous per-project history.

  13. fixedchangedv2.5.0

    Truthful freshness, preserved trend history, and a sturdier tile

    A ninth adversarial audit pass, focused on angles the earlier ones had not covered. Everything it surfaced is fixed:

    • “Data as of” tells the truth now. The footer timestamp previously advanced on internal bookkeeping (hourly sync claims) even when no data changed, and on multi-project gadgets it showed the freshest project. It now shows the moment the least-fresh project’s data is complete up to — the only claim that is always correct.
    • Trend history survives upgrades. When a multi-project gadget switches to grouped attribution, the chart now stitches the existing per-project history in front of the new series instead of collapsing months of trend into two points.
    • Trend problems are visible. If the daily capture stops working (a deleted saved filter, permissions), the chart says so under the last captured point instead of silently flatlining behind stale data. Ten distinct line colors now cover the ten-project maximum.
    • View-state fixes. Clicking an “unest.” badge twice no longer forgets the tree layout you had before entering the filter, and a Jira locale in Java format can no longer break number formatting and view-state saving.
    • Filter fidelity. A JQL filter that searches for literal text like > is now stored and restored byte-exact (older saves keep the healing decode they need).
    • Huge sites. The project picker now has a search field on sites with thousands of projects, and no longer mislabels configured projects it simply has not listed as removable.
  14. changedv2.5.0

    Your view survives dashboard refreshes

    Dashboards that auto-refresh — wallboards especially — used to reset the gadget completely: expanded branches collapsed, the trend panel closed, the scroll jumped back to the top. The gadget now remembers your view (per person, per gadget, in your browser) and comes back exactly where you left it. Stored state expires after twelve hours, so Monday morning always starts with a clean slate.

  15. fixedv2.5.0

    Clear recovery when access grants go stale

    If the per-user access grant is missing or stale, the gadget now explains exactly what happened and offers a Grant access button plus a link to Atlassian’s Connected apps page — instead of a dead-end error asking you to refresh forever.

  16. fixedv2.5.0

    Security and correctness hardening after a full audit

    We ran an adversarial audit across the whole app before the Marketplace submission and fixed everything it surfaced:

    • Permission enforcement tightened. Two edge cases could show a viewer aggregate numbers that included projects they cannot browse (a crafted JQL filter on a freshly configured gadget, and the trend chart for viewers with partial project access). Both paths now re-enforce the viewer’s own project permissions before anything is returned.
    • Progress column corrected. A parent issue in a Done status with open children showed 100% done; progress is now counted over the real hierarchy, so open work under a closed parent is never hidden.
    • Background sync made more resilient. A transient failure during an hourly delta could silently stop all future updates for a project, and a crashed sync could lock a project out of re-syncing. Both recovery paths are fixed.
    • Small UI fixes: keyboard access for badges and expanders, a dark-theme palette for the trend chart, consistent styling on the settings form, and “unest.” badges on rows without children no longer pretend to be clickable (the drill-down filter only makes sense on parents).
  17. changedv2.5.0

    Branded loading states

    Every loading state (gadget start, rollup compute, trend, settings) now shows the Claused mark with its block cursor blinking like a terminal caret while the label types itself out — instead of a plain “Loading…” line. Pure CSS, and it respects your reduced-motion preference.

  18. changedv2.5.0

    A visual identity that respects your Jira

    The gadget adopts the Claused design language — structured monospace for labels, keys, and numbers, a restrained accent, bordered badges — while surfaces and text keep following your Jira theme, light or dark. Narrow tiles now degrade gracefully instead of hiding issue keys.

  19. addedv2.5.0

    Drill-down: every number explains itself

    Issue keys in the tree are now links straight into Jira, and every “unestimated” badge is a button: click it and the tree filters to exactly the branches with unestimated work — open them, estimate them, done. Trust the number or inspect it; both are one click.

    seen in: verify in jira

  20. addedv2.5.0

    Expand all, collapse all, and expanded-by-default

    Header controls expand or collapse the whole tree at any depth, and a settings checkbox makes the gadget open fully expanded. Every level pages in batches of 100, so even a fully expanded 30,000-issue tree stays fast.

  21. addedv2.5.0

    Hourly freshness, and faster for dashboards in use

    An hourly incremental sync picks up changed issues, and a dashboard that someone actually opens kicks its own refresh when data is older than an hour — freshness follows attention. The daily full re-sync remains the correctness floor for deletions and cross-project moves. The footer always shows the exact “data as of” timestamp.

  22. addedv2.5.0

    JQL filter on precomputed rollups

    Narrow a gadget to exactly the issues you care about with a JQL expression — without giving up instant renders: the filter applies on top of the precomputed snapshot. Filtered gadgets are labeled in their header and capture their own daily trend history.

    seen in: verify in jira

  23. changedv2.5.0

    Nothing hidden: unestimated issues are one click away

    Flat issues without a value used to be hidden behind a footer counter, which made an “unestimated” badge count invisible rows. They now collapse into a “No value set” container instead — the badge always points at rows you can open. Issue keys stopped truncating on narrow tiles.

  24. addedv2.5.0

    Open work only mode

    A per-gadget toggle excludes Done-category issues from every rollup, so totals reflect remaining work instead of everything ever logged. Closedness is judged by status category — the one status attribute Jira does not let teams customize — so it means the same thing on every instance. Open children of a closed epic float up rather than disappear.

  25. changedv2.5.0

    Cross-project orphans grouped, not flooding

    Issues whose parents live outside the selected projects used to surface as a flat flood — over a thousand rows drowning the real epics in one test portfolio. They now collapse into a “No parent in view” container at the end of their project group, aggregated correctly and one click away.

  26. addedv2.5.0

    Done column: progress at every level

    Wide tiles gain a Done column showing what share of each subtree’s issues is completed — the classic done-versus-total view, computed from status categories and available at every level of the hierarchy.

  27. addedv2.5.0

    Per-project summary rows

    With two or more projects configured, each gets its own summary row with true aggregates — including a median computed from the project’s full value distribution, which cannot be assembled from sub-totals. Collapse everything and the gadget becomes a one-glance portfolio overview.

    seen in: cross project total

  28. changedv2.5.0

    3x faster renders on large portfolios

    The snapshot read now extracts only the configured field in the database instead of shipping and parsing full field data, and reads are paged so very large portfolios stay under platform response limits. Measured on a 31,230-issue portfolio: ~1.2-1.6 s server-side, down from ~4 s.

  29. changedv2.5.0

    Atomic snapshot generations

    Every background sync now writes under its own snapshot generation and publishes atomically: while a re-sync is in flight, readers keep seeing the previous complete snapshot — never a half-written one. A sync that dies mid-flight recovers on its own.

  30. addedv2.5.0

    Support link, retry buttons, and one-click debug info

    Support in Hierarchy Totals is async by design — so the gadget now carries everything a good ticket needs:

    • A support link in every footer. It opens our contact form with the app pre-selected; what you write lands directly in the backlog we work from.
    • Retry buttons on errors. If the rollup or the trend fails to load, you get a plain-language message and a “Try again” button instead of a dead end.
    • One-click debug info. The “debug” toggle in the footer shows a compact diagnostic block — build, data freshness, counters, config flags, the last background-sync error — and copies it to your clipboard. Paste it into the support form and we can usually act without any back-and-forth. The block contains no issue keys, summaries, or filter text: flags and counts only.
  31. fixedv2.5.0

    The gadget owns its tile

    The gadget now fills exactly the height Jira gives it: configuration header and freshness footer stay pinned, only the table scrolls, scrolling no longer leaks into the dashboard page, and full-screen mode uses the full screen.

  32. addedv2.5.0

    Time-tracking rollups

    Roll up time fields the same way as story points: original estimate, time spent, and remaining estimate are now selectable, with values displayed in hours. “How much work is logged under this epic?” is one gadget away.

  33. addedv2.5.0

    Background precompute: instant rollups at any size

    The core of the app: a background pipeline keeps a snapshot of every watched project inside your Jira, and the gadget reads precomputed data instead of fetching thousands of issues at render time. A 31,000-issue project renders its full rollup tree in about a second — where render-time gadgets hit Jira’s 25-second invocation wall.

  34. fixedv2.5.0

    Survives deleted projects, renamed keys, and removed fields

    Deleted projects are dropped instead of retried forever; renamed project keys keep matching their gadgets; numeric fields deleted from Jira are pruned against the live field list instead of showing confident empty values; projects nobody has rendered for 30 days stop being synced.

  35. changedv2.5.0

    Viewer permission gate on every read

    The gadget now checks the viewer’s Browse Projects permission on every interactive read. A dashboard shared with someone who cannot see a project shows them nothing from it — a hidden-projects note says why. Configuration is read server-side from the gadget context, so a crafted request cannot substitute it.