turn Today readiness blockers into touch-safe in-app preview actions
reuse the existing assign/start and safe Gitea fallback flow
preserve the readiness gate, queue order, and blocker focus across browser Back
refresh the offline shell cache for the updated runtime
Verification
RED: blocker preview controller test failed because previewBlocker did not exist
RED: integrated dashboard test failed because readiness rendered external links
RED: offline shell test failed before cache v75
focused: 69 passed
full: 855 passed in 43.00s
Playwright at 320x720: blocker 85px high, no horizontal overflow, preview showed #443 with Assign & start, safe forge fallback, Back to blockers restored gate and focus
Closes #443
## What changed
- turn Today readiness blockers into touch-safe in-app preview actions
- reuse the existing assign/start and safe Gitea fallback flow
- preserve the readiness gate, queue order, and blocker focus across browser Back
- refresh the offline shell cache for the updated runtime
## Verification
- RED: blocker preview controller test failed because `previewBlocker` did not exist
- RED: integrated dashboard test failed because readiness rendered external links
- RED: offline shell test failed before cache v75
- focused: 69 passed
- full: 855 passed in 43.00s
- Playwright at 320x720: blocker 85px high, no horizontal overflow, preview showed #443 with `Assign & start`, safe forge fallback, `Back to blockers` restored gate and focus
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #443
What changed
Verification
previewBlockerdid not existAssign & start, safe forge fallback,Back to blockersrestored gate and focus