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

Closed
opened 2026-07-06 17:38:47 +00:00 by coilysiren · 4 comments
Owner

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 /calculator page; make the eco-gnome router a homepage card

https://eco-app.coilysiren.me/calculator goes 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 /calculator route + 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 /economy page

https://eco-app.coilysiren.me/economy is 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 (/server or 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 trades ledger + aggregates view from get_eco_trades, folded into its sibling trade page) and integrate on the shared spine so the result is one coherent trading view, not two stapled sections. The trades data shape is in the committed fixture bundle (fixtures/trades.json).

Homepage card bug to fix in this pass: the /trades homepage card's sub-info bubbles labeled "markets" and "volume" render empty. Grounded in the live data:

  • "volume" is a real bug - get_eco_trades returns a populated totalCurrencyVolume (~4907 this cycle) and totalTrades (335). An empty volume bubble means a wrong/unresolved field binding, not an empty state. Wire it to the real value.
  • "markets" maps to get_eco_market.markets[], which is genuinely empty early-cycle (no priced series yet). Confirm it renders a graceful 0/empty-state, not a blank bubble - and that it is not also mis-bound (verify it populates once priced markets exist; fixtures/market.json is the empty-state, fixtures/trades.json carries the populated numbers).
  • Carry both bubbles correctly onto the merged trade card when trades folds in.

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 progression domain: 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

  • Builds on / rebases coilyco-gaming/eco-app#87 (render simplification) - both edit the router/nav/render surface. If #87 has landed, rebase onto it; resolve conflicts in favor of the union (economy removed, non-world pages just-data, these IA changes applied).
  • The "world/region page" #87 keeps as the one rich MCP-app render is the combined map+climate page renamed "world" (change 6). Keep that page's visual widget; every other page stays just-data.

Acceptance

  • /calculator and /economy routes + nav entries gone; the eco-gnome calculator reachable as a homepage card.
  • No standalone progression page; its data lives merged into /jobs as an integrated trajectory view, not an appended block.
  • Router, nav, and any sitemap/link lists updated; no dead links.
  • Build + tests green; docs/FEATURES updated for the reduced page set.
