@model WriterDashboardViewModel @{ ViewData["Title"] = "Writer Workspace"; var message = TempData["WriterWorkspaceMessage"] as string; var error = TempData["WriterWorkspaceError"] as string; }
Today view
A practical control room for drafting, revision, polish, and story readiness.
Daily plan
No writing schedule configured.
Create Writing Schedule } else { @if (!Model.WritingSchedule.TodayTasks.Any()) {No writing tasks scheduled for today.
} else {| Task Type | Book | Chapter | Scene | Priority | Estimated Minutes | Target Words | Blocked | Writing Plan | |
|---|---|---|---|---|---|---|---|---|---|
| @item.TaskType | @item.BookDisplayTitle | Chapter @item.ChapterNumber: @item.ChapterTitle | Scene @item.SceneNumber: @item.SceneTitle | @(item.Priority?.ToString() ?? "-") | @(item.EstimatedMinutes?.ToString() ?? "-") | @(item.TargetWords?.ToString() ?? "-") | @(item.IsBlocked ? "Yes" : "No") | @item.PlanName |
Upcoming work
No upcoming writing tasks.
} else {| Scheduled Date | Task Type | Book | Chapter | Scene | Estimated Minutes | Target Words |
|---|---|---|---|---|---|---|
| @item.ScheduledDate.ToString("dd MMM yyyy") | @item.TaskType | @item.BookDisplayTitle | Chapter @item.ChapterNumber: @item.ChapterTitle | Scene @item.SceneNumber: @item.SceneTitle | @(item.EstimatedMinutes?.ToString() ?? "-") | @(item.TargetWords?.ToString() ?? "-") |
Schedule
No active schedule
}Write Next
In progress
Revision
Final pass
Story health
@reminder.Detail
} @if (reminder.SceneID.HasValue) { Open scene }