feat: keep adaptive mobile Work actionable offline (Closes #1458)
CI / lint (pull_request) Successful in 3m52s
CI / build-release (pull_request) Successful in 6s
CI / browser-journey (pull_request) Successful in 7m49s
CI / release-candidate (pull_request) Has been skipped

This commit is contained in:
timmy committed 2026-08-27 05:59:13 +00:00
1 parent 2432d4fc03
commit b0b051184b
4 files changed
+99 -2

No files matched your search

+3 -1
View File
@@ -112,6 +112,7 @@
}
let queueCounts = {};
let preparationItems = {};
let offlineWorkMode = false;
let renderMobileQueuePresentation = () => {};
const followingQueue = attachFollowing(item => {
searchPreviewReturnKind = 'following';
@@ -181,6 +182,7 @@
firstAction: name => qs('#my-work-list .my-work-card-main, #my-work-list .draft-resume, #my-work-list .draft-continue, #my-work-list .draft-edit'),
announce: announceWork,
getCounts: () => queueCounts,
isOnline: () => !offlineWorkMode,
getPreparation: () => {
const briefing = mobileStartDay.briefing();
return {...briefing, active:mobileStartDay.state().active};
@@ -354,7 +356,6 @@
qs('#empty-work-find').addEventListener('click', () => qs('#find-work').click());
qs('#empty-work-create').addEventListener('click', () => qs('#new-issue').click());
let liveMode = true;
let offlineWorkMode = false;
const WORK_FILTER_KEY = 'stackchain.my-work-filter.v1';
const WORK_MILESTONE_KEY = 'stackchain.my-work-milestone.v1';
const WORK_FILTERS = ['all', 'today', 'agenda', 'attention', 'filed', 'authored', 'issue', 'pull', 'review', 'update', 'later', 'draft'];
@@ -7937,6 +7938,7 @@
}
function setOfflineWorkMode(value) {
offlineWorkMode = value;
renderMobileQueuePresentation();
['#find-work', '#start-work-session', '#load-more-work', '#load-more-notifications', '#bulk-mark-read']
.forEach(selector => { const button = qs(selector); if (button) button.disabled = value; });
if (value) {
+5 -1
View File
@@ -22,6 +22,7 @@
['draft', 'Open Drafts'],
];
const activeQueueNames = continuation.map(([name]) => name);
const onlineOnlyQueues = new Set(['delivery', 'gate']);
const allQueues = [
'today', 'tomorrow', 'week', 'agenda', 'delivery', 'gate', 'attention',
'update', 'following', 'filed', 'authored', 'later', 'draft', 'find', 'recaps',
@@ -29,7 +30,10 @@
function recommend() {
const counts = options.getCounts ? options.getCounts() : {};
const match = continuation.find(([name]) => Number(counts[name]) > 0);
const online = options.isOnline ? options.isOnline() : true;
const match = continuation.find(([name]) =>
Number(counts[name]) > 0 && (online || !onlineOnlyQueues.has(name))
);
if (!match) return {name: 'find', count: 0, label: 'Find Work'};
const [name, label] = match;
const count = Math.max(0, Number(counts[name]) || 0);