No alerts match the current filter.
No activity yet
[[ schedule.description ]]
[[ schedule.schedule_expression ]]
Last run: [[ formatTimeAgo(schedule.last_run) ]] Never run
Loading timesheet data...
No timesheet data yet. Click "Pull Current Week" to fetch from Jira.
| Developer / Ticket | Logged | Estimated | Due Date | Tickets | |
|---|---|---|---|---|---|
| 👤 [[ dev.name ]] | [[ fmtSeconds(dev.total_seconds) ]] | [[ dev.total_estimate_seconds > 0 ? fmtSeconds(dev.total_estimate_seconds) : '—' ]] | [[ dev.entries.length ]] | ||
| [[ entry.issue_key ]] [[ entry.summary ? entry.summary.substring(0, 55) : '' ]][[ entry.summary && entry.summary.length > 55 ? '…' : '' ]] [[ entry.status ]] | [[ fmtSeconds(entry.logged_seconds) ]] | [[ entry.estimate_seconds > 0 ? fmtSeconds(entry.estimate_seconds) : '—' ]] | [[ fmtDueDate(entry.due_date) ]] — |
No team members configured yet.
Click Auto-Reconcile to fetch users from Jira & Slack and let Claude suggest matches,
or Add Member to enter IDs manually.
| Name | Role | Jira Account ID | Slack User ID | Status | Actions | |
|---|---|---|---|---|---|---|
| [[ member.display_name ]] | [[ member.role.replace('_', ' ') ]] — | [[ member.jira_account_id ]] [[ member.jira_display_name ]] Not set | [[ member.slack_user_id ]] [[ member.slack_display_name ]] Not set | [[ member.email || '—' ]] | [[ member.is_active ? 'Active' : 'Inactive' ]] |
|
These replace hardcoded values across all scripts and monitors. DB values take priority over ENV vars.
Loading channels...
| Report / Alert Type | Channel | Env var fallback |
|---|---|---|
| [[ rt.label ]] |
#[[ channelName(settings.assignments[rt.report_type]) ]]
|
[[ rt.env_fallback ]] current: [[ settings.envValues[rt.report_type] ]] not set |
No sprint data loaded yet.
Fetching sprint data from Jira...
ticket_score = (status_weight × 0.6) + (hours_logged / estimate × 0.4)sprint_health = Σ(ticket_score × estimate) / Σ(estimate)
[[ spBannerExplanation ]]
Historical burndown requires fetching Jira changelogs for each ticket.
May take 15–30s for large sprints.
Fetching changelogs from Jira... (~30s for large sprints)
| [[ col.label ]] |
|---|
| [[ row[col.key] ]] [[ row[col.key] ?? '—' ]] |
| [[ activeAuditBlock.totals[col.key] ?? '' ]] |
| [[ col.label ]] |
|---|
| [[ row[col.key] ]] [[ row[col.key] ?? '—' ]] |
| [[ block.totals[col.key] ?? '' ]] |
[[ schedule.description ]]
| [[ col.label ]] |
|---|
| [[ row[col.key] ?? '—' ]] |
| [[ activePlanningAuditBlock.totals[col.key] ?? '' ]] |
| Key | Summary | Status | Hours | Due |
|---|---|---|---|---|
| [[ t.key ]] | [[ t.summary ]] | [[ t.status ]] | [[ t.estimate_hours ]]h | [[ t.due_date || '—' ]] |
Configure which Slack channel each type of report or alert is posted to.
| Report / Alert Type | Channel | Env var fallback |
|---|---|---|
| [[ rt.label ]] |
#[[ channelName(settings.assignments[rt.report_type]) ]]
|
[[ rt.env_fallback ]] current: [[ settings.envValues[rt.report_type] ]] not set |