diff --git a/game.py b/game.py
index 11f7526..aec884b 100644
--- a/game.py
+++ b/game.py
@@ -5984,6 +5984,8 @@ PATCH_NOTES = [
("new", "An interrupted cast stays on the enemy's bar for a moment, struck through: ✋ interrupted."),
("balance", "Volley no longer takes arrows: abilities never cost anything. Wyrmscale quiver: Volley 40% harder "
"and Aimed Shot 25% faster."),
+ ("fix", "Work orders on phones: the item picker and reagent slots show names, and picking an item scrolls to "
+ "the amount, price and Post."),
]},
{"date": "2026-10-24", "title": "A dungeon in every area", "notes": [
("new", "Six more dungeons for 2–4, seven pulls each with two mini-bosses and a final boss: Goblin Warren "
diff --git a/static/app.js b/static/app.js
index 59607d1..7c0b13d 100644
--- a/static/app.js
+++ b/static/app.js
@@ -1838,21 +1838,21 @@ function orderSlots(o) {
const name = item(id).name, pool = o.provided[id] || 0, have = S.me.bank[id] || 0;
if (o.status !== "open") {
return `
${item(id).icon}
- ×${fmt(per * all)}
`;
+ ×${fmt(per * all)}${esc(name)}`;
}
const need = per * left;
const who = Object.entries(o.gave || {}).filter(([, items]) => items[id]).map(([uid, items]) => `${playerName(uid)} ${fmt(items[id])}`);
const tip = [`${name}: ${fmt(pool)} / ${fmt(need)}`, ...who].join(" · ");
if (pool >= need) {
return `
${item(id).icon}
- ${fmt(need)}✓
`;
+ ${fmt(need)}✓${esc(name)}`;
}
const give = Math.min(have, need - pool);
// What putting them in pays you once they're crafted: your value's slice of the reagents' share.
const share = o.by === S.uid ? 0 : Math.round(o.reward / o.qty * out * C.input_share * item(id).value / worth * give);
const fill = give ? `${tip} · +${fmt(give)}${share ? ` → ${fmt(share)} gold` : ""}` : `${tip} · 🎒 0`;
return `