Jobs: one row component with the four row states (web and Compose) #171
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app#171
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Part of the jobs flow redesign. The design handoff (
design_handoff_jobs_flow, held outside the repo) is the source; the facts it depends on are repeated here so this issue stands alone.Every field in the new job flow is a row that edits itself. Build the row once per surface before any screen uses it.
Row:
min-height: 52px, a 1px separator below, the label in muted ink at a fixed5.4remcolumn, the value at 1.05rem, then either a chevron or nothing. A chevron means the row opens a picker; no chevron means it edits in place — no exceptions, or the affordance stops predicting anything.Four states, all the same height so nothing below moves when typing starts:
<Field> changed to <value>withUndo. A flash, never a persistent badge, and one snackbar at a time.Undo restores the value and reopens the row.
An open row never accepts a live update; the rest of the sheet keeps refreshing. When a commit overwrites someone else's concurrent change, the snackbar says so.
The offline queue is part of this issue, not an afterthought.
web/src/queue/holds queued writes, so define: the flash fires on enqueue rather than on acknowledgement (the SyncChip is the honest signal for the rest), Undo against a pending write dequeues it instead of sending a compensating write, and a conflict discovered at flush lands as a notice on the sheet, because the snackbar is long gone.ItemService.Updateis partial-safe (internal/services/item/update.go:44-59), so a one-field commit needs no read-modify-write. PreferSetDeadline,AssignUserandSetRepeatwhere they exist;Updaterefuses acompleteflip.