The Issue Log is a dedicated active-problems tracker, distinct from the Risk Register. Where risks are potential future events, issues are problems happening right now — blockers, escalations, defects, and anything impeding progress. Issues can be raised directly from any task or Gantt bar, or created standalone in the Issue Log view. Everything lives in the .dplan file alongside your tasks — no separate spreadsheet needed.
Click the Issues tab in the view bar (between Risks and Alerts). The tab shows all open issues for the active project. Switch projects using the sidebar — the log updates immediately.
The Issue Log automatically pulls from two data sources, merged into a single view:
p.issues[])Issues you create explicitly from the Issue Log, a task modal, or a Gantt right-click. These are full issue objects with all fields editable. Stored in project.issues[] inside the .dplan file.
Any task comment flagged as a 🔴 Blocker automatically appears in the Issue Log as a Blocker Comment card (read-only, shown with a 📌 chip). No extra data is created — DPlan simply scans task.comments[].isBlocker. This means any blocker you flag today already exists in the Issue Log retroactively for all existing projects.
Blocker comment cards show the linked task name, the comment text, the author, and the date. They can be marked Resolved directly from the Issue Log without opening the Task Editor.
| Field | Description |
|---|---|
| Title | One-line summary of the issue. Pre-filled from task name when raised via right-click or modal button. |
| Priority | Critical / High / Medium / Low. Maps from task priority when raised from task context. |
| Status | Open / In Progress / Resolved / Closed. Setting to Resolved auto-stamps the resolved date. |
| Category | Technical, Resource, Schedule, Scope, Quality, Dependency, Communication, Budget, External, Other. |
| Description | Full description of what happened and why it matters. |
| Impact | Effect on scope, schedule, cost, or quality — free text. |
| Owner | Who is fixing it. Pre-filled from first assigned resource when raised from task context. |
| Raised By | Who identified the issue. |
| Linked Task | Optional link to a specific task. Pre-filled when raised from task context. |
| Target Date | When the issue should be resolved. Shows ⏰ Overdue badge when past today. |
| Resolved Date | Auto-set when status changes to Resolved. Editable manually. |
| Resolution Note | How the issue was resolved. Visible only when status is Resolved or Closed. |
| Days Open | Auto-calculated from raised date. For resolved issues, shows days to resolution instead. |
Click + Add Issue in the top-right of the Issue Log header. A new blank issue card is inserted at the top, auto-expanded and ready to edit. All fields start empty — no pre-fill.
Open any task (double-click on Gantt, or press Enter on a selected task). In the top-right corner of the task modal header, next to the × close button, there is a red Log Issue button (🔴 icon).
Clicking it:
Issue: [task name].Right-click on any task row (left panel) or any Gantt bar (timeline). A flat context menu appears with:
The menu is dismissed by clicking anywhere outside it, or pressing Escape. It auto-clamps to the viewport so it never disappears off-screen.
Each issue renders as a card in the Issue Log list. Cards are collapsed by default to maximise list density — click anywhere on the card header to expand.
The collapsed header shows (left to right):
Expanding reveals the full form grid: all fields editable inline with auto-save on blur. The resolved date and resolution note fields appear only when status is Resolved or Closed.
Three filter controls appear below the stats strip in the Issue Log header:
| Filter | Options | Behaviour |
|---|---|---|
| Status chips | All / Open / In Progress / Resolved / Closed | Shows only issues matching that status |
| Priority chips | All Priorities / 🔴 Critical / 🟠 High / 🟡 Medium / 🟢 Low | Shows only issues at that priority level |
| Search | Free text | Matches title, description, owner, and linked task name (partial, case-insensitive) |
All three filters combine with AND logic. A Clear Filters button appears when filters are active and no issues match.
The header shows a live strip of issue counts for the current project (both standalone and blocker comment issues combined):
Change status directly from the collapsed card without expanding — optimised for rapid triage in a status meeting.
| Status | Meaning | Behaviour |
|---|---|---|
| Open | Identified but no active fix in progress | Default on creation. Clearing resolved fields if set back from resolved. |
| In Progress | Actively being investigated or fixed | No automatic side effects |
| Resolved | Fix applied, pending verification | Auto-stamps Resolved Date if not already set. Shows resolution note field. |
| Closed | Verified resolved, no further action needed | Same as Resolved. Issue no longer counted in open metrics. |
An issue is Overdue when:
Overdue issues show a ⏰ badge in both the collapsed header and the stats strip. The target date chip turns red. The issue card gets a faint red background tint.
Every issue shows a days open count derived from the raised date:
This feeds the Avg Resolution Time KPI in the Issue Report.
Go to Reports → 🐛 Issue Report to see an analytical view of all issues for the active project.
The report includes:
Click Export ▾ → CSV in the Issue Log header, or click Issues CSV in the Export ribbon. Downloads a UTF-8 CSV with all issues (both standalone and blocker comment issues), including all fields:
ID, Title, Status, Priority, Category, Owner, Raised By, Linked Task, Target Date, Days Open, Overdue, Description, Impact, Resolved Date, Resolution Note
Compatible with Excel, Google Sheets, and project management tools that accept CSV import.
Click Export ▾ → HTML Download in the Issue Log header, or Issues HTML in the Export ribbon. Downloads a self-contained standalone HTML file:
[ProjectName]_IssueLog_[Date].htmlClick Export ▾ → Print / PDF. Opens the browser print dialog immediately. Use Save as PDF in the dialog. For best results use Portrait orientation.
The Blocker overlay in the WBS Tree View counts unresolved blocker comments per task and shows a pulsing 🔴 dot on the affected node. Since blocker comments also appear in the Issue Log, resolving them from the Issue Log removes the blocker dot from the WBS.
Issues and risks are complementary — the same right-click menu lets you raise either from a task. A common workflow is:
There is no automatic link between a risk and an issue — this is by design, keeping the two registers independent. The issue's Linked Task field and the risk's scope field both point to the same task, which is sufficient for correlation during review.
Standalone issues are stored in project.issues[] inside the .dplan JSON file. This array is optional — projects without it load normally and start with an empty register.
Blocker comment issues are derived at read-time from task.comments[].isBlocker — they are not stored separately and cannot be accidentally lost or duplicated.
Resolved dates are stored as ISO 8601 strings ("2026-04-11T09:00:00.000Z"). Target dates are stored as YYYY-MM-DD strings to match Gantt date format.
| Key | Action |
|---|---|
| Click card header | Expand / collapse the issue card |
| Tab | Move between fields in the expanded card |
| Escape | Close the right-click context menu (in Gantt) |
| Enter in Search | Applies search filter immediately (also works live on input) |
See also: Risk Register, Tags, Comments & Blockers, WBS Tree View, Reports.