fix(jobs): widen the title clamp and restore the waiting progress bar #227

Merged
nalum merged 1 commit from fix/job-card-title-progress into main 2026-08-26 18:34:48 +00:00
Owner

Two divergences found by putting the deployed card beside the design's own
reference panel.

The waiting card lost its progress block. The gate read
hasSteps && !waiting; it is now hasSteps alone, which is every rung but
WHAT TO DO. The waiting panel's own 107px floor went with it — with the
indicator back above it, the panel no longer has to carry that budget alone.

The title was 1.05rem where the design says Fredoka 600 at 1.2rem, clamped to
two lines.
The avatar was already right at 28px. The header row moved to top
alignment so the avatar and the repeat glyph sit correctly once a title can
wrap.

312px survived, which was not a foregone conclusion: the title grows every
card and the bar grows the waiting one. Dropping the panel's floor supplied
exactly the slack they spent. Measured 312 / 359 / 415 across the three text
scales, uniform across every state including the worst case — a two-line title
above a restored bar on a waiting card — with no clipping anywhere.

One testing note worth keeping: the first Android clamp test passed against both
the old and the new code, because Robolectric's default LEGACY graphics mode
fakes text measurement. It was rewritten under @GraphicsMode(NATIVE) before
being trusted — a test that cannot fail is worse than no test.

🤖 Generated with Claude Code

Two divergences found by putting the deployed card beside the design's own reference panel. **The waiting card lost its progress block.** The gate read `hasSteps && !waiting`; it is now `hasSteps` alone, which is every rung but `WHAT TO DO`. The waiting panel's own 107px floor went with it — with the indicator back above it, the panel no longer has to carry that budget alone. **The title was 1.05rem where the design says Fredoka 600 at 1.2rem, clamped to two lines.** The avatar was already right at 28px. The header row moved to top alignment so the avatar and the repeat glyph sit correctly once a title can wrap. **312px survived**, which was not a foregone conclusion: the title grows every card and the bar grows the waiting one. Dropping the panel's floor supplied exactly the slack they spent. Measured 312 / 359 / 415 across the three text scales, uniform across every state including the worst case — a two-line title above a restored bar on a waiting card — with no clipping anywhere. One testing note worth keeping: the first Android clamp test passed against both the old and the new code, because Robolectric's default LEGACY graphics mode fakes text measurement. It was rewritten under `@GraphicsMode(NATIVE)` before being trusted — a test that cannot fail is worse than no test. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(jobs): widen the title clamp and restore the waiting progress bar
Some checks failed
check / commits (pull_request) Successful in 10s
android / build (pull_request) Failing after 4m51s
check / go (pull_request) Successful in 2m47s
check / web (pull_request) Failing after 2m49s
android / report (pull_request) Successful in 3s
check / report (pull_request) Successful in 3s
1ce597b574
Two build defects, both found by checking the deployed card against
the design's own reference panels (job-card-explorations.dc.html
9a-9c, build-review-01):

- The waiting panel (§4c) was built to REPLACE the progress block, but
  spec-4h-rulings.md §1 folded WAITING ON into the same panel-filler
  ladder as ONE TO DO and ALL TICKED — all three stand UNDER the
  indicator, none replace it. Panels 3b and 9b both draw the bar above
  the waiting panel. Suppressing it left a non-owner on the Everyone
  board with no read at all on how someone else's job is going, since
  the panel itself is keyed on the reader, not the owner's progress.
  The waiting panel's own 5.9556rem/107dp floor is dropped with it —
  that floor existed only because it used to carry the WHOLE
  indicator-and-panel budget alone; standing under the indicator now,
  it needs no floor of its own, same as the ONE TO DO/ALL TICKED
  panels.

- The header title was 1.05rem with no explicit face (falling through
  to the body font) and a single-line ellipsis. build-review-01's slot
  1 is explicit: "title (Fredoka 600, 1.2rem, clamp 2 lines)". Taken
  to spec on both surfaces; the header row also moves from centred to
  top-aligned so the avatar and repeat glyph sit against the title's
  first line instead of its vertical middle, which only read the same
  while every title was one line.

The clamp-to-two-lines call: build-review-01 states it plainly, and
neither README §4 nor spec-4h-rulings.md say otherwise anywhere in the
actual text — the single-line-ellipsis rule the build shipped with was
the previous engineer's own code comment, not a citation to any design
document, so there is no real conflict to escalate.

Both changes add height (the title on every card, the bar on the
waiting one). Re-measured tests/gallery/heights.spec.ts at 1x/1.15x/
1.33x against every render-job.json case, including the combined
worst case (a wrapped two-line title AND the restored bar, both on
the "waiting on others" fixture): every state still lands on exactly
312/359/415px with zero clipped content. 312 holds; the waiting
panel's floor removal supplies exactly the slack the other two
additions spend.

conformance/render-job.json: the two waiting fixtures move their
progress caption ("N of M done", the percentage) from `absent` into
`expect` — both surfaces read the same JSON.

Android's title got a NATIVE-graphics Roborazzi test
(JobCardTitleClampTest.kt) rather than a Robolectric semantics-bounds
assertion in JobCardTest.kt: LEGACY graphics mode fakes text
measurement (every glyph run comes back a few px regardless of
content), so an absolute-height assertion there passed against BOTH
the old and new code for the wrong reason. NATIVE mode gives real
geometry, the same reason JobDueWorthLayoutTest.kt already needs it.

Form-fragment sweep run over every touched file (JobCard.tsx,
Jobs.kt, app.css): no hits — nothing here is row-grammar markup.

Android test report

Suite Tests Result Skipped
Unit (debug) ❌ 1 failed

Coverage:

Updated by the android workflow · commit 63e0efc053

<!-- android-test-report --> ## Android test report | Suite | Tests | Result | Skipped | | --- | --: | --- | --: | | Unit (debug) | | ❌ 1 failed | | **Coverage:** <sub>Updated by the android workflow · commit 63e0efc05327630f97ffc94c48e247c6e9b07e0e</sub>

Test report

Suite Tests Result Skipped
Unit 1435 ✅ pass 1
Integration 130 ✅ pass —

Coverage: 27.0%

Updated by the check workflow · commit 63e0efc053

<!-- ci-test-report --> ## Test report | Suite | Tests | Result | Skipped | | --- | --: | --- | --: | | Unit | 1435 | ✅ pass | 1 | | Integration | 130 | ✅ pass | — | **Coverage:** 27.0% <sub>Updated by the check workflow · commit 63e0efc05327630f97ffc94c48e247c6e9b07e0e</sub>
nalum force-pushed fix/job-card-title-progress from 1ce597b574
Some checks failed
check / commits (pull_request) Successful in 10s
android / build (pull_request) Failing after 4m51s
check / go (pull_request) Successful in 2m47s
check / web (pull_request) Failing after 2m49s
android / report (pull_request) Successful in 3s
check / report (pull_request) Successful in 3s
to 63e0efc053
Some checks failed
check / commits (pull_request) Successful in 20s
check / go (pull_request) Successful in 2m41s
android / build (pull_request) Failing after 4m34s
check / web (pull_request) Failing after 2m41s
check / report (pull_request) Successful in 5s
android / report (pull_request) Successful in 4s
android / report (push) Has been cancelled
check / commits (push) Has been cancelled
check / go (push) Has been cancelled
check / report (push) Has been cancelled
check / web (push) Has been cancelled
android / build (push) Has been cancelled
tag / tag (push) Has been cancelled
2026-08-26 07:04:06 +00:00
Compare
nalum changed target branch from docs/handoff-4c-progress to main 2026-08-26 18:34:46 +00:00
nalum merged commit 63e0efc053 into main 2026-08-26 18:34:48 +00:00
nalum deleted branch fix/job-card-title-progress 2026-08-26 18:34:49 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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!227
No description provided.