feat(jobs): two-screen creation flow for a new job #230
No reviewers
Labels
No labels
adr
android
area/calendar
area/design-system
area/i18n
area/jobs
area/offline
area/server
area/testing
bug
ci
duplicate
enhancement
help wanted
invalid
notifications
question
reliability
security
severity/low
severity/medium
tracking
web
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app!230
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/job-create-flow"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #177.
The shipped form asked nine questions in one scroll and labelled six of them
(optional)— which §8 calls the form admitting it should not have asked.Screen one asks four things: the title, Who, When, and nothing else. Three
day chips sit under the When row so the common case never opens a picker. The
footer is
MoreplusCreate job—Morerather thanNext, because screentwo is optional and the primary must be reachable from screen one. Screen two
holds repeats, worth, the note and sub-jobs: everything a job can live without on
day one. Both screens commit; only one is required.
Creating is the one screen the laws allow an explicit Save, because nothing
exists to commit a row against until it is pressed. Everything else the sweep
bans is gone: nine
.fieldblocks, six(optional)labels — recounted, theearlier estimate of four was low — and the
type="number"reward input, which isnow the same numeric text entry the Worth picker uses.
The three pickers are reused, not copied. They are wired through the field
row with no
commitprop, and that omission is what keeps a create screen fromraising the §5 flash and snackbar: there is no record yet to have changed. Four
date helpers were exported so the day chips share the When picker's arithmetic
rather than growing a second copy of it.
No Cancel button — the sheet dismisses by drag-down, click-away or Escape,
like every other sheet. No hand-typed dates or times: a
YYYY-MM-DDboxbeside its own picker is two ways to enter one value, and the typed one is the
one that can be wrong.
The uid is minted client-side as a UUIDv7 on both surfaces now — web was relying
on the queue's fallback, Android already did it unconditionally — so an offline
replay converges on
ALREADY_EXISTSrather than duplicating. The chainedcreate → deadline → points path reads the uid back off whichever response
arrives, real or synthesized, so it holds either way.
Sixteen tests, every one confirmed to fail first by breaking the production code
and restoring it.
One gap, flagged rather than fudged: no render-parity fixture or screenshot
golden for the two screens. That format fits presentational cards, not a stateful
two-screen flow with async commits, and building one that is worth having is its
own task. Existing goldens are unchanged and verified.
🤖 Generated with Claude Code
Test report
Coverage: 27.0%
Updated by the check workflow · commit
d96f4369f1Android test report
Coverage:
Updated by the android workflow · commit
d96f4369f1057d571e76d96f4369f1