Skip to content

Restore the original War on Disease menu in the campaign app - #313

Closed
mikepsinn wants to merge 2 commits into
mainfrom
feature/match-campaign-menu
Closed

Restore the original War on Disease menu in the campaign app#313
mikepsinn wants to merge 2 commits into
mainfrom
feature/match-campaign-menu

Conversation

@mikepsinn

Copy link
Copy Markdown
Owner

Summary

Makes the warondisease.org navigation menu match the original apps/optimitron War on Disease variant menu again.

At the extraction commit (8d22f5350, 2026-08-07) the variant menu was one flat list of ten items. The campaign app launched with a four-item top bar, was trimmed to two items on 2026-08-13 (f4b31ae16), and on 2026-08-30 (01e429f41) became three accordion sections (Take Action / See Progress / Understand) with eight items, none of which were Manage Humanity, Register a Plaintiff, Get the Shirt, Hang Up Flyers, Go Door to Door, The Joke, Missions, or Tasks.

What changed

  • warondisease.org menu: one flat list in the original order, no accordion. The vote CTA stays at the top of the sheet.
    Sign the Treaty · Manage Humanity · Register a Plaintiff · Remind Presidents · Get the Shirt · Hang Up Flyers · Go Door to Door · The Joke · Earth Optimization Missions · Earth Optimization Tasks
  • Footer: the original four columns (Do Something / Tell Someone Else / Learn Something / Your Organization) with the original items. Campaign-app pages that had no place in the original footer (Tell Two People, The Plan, FAQ, About, Institutes, Treaty Signatories, Search, Volunteer) are appended to the closest column so they stay reachable and in visual coverage.
  • New site-kit nav items for the original entries. Pages that still live only on optimitron.com (plaintiffs, shirt, missions, tasks, people, feedback, court, Humanity v. Government, MCP, developers) link there as external links until they are ported. Impact Analysis links to impact.warondisease.org as before.
  • Labels restored to the originals for two War on Disease items: "Sign the Treaty" (was "Read & Sign the Treaty") and "Join as an Organization" (was "Endorse as an Organization").
  • Smoke check updated for the renamed footer column.

Not matched (call-outs)

  • "Vote" keeps the shared label "Answer the Question" because that nav item is used by every variant.
  • "Read the Manual" and "Listen" keep the shared labels "How to End War and Disease" and "Podcast".
  • Court of Humanity and Humanity v. Government link to optimitron.com because courtofhumanity.org does not resolve yet.
  • The footer grid is four columns, so Your Organization and Contact wrap to a second row (Contact already wrapped before this change).

Pages to review (preview root + path)

  • /?logout=1 on warondisease: open the menu (desktop and phone width) and scroll to the footer.

Verification

  • pnpm test:site-app-navigation: pass
  • tsc --noEmit for @apps/warondisease: pass
  • eslint on the changed site-kit files: pass
  • Before/after screenshots of the menu (desktop, phone width) and footer captured from production and a local dev server and inspected locally.

🤖 Generated with Claude Code

Match the apps/optimitron War on Disease variant menu: one flat list in
the original order (Sign the Treaty, Manage Humanity, Register a
Plaintiff, Remind Presidents, Get the Shirt, Hang Up Flyers, Go Door to
Door, The Joke, Earth Optimization Missions, Earth Optimization Tasks)
with the vote button kept on top, and the four original footer columns.
Pages that still live only on optimitron.com link there until they are
ported. Restore the original labels for the treaty and organization
items, update the smoke check for the renamed footer column, and refresh
the campaign app copy snapshots.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 3, 2026 16:35
@vercel

vercel Bot commented Sep 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
acceleratedmedicine Error Error Sep 3, 2026 6:34pm UTC
warondisease Ready Ready Preview Sep 3, 2026 6:34pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
optimitron-web Ignored Ignored Preview Sep 3, 2026 6:34pm UTC

@vercel
vercel Bot temporarily deployed to Preview – optimitron-web September 3, 2026 16:35 Inactive
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 33 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: 167a2312-e611-4035-b872-f646874d38ec

📥 Commits

Reviewing files that changed from the base of the PR and between fe62d6b and 8a3b71f.

