feat: finish onboarding with active Today (Closes #1144)
CI / lint (pull_request) Successful in 2m48s
CI / build-release (pull_request) Successful in 6s
CI / browser-journey (pull_request) Successful in 4m3s
CI / release-candidate (pull_request) Has been skipped

This commit is contained in:
timmy committed 2026-08-19 18:51:15 +00:00
1 parent b4a5401b22
commit ebb7a78cab
4 files changed
+62 -15

No files matched your search

+1
View File
@@ -143,6 +143,7 @@
const mobileFirstTask = createMobileFirstTask({
getLogin: () => confirmedOwnerLogin,
hasWork: () => todayMyWork.length > 0 || activeMyWork.length > 0,
isTodayActive: () => workSession.checkpointed(),
});
mobileFirstTask.start();
const mobileWorkEntry = createMobileWorkEntry({
+2 -2
View File
@@ -1838,8 +1838,8 @@
<p class="small">Choose work, start it, then return to Work whenever you want to continue.</p>
<p id="mobile-first-task-status" class="small" role="status" aria-live="polite"></p>
<div class="mobile-first-task-actions">
<button id="mobile-first-task-find" type="button">Find a task</button>
<button id="mobile-first-task-create" type="button">Create a task</button>
<button id="mobile-first-task-find" type="button">Find &amp; start</button>
<button id="mobile-first-task-create" type="button">Create &amp; start</button>
<button id="mobile-first-task-setup" type="button">Make this phone work-ready</button>
</div>
</section>
+12 -4
View File
@@ -10,11 +10,13 @@
mediaQuery: win?.matchMedia('(max-width: 600px)') || {matches:false},
eventTarget: win,
sheet: doc?.querySelector('#mobile-first-task'),
title: doc?.querySelector('#mobile-first-task-title'),
findButton: doc?.querySelector('#mobile-first-task-find'),
createButton: doc?.querySelector('#mobile-first-task-create'),
setupButton: doc?.querySelector('#mobile-first-task-setup'),
closeButton: doc?.querySelector('#close-mobile-first-task'),
status: doc?.querySelector('#mobile-first-task-status'),
isTodayActive: () => false,
onFind: () => doc?.querySelector('#find-work')?.click(),
onCreate: () => doc?.querySelector('#new-issue')?.click(),
onSetup: () => doc?.querySelector('#open-device-setup')?.click(),
@@ -38,7 +40,7 @@
}
function required() {
return Boolean(options.mediaQuery.matches && account() && !options.hasWork() && !completed());
return Boolean(options.mediaQuery.matches && account() && !options.isTodayActive() && !completed());
}
function markComplete() {
@@ -50,9 +52,14 @@
function render() {
const online = options.isOnline();
const awaitingStart = options.hasWork();
options.findButton.disabled = !online;
options.status.textContent = online ?
'Choose a task to claim or create one of your own.' :
if (options.title) options.title.textContent = awaitingStart ? 'Finish starting your first task' : 'Start your first task';
options.findButton.textContent = 'Find & start';
options.createButton.textContent = 'Create & start';
options.status.textContent = awaitingStart ?
'Your task is ready. Start it from Find or create and start another task.' : online ?
'Choose a task to claim and start, or create and start one of your own.' :
'You are offline. Create a task now and it will stay in Drafts until you reconnect.';
}
@@ -65,12 +72,13 @@
}
function refresh() {
if (account() && options.hasWork() && !completed()) {
if (account() && options.isTodayActive() && !completed()) {
markComplete();
if (options.sheet.open) options.sheet.close();
return 'completed';
}
if (options.sheet.open) render();
if (required() && options.hasWork()) return 'awaiting-start';
return required() ? 'required' : 'inactive';
}