Order of work for the jobs flow redesign (#170-#183) #184
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#184
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?
The jobs surface is being rebuilt from a design handoff
(
design_handoff_jobs_flow, held outside the repo). This issue holds the orderof work; each step is its own issue.
What changes
Viewing and editing become states of one screen. The Edit button and the single
Save go away, on both surfaces —
web/src/pages/Jobs.tsx(2,534 lines) andandroid/.../ItemSheets.kt(1,434 lines) both carry the old model today. Fiverules govern the result:
chevron means it edits in place.
anything, and ticking a repeating job.
Order
Steps 0 and 1 are prerequisites; nothing above them can start first.
Running alongside, and none of them optional:
Anyone/Up for grabs/Take this jobUpdatewrites a sub-job deadline thatSetDeadlinerefusesAlready settled
The design was checked against the server, and five of its assumptions were
wrong. The corrections are folded into the issues above:
Updateis partial-safe, so per-field commits need no read-modify-write.SetParentrefuses a job carrying a repeat rule, a deadline or children — itdoes not strip them. The affordance pre-clears, and is absent when it cannot.
CompleteItemrequires the owner, so a non-owner cannot tick. The footer hasfour states, and the read-only sheet promises nothing.
when Who changes.
eligibility filter then hid — the reward was not returned to the pool, it was
lost. Fixed: the delete transaction now unlinks unclaimed rewards for the
job and each cascaded sub-job, while claimed ones keep their link as settled
history. Commit is local, not yet pushed.
Sub-jobs also turned out to be able to hold a points reward — the server already
mirrors one onto each repeat clone — so the Worth row inside a sub-job stays.
Update — the late-state pass
The handoff added a late state after this plan was written, and the calendar
surfaces moved out to their own handover. Three changes here:
only after the end of that day (reversing a pinned fixture, and closing a
client/server disagreement), plus the shared minute ticker that makes a card
flip at 09:45 without a refresh. It sits with step 1, and #174 and #179 both
depend on it.
celebrate. A tenth role, or a written decision to share it.merged due/points line on the card,
Overdueretired as copy everywhereexcept the stored enum value.
Step 0's server change is done and in review: PR #185. #176 depends on it.
Nothing else in the order changes.
Update — the calendar bundle is now tracked separately
The calendar surfaces have their own handover and their own plan: #199
(#187-#198). The two bundles share the token roles (#170), the row component
(#171) and the minute ticker (#186) — the calendar's rows are that component
with a different payload, so those three are prerequisites for both.
The only contract between the plans: a job opened from a calendar surface is
this bundle's job card, unmodified, and ticking it there is a full
completion site — the mark stamps, linked points auto-claim, celebration
follows. Anything calendar-only on a job card is a bug in one of the two
documents.
One open question crosses over: whether an unowned ("up for grabs") job appears
in calendar views at all depends on #183's answer about where the pool lives.
Update — goldens ride with the PR that breaks them
Re-recording 196 golden images in one late PR would mean one author re-recording
work they did not do, and reviewing a diff nobody can read. The repo rule already
says a visible change re-records its goldens; this plan applies it per PR.
Every UI PR in this plan re-records the goldens it invalidates, in its own
commit inside that PR (
make web-screens-update,make android-screens-update,and
make web-pages-updatewhere a whole-page shot moves). Both surfaces movetogether or the other one's suite fails.
Update — decisions settled, and the model per issue
#183 is closed: creating a points reward inside the job stays. #173 keeps
Make a new onein the Worth picker, and the shippedchangeRewardValueconvenience stays on the job sheet rather than moving to the rewards surface.
#170 is decided: add a tenth role, a
warningwith a matching icon. Note the⚠ glyph is already in the bundled Eagrai Symbols subset, so the icon needs no
font work.
Order and the model each ticket runs on:
Stack base: PR #185 (reward unlink) then PR #200 (these handover docs). Every
branch below stacks on the previous one; merge bottom-first.
Standing requirements for every remaining UI ticket
Added after #213 needed three deploys to come right. Both are now written into
each open ticket:
the same commit as the code; re-recorded existing ones go in their own.
picker components, number spinners, links where rows belong,
(optional)labels, any Save button on a commit-on-blur surface, disabled-and-grey
controls, and a record's title used as a field label.
The second one exists because all seven of #213's defects had the same cause:
the shipped app's form fragments reused inside the new grammar. Suites stay
green through every one of them, because they assert the pieces exist rather
than that the screen reads right.
Every step (#170–#183) is built, audited and merged — the whole chain #185–#254 landed on main 2026-08-26. Remaining follow-ups have their own issues (#217, #234, #235, #236).