Jobs: the detail sheet replaces the view-then-edit split #172

Closed
opened 2026-08-23 19:46:03 +00:00 by nalum · 0 comments
Owner

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.

Today web/src/pages/Jobs.tsx and android/.../ItemSheets.kt both show a read-only sheet with an Edit button and one Save. Replace both with a single surface whose rows are their own controls. No Edit button anywhere, and Save exists only when creating.

Top to bottom: grab handle, title row (owner avatar, title, the ... button), description directly under the title as the job's own words (no label, no box at rest, unclamped, Add a note... for owners), the progress block when there are sub-jobs, the field rows, the To do list, then the footer.

Rows: Who (AssignUser), When (SetDeadline), Worth (RewardService.LinkItem) — all three with a chevron. Repeats is not a row; it lives in the options sheet.

Sub-jobs: a 48px row each, expanding one at a time. The expansion holds Who, Worth, a description, Make it its own job (SetParent with an empty parent) and Remove it. No deadline row — SetDeadline refuses one on an item with a parent_uid (setdeadline.go:35-38). Add another appends to the bottom permanently; sub_items has no ordering field, so do not fake a sort.

Footer, one filled button, four states, because CompleteItem requires the owner (completeitem.go:41):

Condition Footer
No sub-jobs, reader may tick Done
Next unticked sub-job is the reader's Tick "<title>"
Next unticked sub-job is someone else's Waiting on Ali, unfilled, with the reader's own next one offered above it
Reader may not tick at all no footer

Empty means absent: a job with no sub-jobs shows no heading, no progress block and no zero counter.

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. Today `web/src/pages/Jobs.tsx` and `android/.../ItemSheets.kt` both show a read-only sheet with an Edit button and one Save. Replace both with a single surface whose rows are their own controls. **No Edit button anywhere, and Save exists only when creating.** Top to bottom: grab handle, title row (owner avatar, title, the `...` button), description directly under the title as the job's own words (no label, no box at rest, unclamped, `Add a note...` for owners), the progress block when there are sub-jobs, the field rows, the `To do` list, then the footer. Rows: **Who** (`AssignUser`), **When** (`SetDeadline`), **Worth** (`RewardService.LinkItem`) — all three with a chevron. Repeats is not a row; it lives in the options sheet. Sub-jobs: a 48px row each, expanding one at a time. The expansion holds Who, Worth, a description, `Make it its own job` (`SetParent` with an empty parent) and `Remove it`. No deadline row — `SetDeadline` refuses one on an item with a `parent_uid` (`setdeadline.go:35-38`). `Add another` appends to the bottom permanently; `sub_items` has no ordering field, so do not fake a sort. Footer, one filled button, four states, because `CompleteItem` requires the owner (`completeitem.go:41`): | Condition | Footer | |---|---| | No sub-jobs, reader may tick | `Done` | | Next unticked sub-job is the reader's | `Tick "<title>"` | | Next unticked sub-job is someone else's | `Waiting on Ali`, unfilled, with the reader's own next one offered above it | | Reader may not tick at all | no footer | Empty means absent: a job with no sub-jobs shows no heading, no progress block and no zero counter.
nalum closed this issue 2026-08-26 18:34:01 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
eagraiclainne/app#172
No description provided.