📒 Files selected for processing (21)
  • apps/warondisease/app/about/page.logged-out.md
  • apps/warondisease/app/contact/page.logged-out.md
  • apps/warondisease/app/dashboard/page.logged-out.md
  • apps/warondisease/app/donate/page.logged-out.md
  • apps/warondisease/app/door-to-door/page.logged-out.md
  • apps/warondisease/app/employees/page.logged-out.md
  • apps/warondisease/app/institutes/page.logged-out.md
  • apps/warondisease/app/join/page.logged-out.md
  • apps/warondisease/app/joke/page.logged-out.md
  • apps/warondisease/app/page.logged-out.md
  • apps/warondisease/app/poster/page.logged-out.md
  • apps/warondisease/app/privacy/page.logged-out.md
  • apps/warondisease/app/research/page.logged-out.md
  • apps/warondisease/app/send/page.logged-out.md
  • apps/warondisease/app/signatories/page.logged-out.md
  • apps/warondisease/app/terms/page.logged-out.md
  • apps/warondisease/app/the-plan/page.logged-out.md
  • apps/warondisease/app/treaty/page.logged-out.md
  • packages/site-kit/src/lib/nav-items.ts
  • packages/site-kit/src/lib/site-config.ts
  • scripts/smoke-site-apps.mjs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-03T16:39:14.181692Z c77df49 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c77df492b3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

