Home: populate more cards with sub-cards (the '66 settlers' bullet style) #75

Closed
opened 2026-07-06 05:11:16 +00:00 by coilysiren · 4 comments
Owner

The sub-cards on the home cards (the "66 settlers"-style info bullets - see components/StatGrid.tsx / components/Hero.tsx) are nice. Extend more of the Home cards to carry sub-cards where there's relevant per-card detail to show.

Files: frontend/src/pages/Home.tsx, frontend/src/components/StatGrid.tsx, frontend/src/components/Hero.tsx.

The sub-cards on the home cards (the "66 settlers"-style info bullets - see `components/StatGrid.tsx` / `components/Hero.tsx`) are nice. Extend more of the Home cards to carry sub-cards where there's relevant per-card detail to show. Files: `frontend/src/pages/Home.tsx`, `frontend/src/components/StatGrid.tsx`, `frontend/src/components/Hero.tsx`.
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-eco-app-75 on host KAI-DESKTOP-TOWER is carrying this issue (reserved 2026-07-06T05:13:02Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).

run seed context — what this run is carrying (ward#609)
  • Resolved: coilyco-gaming/eco-app#75 · branch issue-75 · driver claude · workflow direct-main
  • Run: engineer-claude-eco-app-75 · ward v0.413.0 · dispatched 2026-07-06T05:13:02Z
  • Comment thread: 0 included in the pre-flight read, 0 stripped (ward's own automated comments).

Issue body as seeded:

The sub-cards on the home cards (the "66 settlers"-style info bullets - see `components/StatGrid.tsx` / `components/Hero.tsx`) are nice. Extend more of the Home cards to carry sub-cards where there's relevant per-card detail to show.

Files: `frontend/src/pages/Home.tsx`, `frontend/src/components/StatGrid.tsx`, `frontend/src/components/Hero.tsx`.

Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0).

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-eco-app-75` on host `KAI-DESKTOP-TOWER` is carrying this issue (reserved 2026-07-06T05:13:02Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. **Do not comment on or edit this issue to steer the run while it is reserved.** The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a **new issue, dispatched fresh** — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494). <details><summary>run seed context — what this run is carrying (ward#609)</summary> - **Resolved:** `coilyco-gaming/eco-app#75` · branch `issue-75` · driver `claude` · workflow `direct-main` - **Run:** `engineer-claude-eco-app-75` · ward `v0.413.0` · dispatched `2026-07-06T05:13:02Z` - **Comment thread:** 0 included in the pre-flight read, 0 stripped (ward's own automated comments). **Issue body as seeded:** ``` The sub-cards on the home cards (the "66 settlers"-style info bullets - see `components/StatGrid.tsx` / `components/Hero.tsx`) are nice. Extend more of the Home cards to carry sub-cards where there's relevant per-card detail to show. Files: `frontend/src/pages/Home.tsx`, `frontend/src/components/StatGrid.tsx`, `frontend/src/components/Hero.tsx`. ``` Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0). </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Author
Owner

🔓 Reservation released by ward container reap — container eco-app (--driver claude) exited at the auth pre-launch gate without launching the agent (ward#222/#264/#609), so the hold it took is retracted. A plain ward agent retry no longer needs --force.

Gate: auth smoke test (claude credentials)

Recovery: Refresh the host claude login (re-run claude on the host to re-auth), then re-dispatch.

error from the gate
auth smoke test: claude -p rejected the credentials (exit 1) - they are unusable in-container (ward#222). Refresh the host claude login (re-run 'claude' on the host) and relaunch; WARD_SMOKE_TEST_SKIP=1 bypasses.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation-released --> 🔓 Reservation released by `ward container reap` — container `eco-app` (`--driver claude`) exited at the **auth** pre-launch gate without launching the agent (ward#222/#264/#609), so the hold it took is retracted. A plain `ward agent` retry no longer needs `--force`. **Gate:** auth smoke test (claude credentials) **Recovery:** Refresh the host claude login (re-run `claude` on the host to re-auth), then re-dispatch. <details><summary>error from the gate</summary> ``` auth smoke test: claude -p rejected the credentials (exit 1) - they are unusable in-container (ward#222). Refresh the host claude login (re-run 'claude' on the host) and relaunch; WARD_SMOKE_TEST_SKIP=1 bypasses. ``` </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-eco-app-75 on host KAI-DESKTOP-TOWER is carrying this issue (reserved 2026-07-06T05:36:05Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).

run seed context — what this run is carrying (ward#609)
  • Resolved: coilyco-gaming/eco-app#75 · branch issue-75 · driver claude · workflow direct-main
  • Run: engineer-claude-eco-app-75 · ward v0.413.0 · dispatched 2026-07-06T05:36:05Z
  • Comment thread: 1 included in the pre-flight read, 1 stripped (ward's own automated comments).

Issue body as seeded:

The sub-cards on the home cards (the "66 settlers"-style info bullets - see `components/StatGrid.tsx` / `components/Hero.tsx`) are nice. Extend more of the Home cards to carry sub-cards where there's relevant per-card detail to show.

Files: `frontend/src/pages/Home.tsx`, `frontend/src/components/StatGrid.tsx`, `frontend/src/components/Hero.tsx`.

Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0).

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-eco-app-75` on host `KAI-DESKTOP-TOWER` is carrying this issue (reserved 2026-07-06T05:36:05Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. **Do not comment on or edit this issue to steer the run while it is reserved.** The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a **new issue, dispatched fresh** — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494). <details><summary>run seed context — what this run is carrying (ward#609)</summary> - **Resolved:** `coilyco-gaming/eco-app#75` · branch `issue-75` · driver `claude` · workflow `direct-main` - **Run:** `engineer-claude-eco-app-75` · ward `v0.413.0` · dispatched `2026-07-06T05:36:05Z` - **Comment thread:** 1 included in the pre-flight read, 1 stripped (ward's own automated comments). - included: @coilysiren (2026-07-06T05:13:34Z) - stripped: @coilyco-ops (2026-07-06T05:13:06Z) **Issue body as seeded:** ``` The sub-cards on the home cards (the "66 settlers"-style info bullets - see `components/StatGrid.tsx` / `components/Hero.tsx`) are nice. Extend more of the Home cards to carry sub-cards where there's relevant per-card detail to show. Files: `frontend/src/pages/Home.tsx`, `frontend/src/components/StatGrid.tsx`, `frontend/src/components/Hero.tsx`. ``` Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0). </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Author
Owner

WARD-OUTCOME: done - live sub-card badges added to the economy, trades, crafting, climate, and ecoregion Home cards

This one was a clean extension of an existing groove. The useTradePulse/useCivicsPulse hooks already set the exact shape — one-shot best-effort fetch, abort on unmount, leave the badge absent on any failure — so the five new pulse hooks were basically fill-in-the-blank against the typed API clients that already existed for each surface. The nicest surprise was how little glue was needed: every card I wanted to light up already had a lib/*Api.ts client and a /preview/get_eco_*.json endpoint, so no backend work at all.

The one thing that fought back a little was the test. The existing Home test stubbed a single fetch mock returning the status payload for every URL, which quietly worked only because the new hooks throw-and-swallow on a mismatched shape. I added a URL-routing mock so the new badges are actually asserted rather than incidentally absent.

Fairly confident in the result — lint, typecheck, build, and the full vitest suite are green on the merged tree, and the graceful-degrade contract means a missing endpoint just hides the badge. Deliberately left replay (local-only service), calculator, and community badge-less since they have no live fused-surface detail. Possible follow-up: the top-item/ecoregion-match pills can get long on narrow viewports; a max-width + ellipsis on .mini-pill might be worth a small polish issue if it looks cramped in the wild.

WARD-OUTCOME: done - live sub-card badges added to the economy, trades, crafting, climate, and ecoregion Home cards This one was a clean extension of an existing groove. The `useTradePulse`/`useCivicsPulse` hooks already set the exact shape — one-shot best-effort fetch, abort on unmount, leave the badge absent on any failure — so the five new pulse hooks were basically fill-in-the-blank against the typed API clients that already existed for each surface. The nicest surprise was how little glue was needed: every card I wanted to light up already had a `lib/*Api.ts` client and a `/preview/get_eco_*.json` endpoint, so no backend work at all. The one thing that fought back a little was the test. The existing Home test stubbed a single fetch mock returning the status payload for every URL, which quietly worked only because the new hooks throw-and-swallow on a mismatched shape. I added a URL-routing mock so the new badges are actually asserted rather than incidentally absent. Fairly confident in the result — lint, typecheck, build, and the full vitest suite are green on the merged tree, and the graceful-degrade contract means a missing endpoint just hides the badge. Deliberately left replay (local-only service), calculator, and community badge-less since they have no live fused-surface detail. Possible follow-up: the top-item/ecoregion-match pills can get long on narrow viewports; a max-width + ellipsis on `.mini-pill` might be worth a small polish issue if it looks cramped in the wild.
Sign in to join this conversation.
No description provided.