' +
+ '' + escapeHtml(item.label) + (item.repository ? ' · ' + escapeHtml(item.repository) : '') + '' +
+ '' + escapeHtml(item.title) + '' +
+ '' + escapeHtml(item.preview || 'Unfinished draft') + '' +
+ 'Saved ' + escapeHtml(fmt(item.updated_at)) + '' +
+ '' +
+ '
'
+ ).join('') : 'No unfinished drafts.
';
+ list.querySelectorAll('.draft-resume').forEach(button => {
+ button.addEventListener('click', () => {
+ const item = lastDrafts[Number(button.dataset.draftIndex)];
+ if (!item) return;
+ if (item.kind === 'new-issue') openCreateIssueSheet();
+ else if (item.route) workRoute.open(item.route);
+ });
+ });
+ list.querySelectorAll('.draft-discard').forEach(button => {
+ button.addEventListener('click', () => {
+ if (!window.confirm('Discard this unfinished draft?')) return;
+ draftInbox.discard(button.dataset.draftId);
+ lastDrafts = draftInbox.list();
+ const count = qs('[data-work-count="draft"]');
+ if (count) count.textContent = lastDrafts.length;
+ renderDrafts();
+ qs('#my-work-action-status').textContent = 'Draft discarded.';
+ });
+ });
+ }
+
function updateWorkPaginationControls() {
const labels = { issue: 'issues', pull: 'pull requests', review: 'review requests' };
const streams = activeWorkStreams();
@@ -1166,6 +1208,15 @@ textarea { resize: vertical; min-height: 120px; }
}
function renderMyWork() {
+ lastDrafts = draftInbox.list();
+ const draftCount = qs('[data-work-count="draft"]');
+ if (draftCount) draftCount.textContent = lastDrafts.length;
+ if (selectedWorkFilter === 'draft') {
+ renderDrafts();
+ qs('#bulk-mark-read-bar').hidden = true;
+ qs('#load-more-notifications').hidden = true;
+ return;
+ }
const visible = filterMyWork(lastMyWork, selectedWorkFilter, selectedWorkMilestone);
const incomplete = activeWorkStreams().some(stream => workPagination[stream]?.has_more);
qs('#my-work-list').innerHTML = visible.length ? visible.map(item => {
@@ -1663,13 +1714,14 @@ textarea { resize: vertical; min-height: 120px; }
function openCreateIssueSheet() {
const captureDraft = issueCapture.loadDraft();
- const repositories = lastContextSnapshot?.repos || [];
- qs('#create-issue-repository').innerHTML = repositories.map(repository =>
- '