humanityVGovernmentCase: {
id: "humanityVGovernmentCase",
label: "Humanity v. Government",
path: optimitronUrl("/humanity-v-government"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Point the court links at a reachable fallback

While courtofhumanity.org remains unresolved—the transitional state these links are intended to handle—this URL is still dead: apps/optimitron/src/lib/redirects.js immediately redirects /humanity-v-government to that unresolved host, and the new /court link at line 295 follows the same redirect. Keep both footer links off that redirect path or omit them until the court domain is live.

AGENTS.md reference: AGENTS.md:L25-L27

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valid, and it contradicts this PR's own stated intent — so leaving this thread open for @mikepsinn rather than resolving it.

Verified against apps/optimitron/src/lib/redirects.js:

line 83: { source: "/court",                    destination: "https://courtofhumanity.org/court",                    permanent: false }
line 84: { source: "/humanity-v-government",  destination: "https://courtofhumanity.org/humanity-v-government",  permanent: false }

The PR body says these two nav items "link to optimitron.com because courtofhumanity.org does not resolve yet." But optimitron.com 307s both paths straight back to the domain that does not resolve, so courtOfHumanity and humanityVGovernmentCase — both added in this PR at nav-items.ts:277 and :295 — land the visitor on a dead host with an extra hop first. The fallback is not a fallback.

This needs a human decision because either answer changes user-visible navigation:

I have deliberately not picked one. The two items were added on purpose and listed under "Not matched" in the PR body, so this is a re-decision with corrected information, not an oversight to silently patch away. What is not defensible is shipping as-is, where the menu advertises two pages that cannot load.

Comment thread packages/site-kit/src/lib/site-config.ts

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Some copy-review snapshots are incomplete/inconsistent (homepage footer heading and /send missing footer), and smoke-test messaging still references the old footer label.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Restores the original War on Disease (warondisease.org) navigation and footer structure in the campaign app by switching back to a single flat menu (no accordion) and reinstating the legacy 4-column footer, with some items linking out to optimitron.com until they’re ported.

Changes:

  • Replaces the War on Disease variant’s accordion sidebar sections with the original flat, ordered nav list (vote CTA remains pinned at the top).
  • Restores the original footer column structure/labels and updates smoke assertions to look for the new “DO SOMETHING” column heading.
  • Adds/renames site-kit nav items (including external optimitron.com targets) and regenerates/updates many page.logged-out.md copy snapshots to match the new IA.
File summaries
File Description
scripts/smoke-site-apps.mjs Updates the smoke check to assert the Donate link is under the “DO SOMETHING” footer column.
packages/site-kit/src/lib/site-config.ts Restores War on Disease nav to the original flat list and reinstates the 4-column footer layout and items.
packages/site-kit/src/lib/nav-items.ts Adds legacy War on Disease nav items (some as external optimitron.com links) and restores legacy labels.
apps/warondisease/app/page.logged-out.md Updates the homepage copy snapshot links/footers to match the restored IA.
apps/warondisease/app/about/page.logged-out.md Updates footer snapshot sections/links (and adds manual citations for numbers).
apps/warondisease/app/contact/page.logged-out.md Updates footer snapshot sections/links to the restored columns.
apps/warondisease/app/dashboard/page.logged-out.md Adds/updates the /dashboard logged-out snapshot with the restored footer inventory.
apps/warondisease/app/donate/page.logged-out.md Updates footer snapshot sections/links (and adds manual citations for numbers).
apps/warondisease/app/door-to-door/page.logged-out.md Updates footer snapshot sections/links (and adds manual citations for claims).
apps/warondisease/app/employees/page.logged-out.md Updates footer snapshot sections/links (and updates cited delay-day count in copy snapshot).
apps/warondisease/app/institutes/page.logged-out.md Updates footer snapshot sections/links (and adds manual citations for numbers).
apps/warondisease/app/join/page.logged-out.md Adds the /join logged-out snapshot and includes the restored footer inventory.
apps/warondisease/app/joke/page.logged-out.md Updates footer snapshot sections/links (and adds manual citations for numbers/claims).
apps/warondisease/app/poster/page.logged-out.md Updates footer snapshot sections/links to the restored columns.
apps/warondisease/app/privacy/page.logged-out.md Updates footer snapshot sections/links to the restored columns.
apps/warondisease/app/research/page.logged-out.md Updates footer snapshot sections/links to the restored columns and restores “Sign the Treaty” label.
apps/warondisease/app/send/page.logged-out.md Adds the /send logged-out snapshot content for the new/updated route.
apps/warondisease/app/signatories/page.logged-out.md Updates footer snapshot sections/links (and adds manual citations in the share blurb).
apps/warondisease/app/terms/page.logged-out.md Updates footer snapshot sections/links to the restored columns.
apps/warondisease/app/the-plan/page.logged-out.md Updates footer snapshot sections/links (and adds manual citations for referenced numbers).
apps/warondisease/app/treaty/page.logged-out.md Updates footer snapshot sections/links and restores “Sign the Treaty” label.
Review details
  • Files reviewed: 21/21 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread apps/warondisease/app/page.logged-out.md
Comment thread apps/warondisease/app/send/page.logged-out.md
Comment thread scripts/smoke-site-apps.mjs
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Preview deploy smoke failed

Target: https://warondisease-3vikudb42-mike-p-sinns-projects.vercel.app
Run: https://github.com/mikepsinn/optimitron/actions/runs/33780319567

Route Status Error marker Detail
/api/webhooks/resend 302 none Response did not contain the expected webhook rejection

The smoke request uses the Vercel automation bypass header and checks HTTP 200, owned error markers, and expected h1 text.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

PR review packet

Start here

  • 🖼️ Visual review
  • 📏 Screenshot baseline: exact PR base main@fe62d6b1fda5 from CI run 33776252522.
  • 🚀 War on Disease preview
  • 🚀 Accelerated Medicine preview
  • ☝️ Cmd/Ctrl-click review links to keep this PR open.
  • 🔑 ?login=demo signs in as the demo user; ?logout=1 clears the session.
  • 💬 For a visual problem, use the comment button in latest.html or reply here with @claude and the checklist item.

Agent preflight

The agent checks this only after rerunning the review until every diff is intentional. It resets for each commit.

  • Opened the generated visual review, inspected every changed and copy-only route, and fixed all unexplained drift.

Human review checklist

Agents leave these boxes unchecked. Mike checks them after reviewing the linked evidence.

Changed files considered
  • apps/warondisease/app/about/page.logged-out.md
  • apps/warondisease/app/contact/page.logged-out.md
  • apps/warondisease/app/dashboard/page.logged-out.md
  • apps/warondisease/app/donate/page.logged-out.md
  • apps/warondisease/app/door-to-door/page.logged-out.md
  • apps/warondisease/app/employees/page.logged-out.md
  • apps/warondisease/app/institutes/page.logged-out.md
  • apps/warondisease/app/join/page.logged-out.md
  • apps/warondisease/app/joke/page.logged-out.md
  • apps/warondisease/app/page.logged-out.md
  • apps/warondisease/app/poster/page.logged-out.md
  • apps/warondisease/app/privacy/page.logged-out.md
  • apps/warondisease/app/research/page.logged-out.md
  • apps/warondisease/app/send/page.logged-out.md
  • apps/warondisease/app/signatories/page.logged-out.md
  • apps/warondisease/app/terms/page.logged-out.md
  • apps/warondisease/app/the-plan/page.logged-out.md
  • apps/warondisease/app/treaty/page.logged-out.md
  • packages/site-kit/src/lib/nav-items.ts
  • packages/site-kit/src/lib/site-config.ts
  • scripts/smoke-site-apps.mjs

Updated automatically when this PR's preview or visual review reruns.

@claude

claude Bot commented Sep 3, 2026

Copy link
Copy Markdown

Code review

1. Nav items point to the wrong domain — go through a temporary redirect instead of linking directly

},
humanityVGovernmentCase: {
id: "humanityVGovernmentCase",
label: "Humanity v. Government",
path: optimitronUrl("/humanity-v-government"),
description: "The public case for redirecting 1% of military spending from weapons to cures.",
emoji: "📜",
isExternal: true,
keywords: ["humanity v. government", "case", "lawsuit"],
},
treatyImpact: {
id: "treatyImpact",
label: "Impact Analysis",
path: "https://impact.warondisease.org",
description: "The 1% Treaty impact analysis: lives, years, and dollars.",
emoji: "📊",
isExternal: true,
keywords: ["impact", "analysis", "1% treaty"],
},
courtOfHumanity: {
id: "courtOfHumanity",
label: "Court of Humanity",
path: optimitronUrl(ROUTES.court),
description: "Where humanity tries its governments.",
emoji: "🏛️",
isExternal: true,
keywords: ["court", "jury", "verdict"],
},
optimitronMcp: {

courtOfHumanity (L292-300) and humanityVGovernmentCase (L273-301) use optimitronUrl(...), which resolves to https://optimitron.com/court and https://optimitron.com/humanity-v-government. Those pages no longer live in apps/optimitron — they moved to apps/courtofhumanity (domain courtofhumanity.org). The optimitron.com URLs only work via a temporary 307 redirect in apps/optimitron/src/lib/redirects.js, whose own comment says: "Temporary (307) rather than permanent (308) until courtofhumanity.org resolves... Switch these to permanent once the cutover is done."

The repo already has correctly-configured entries for the same destinations — humanityVGovernment (~L749) and joinCourt (~L767) in the same file — which set canonicalVariant: VARIANTS.COURT_OF_HUMANITY so resolveNavItemsForVariant rewrites them straight to courtofhumanity.org with no redirect hop. Suggest reusing those instead of the two new duplicate entries (relabeling if the footer needs different link text).


2. Footer heading collides with an existing home-page heading and is silently dropped from the generated snapshot

footerSections: [
{
id: "do-something",
label: "DO SOMETHING",
items: ["vote", "plaintiffs", "donate", "feedback"],
},
{

Renaming this section's label to "DO SOMETHING" collides with an existing <h2>DO SOMETHING</h2> body section on the home page (packages/site-kit/src/components/landing/call-to-action.tsx). The copy-snapshot generator (scripts/lib/copy-preview-dom.ts) dedupes on raw rendered text, so this footer heading is now missing from the regenerated home-page snapshot:

### 💀 DEATH CLOCK
- [ANSWER THE QUESTION](/#vote)
- MAKING SUFFERING OPTIONAL
- [REGISTER A PLAINTIFF](https://optimitron.com/plaintiffs)
- [DONATE](/donate)
- [FEEDBACK](https://optimitron.com/feedback)
#### TELL SOMEONE ELSE

Its items now dangle under the branding tagline with no heading, while every other regenerated page (e.g. treaty/page.logged-out.md) still shows #### DO SOMETHING correctly. Per this repo's CLAUDE.md, page.logged-out.md diffs are treated as copy-review evidence, so the home page's snapshot currently misrepresents its own footer. Renaming this footer column (or the CTA heading) to avoid the exact-text collision would fix both the snapshot fidelity and the duplicated wording rendered on the home page itself.


3. Footer restructuring wasn't propagated to vote/page.logged-out.md — snapshot is now stale

// Navigation: keep the vote button primary, then expose the next useful
// campaign actions without turning the sidebar into a route inventory.
// Mirrors the original apps/optimitron War on Disease variant menu: one
// flat list in the same order, no accordion sections. The vote CTA stays
// at the top of the sheet.
topLevelNavItems: [

This PR regenerates the footer copy across roughly 15 pages for the new 4-column structure, but this file wasn't touched by the PR at all and still shows the old 3-column footer:

- Adjust slider to show how you'd split your country's finite resources between the weapons and military vs pragmatic clinical trials to cure diseases.
- MAKING SUFFERING OPTIONAL
#### ACT
- [ANSWER THE QUESTION](/#vote)
- [DONATE](/donate)
#### LEARN
- [ABOUT](/about)
- [FAQ](/faq)
- [THE PLAN](/the-plan)
- [HOW TO END WAR AND DISEASE](https://manual.warondisease.org)
- [PODCAST](https://manual.warondisease.org/listen)
#### CONNECT
- [INSTITUTES](/institutes)
- [VOLUNTEER](/contact)
#### CONTACT
- [hello@warondisease.org](mailto:hello@warondisease.org)

It still has #### ACT, #### LEARN, #### CONNECT instead of the new DO SOMETHING / TELL SOMEONE ELSE / LEARN SOMETHING / YOUR ORGANIZATION columns every other page received. Since /vote renders the same shared footer, this snapshot no longer matches actual output. Needs a pnpm copy re-run that includes this page.

@mikepsinn

Copy link
Copy Markdown
Owner Author

Superseded by #319, which merges this branch with --no-ff so its commits and review threads carry over.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants