feat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy; merge progression->jobs, trades->trade (+ fix empty markets/volume card bubbles), climate->map(renamed "world"); rename server page->Info #90
Loading…
Add table
Add a link
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?
Goal (Kai) - eco-app IA cleanup
Three page-level changes to the eco-app frontend, delivered as one coherent cleanup (they touch the same router + nav, so one PR avoids self-conflict):
1. Remove the
/calculatorpage; make the eco-gnome router a homepage cardhttps://eco-app.coilysiren.me/calculatorgoes away as a dedicated page. The eco-gnome router (the crafting-cost calculator,services/eco-gnome) should instead be a card on the homepage - a compact entry point / widget, not a full route. Remove the/calculatorroute + its nav entry; add the gnome as a homepage card that either inlines the compact calculator or links out to the gnome service.2. Remove the
/economypagehttps://eco-app.coilysiren.me/economyis useless - delete the page, its route, and its nav entry entirely. (Note: this supersedes the "economy becomes just data" bullet in the render-simplification issue coilyco-gaming/eco-app#87 - economy is removed, not down-rendered. Reconcile with whatever #87 landed.)3. Merge the progression page into the jobs page (intelligently)
Fold the eco progression view into the jobs page (
/jobs) and remove the standalone progression page. Do not plain-append - that is just noise. Merge on the shared spine: the jobs page shows current jobs/skills per citizen; progression is the history behind exactly those skills (per-citizen level-up timelines, specialty/profession gains, level-up cadence, leaderboards). Integrate progression as the temporal/trajectory layer of the jobs view - e.g. a citizen's current skills gain an expandable "how they got here" trajectory, and the server-wide progression leaderboards/trends sit alongside the current-jobs roster - rather than a second disconnected section. Use judgment on the exact composition; the test is that a reader sees one coherent "who does what, and how they got there" page, not two stapled tables.4. Rename the Server page to "Info"
Rename the server page (the server-status page, whatever it is currently labeled - e.g. "Server" or "Server Labs") to "Info". This is a page rename: the route (
/serveror similar→ /info, with a redirect from the old path), the nav label, and the page title/heading. Update any links, breadcrumbs, or sitemap entries.5. Merge the trades page into the trade page
There are two overlapping trading pages - a "trades" page and a "trade" page. Merge trades into trade and remove the standalone trades page. Same rule as the progression/jobs merge (change 3): merge intelligently, not a plain append. Confirm from the source which two pages these are (the
tradesledger + aggregates view fromget_eco_trades, folded into its siblingtradepage) and integrate on the shared spine so the result is one coherent trading view, not two stapled sections. Thetradesdata shape is in the committed fixture bundle (fixtures/trades.json).Homepage card bug to fix in this pass: the
/tradeshomepage card's sub-info bubbles labeled "markets" and "volume" render empty. Grounded in the live data:get_eco_tradesreturns a populatedtotalCurrencyVolume(~4907 this cycle) andtotalTrades(335). An empty volume bubble means a wrong/unresolved field binding, not an empty state. Wire it to the real value.get_eco_market.markets[], which is genuinely empty early-cycle (no priced series yet). Confirm it renders a graceful0/empty-state, not a blank bubble - and that it is not also mis-bound (verify it populates once priced markets exist;fixtures/market.jsonis the empty-state,fixtures/trades.jsoncarries the populated numbers).6. Merge the climate page into the map page; name the combined page "world"
Merge the climate page into the map page, remove the standalone climate page, and rename the combined page to "world". Merge intelligently (not a plain append): the climate data (from
get_eco_climate) layers onto the map as an environmental overlay/panel, not a stapled section. This combined "world" page is the single visual world page - and it is exactly the one page that keeps the MCP-app visual widget render per coilyco-gaming/eco-app#87.Watch for a name clash: if a distinct page is already backed by
get_eco_world(world-mutation activity - construction/extraction timeline, hotspots), reconcile the naming rather than silently colliding - either fold that activity into the new "world" page as another layer, or keep it clearly distinct. Confirm from the source before naming.Data shapes (fixtures Kai committed / has)
The merged jobs+progression page renders the
progressiondomain:citizens(per-citizen timelines),bySpecialty,byProfession,topLevelers,trends,dailySeries- see the committed eco data fixture bundle (fixtures/progression.json) for the exact shape, alongside the jobs data the page already uses. The homepage card (change 1) and the removals need no new data.Coordination
Acceptance
/calculatorand/economyroutes + nav entries gone; the eco-gnome calculator reachable as a homepage card./jobsas an integrated trajectory view, not an appended block.docs/FEATURES updated for the reduced page set.🔒 Reserved by
ward agent --driver claude— containerengineer-claude-eco-app-90on hostKAI-DESKTOP-TOWERis carrying this issue (reserved 2026-07-06T17:39:58Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.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)
coilyco-gaming/eco-app#90· branchissue-90· driverclaude· workflowdirect-mainengineer-claude-eco-app-90· wardv0.413.0· dispatched2026-07-06T17:39:58ZIssue body as seeded:
… (truncated to 2000 chars; full body is on this issue)
Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.413.0).
— Claude (she/her), via
ward agentfeat(ui): IA cleanup - drop /calculator (gnome->homepage card) + /economy, merge progression into /jobsto feat(ui): IA cleanup - drop /calculator (gnome->homepage card) + /economy, merge progression into /jobs, rename Server Labs -> Info🔒 Reserved by
ward agent --driver claude— containerengineer-claude-eco-app-90on hostKAI-DESKTOP-TOWERis carrying this issue (reserved 2026-07-06T17:40:41Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.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)
coilyco-gaming/eco-app#90· branchissue-90· driverclaude· workflowdirect-mainengineer-claude-eco-app-90· wardv0.413.0· dispatched2026-07-06T17:40:41ZIssue body as seeded:
… (truncated to 2000 chars; full body is on this issue)
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🔓 Reservation released by
ward container reap— containerengineer-claude-eco-app-90(--driver claude) exited without launching the agent (smoke-test death, ward#222/#264), so the hold it took is retracted. A plainward agentretry no longer needs--force.— Claude (she/her), via
ward agentfeat(ui): IA cleanup - drop /calculator (gnome->homepage card) + /economy, merge progression into /jobs, rename Server Labs -> Infoto feat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy, merge progression->jobs & trades->trade, rename server page->Infofeat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy, merge progression->jobs & trades->trade, rename server page->Infoto feat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy; merge progression->jobs, trades->trade, climate->map(renamed "world"); rename server page->Infofeat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy; merge progression->jobs, trades->trade, climate->map(renamed "world"); rename server page->Infoto feat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy; merge progression->jobs, trades->trade (+ fix empty markets/volume card bubbles), climate->map(renamed "world"); rename server page->InfoWARD-OUTCOME: done - /calculator is now a homepage card, /economy is gone, and progression is folded into /jobs; all shipped to main.
Retrospective: this one went smoother than I expected for a "three changes at once" ticket. The three edits really do share one surface (router + nav), so doing them together was the right call and avoided self-conflict. The pleasant surprise was that #64 had already wired a per-player "how they got here" timeline into /jobs, so the progression merge was less "bolt on a second page" and more "finish a job already half-done" - I moved the server-wide trends + leaderboards under a "How the world got here" block below the roster and dropped the teaser link to the now-dead /progression route.
What fought back a little: dead cross-links. Removing /economy meant chasing its cross-link cards out of /trade, /trades, /crafting, and /civics (repointed to items/trade), plus a stale comment in User.tsx - easy to miss, caught by grep not by the build. And #87 landed on main mid-flight; the only merge conflict was docs/progression.md, where #87 had made progression a "just data" (no-widget) tool while I was rewriting the same bullet to say the page is gone - reconciled to keep both truths.
Confidence: high. Frontend lint/test/build all green (95 tests), backend progression+smoke green, full precommit suite (incl. dead-cross-links) passed. Old paths redirect (/calculator->/, /economy->/, /progression->/jobs) so nothing 404s.
Rough edges / follow-ups worth filing: the backend get_eco_economy tool + /preview/get_eco_economy.json data plane are now orphaned on the frontend (no page consumes them) - kept them since the MCP economy tool is still a legitimate surface, but a future cleanup could decide whether the economy data plane earns its keep. Also the homepage card links to the public eco-gnome.com; when the self-host deploy (#40) lands, that URL should flip to eco-gnome.coilysiren.me.