## 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 `/calculator` page; make the eco-gnome router a homepage card `https://eco-app.coilysiren.me/calculator` goes 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 `/calculator` route + 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 `/economy` page `https://eco-app.coilysiren.me/economy` is 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 (`/server` or 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 `trades` ledger + aggregates view from `get_eco_trades`, folded into its sibling `trade` page) and integrate on the shared spine so the result is one coherent trading view, not two stapled sections. The `trades` data shape is in the committed fixture bundle (`fixtures/trades.json`). **Homepage card bug to fix in this pass:** the `/trades` homepage card's sub-info bubbles labeled **"markets"** and **"volume"** render **empty**. Grounded in the live data: - **"volume" is a real bug** - `get_eco_trades` returns a populated `totalCurrencyVolume` (~4907 this cycle) and `totalTrades` (335). An empty volume bubble means a wrong/unresolved field binding, not an empty state. Wire it to the real value. - **"markets"** maps to `get_eco_market.markets[]`, which is genuinely empty early-cycle (no priced series yet). Confirm it renders a graceful `0`/empty-state, not a blank bubble - and that it is not also mis-bound (verify it populates once priced markets exist; `fixtures/market.json` is the empty-state, `fixtures/trades.json` carries the populated numbers). - Carry both bubbles correctly onto the merged **trade** card when trades folds in. ### 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 `progression` domain: `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 - **Builds on / rebases coilyco-gaming/eco-app#87** (render simplification) - both edit the router/nav/render surface. If #87 has landed, rebase onto it; resolve conflicts in favor of the union (economy removed, non-world pages just-data, these IA changes applied). - The "world/region page" #87 keeps as the one rich MCP-app render **is** the combined map+climate page renamed "world" (change 6). Keep that page's visual widget; every other page stays just-data. ## Acceptance - `/calculator` and `/economy` routes + nav entries gone; the eco-gnome calculator reachable as a homepage card. - No standalone progression page; its data lives merged into `/jobs` as an integrated trajectory view, not an appended block. - Router, nav, and any sitemap/link lists updated; no dead links. - Build + tests green; `docs`/FEATURES updated for the reduced page set.
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-eco-app-90 on host KAI-DESKTOP-TOWER is carrying this issue (reserved 2026-07-06T17:39:58Z). 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#90 · branch issue-90 · driver claude · workflow direct-main
  • Run: engineer-claude-eco-app-90 · ward v0.413.0 · dispatched 2026-07-06T17:39:58Z
  • Comment thread: 0 included in the pre-flight read, 0 stripped (ward's own automated comments).

Issue body as seeded:

## 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 `/calculator` page; make the eco-gnome router a homepage card

`https://eco-app.coilysiren.me/calculator` goes 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 `/calculator` route + 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 `/economy` page

`https://eco-app.coilysiren.me/economy` is 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.

## Data shapes (fixtures Kai committed / has)

The merged jobs+pr

… (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

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-eco-app-90` on host `KAI-DESKTOP-TOWER` is carrying this issue (reserved 2026-07-06T17:39:58Z). 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#90` · branch `issue-90` · driver `claude` · workflow `direct-main` - **Run:** `engineer-claude-eco-app-90` · ward `v0.413.0` · dispatched `2026-07-06T17:39:58Z` - **Comment thread:** 0 included in the pre-flight read, 0 stripped (ward's own automated comments). **Issue body as seeded:** ``` ## 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 `/calculator` page; make the eco-gnome router a homepage card `https://eco-app.coilysiren.me/calculator` goes 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 `/calculator` route + 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 `/economy` page `https://eco-app.coilysiren.me/economy` is 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. ## Data shapes (fixtures Kai committed / has) The merged jobs+pr ``` … (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). </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
coilysiren changed title from feat(ui): IA cleanup - drop /calculator (gnome->homepage card) + /economy, merge progression into /jobs to feat(ui): IA cleanup - drop /calculator (gnome->homepage card) + /economy, merge progression into /jobs, rename Server Labs -> Info 2026-07-06 17:40:27 +00:00
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-eco-app-90 on host KAI-DESKTOP-TOWER is carrying this issue (reserved 2026-07-06T17:40:41Z). 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#90 · branch issue-90 · driver claude · workflow direct-main
  • Run: engineer-claude-eco-app-90 · ward v0.413.0 · dispatched 2026-07-06T17:40:41Z
  • Comment thread: 0 included in the pre-flight read, 1 stripped (ward's own automated comments).

Issue body as seeded:

## 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 `/calculator` page; make the eco-gnome router a homepage card

`https://eco-app.coilysiren.me/calculator` goes 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 `/calculator` route + 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 `/economy` page

`https://eco-app.coilysiren.me/economy` is 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 "Server Labs" to "Info"

Rename the **"Server Labs"

… (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

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-eco-app-90` on host `KAI-DESKTOP-TOWER` is carrying this issue (reserved 2026-07-06T17:40:41Z). 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#90` · branch `issue-90` · driver `claude` · workflow `direct-main` - **Run:** `engineer-claude-eco-app-90` · ward `v0.413.0` · dispatched `2026-07-06T17:40:41Z` - **Comment thread:** 0 included in the pre-flight read, 1 stripped (ward's own automated comments). - stripped: @coilyco-ops (2026-07-06T17:40:02Z) **Issue body as seeded:** ``` ## 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 `/calculator` page; make the eco-gnome router a homepage card `https://eco-app.coilysiren.me/calculator` goes 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 `/calculator` route + 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 `/economy` page `https://eco-app.coilysiren.me/economy` is 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 "Server Labs" to "Info" Rename the **"Server Labs" ``` … (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). </details> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Member

🔓 Reservation released by ward container reap — container engineer-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 plain ward agent retry no longer needs --force.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation-released --> 🔓 Reservation released by `ward container reap` — container `engineer-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 plain `ward agent` retry no longer needs `--force`. <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
coilysiren changed title from feat(ui): IA cleanup - drop /calculator (gnome->homepage card) + /economy, merge progression into /jobs, rename Server Labs -> Info to feat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy, merge progression->jobs & trades->trade, rename server page->Info 2026-07-06 17:42:16 +00:00
coilysiren changed title from feat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy, merge progression->jobs & trades->trade, rename server page->Info to feat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy; merge progression->jobs, trades->trade, climate->map(renamed "world"); rename server page->Info 2026-07-06 17:44:12 +00:00
coilysiren changed title from feat(ui): eco-app IA cleanup - drop /calculator (gnome->card) + /economy; merge progression->jobs, trades->trade, climate->map(renamed "world"); rename server page->Info to 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 2026-07-06 17:47:16 +00:00
Author
Owner

WARD-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.

WARD-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.
Sign in to join this conversation.
No description provided.