Skip to content

chore(dashboard): comment the Shutter DAO out of the DAO list - #2138

Open
brunod-e wants to merge 2 commits into
devfrom
chore/disable-shu
Open

chore(dashboard): comment the Shutter DAO out of the DAO list#2138
brunod-e wants to merge 2 commits into
devfrom
chore/disable-shu

Conversation

@brunod-e

Copy link
Copy Markdown
Collaborator

Comments SHU out of DaoIdEnum (same move as the commented-out OPTIMISM), which removes Shutter from ALL_DAOS and everywhere the app enumerates DAOs: the panel table, routing (/shu now 404s), the shutter.gov.blockful.io hostname mapping, sitemap/OG surfaces.

Fallout handled

Unlike OP, Shutter had live DaoIdEnum.SHU references, disabled minimally and revertibly:

  • create-proposal/constants.ts — SHU line commented out of canCreateProposalForDao.
  • submitProposalRequest.tsisAzoriusDao returns false (SHU was the only Azorius DAO); the Azorius submit path stays in place, just unreachable.
  • voteOnProposal.ts / submitGovernanceAction.ts — the Azorius vote handler, execute ABI, and their case DaoIdEnum.SHU branches are commented out, so uncommenting restores them verbatim.
  • ProposalHeader.tsx / ProposalSection.tsx — the isShu checks compare against the raw "SHU" string (they take daoId: string), keeping the queue/execute logic intact.
  • useCalldataReview.ts — SHU entry commented out of the dao-proposals repo map.
  • DaoOverviewHeader.tsx — drops the SHU-only 4-decimal price formatting.

shared/dao-config/shu.ts and its registration stay, matching how OP is kept in rawDaoConfigByDaoId with its enum member commented.

Verification

tsc --noEmit clean · eslint 0 errors · 527 tests / 54 suites pass.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Aug 19, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
anticapture-storybook Ready Ready Preview Aug 20, 2026 12:02am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
anticapture Ignored Ignored Aug 20, 2026 12:02am

Request Review

@railway-app

railway-app Bot commented Aug 19, 2026

Copy link
Copy Markdown

🚅 Deployed to the anticapture-pr-2138 environment in anticapture-infra

Service Status Web Updated (UTC)
tempo ✅ Success (View Logs) Aug 20, 2026 at 12:02 am
grafana ✅ Success (View Logs) Web Aug 20, 2026 at 12:01 am
prometheus ✅ Success (View Logs) Aug 20, 2026 at 12:01 am
alertmanager ✅ Success (View Logs) Web Aug 20, 2026 at 12:01 am
loki ✅ Success (View Logs) Aug 20, 2026 at 12:01 am
otelcol ✅ Success (View Logs) Aug 20, 2026 at 12:01 am
authful ✅ Success (View Logs) Web Aug 20, 2026 at 12:01 am
gateful ✅ Success (View Logs) Web Aug 20, 2026 at 12:01 am
uniswap-indexer-offchain ✅ Success (View Logs) Aug 19, 2026 at 11:11 pm
gitcoin-indexer-offchain ✅ Success (View Logs) Aug 19, 2026 at 11:10 pm
shutter-indexer-offchain ✅ Success (View Logs) Aug 19, 2026 at 11:10 pm
ens-indexer-offchain ✅ Success (View Logs) Aug 19, 2026 at 11:10 pm
compound-indexer-offchain ✅ Success (View Logs) Aug 19, 2026 at 11:10 pm
docs ✅ Success (View Logs) Web Aug 19, 2026 at 11:02 pm
mcp ✅ Success (View Logs) Web Aug 19, 2026 at 11:02 pm
obol-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
ens-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
nouns-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
aave-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
obol-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
fluid-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
aave-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
ens-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
gitcoin-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
lil-nouns-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
tornado-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
fluid-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
tornado-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
scroll-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
compound-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
shutter-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
nouns-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
lil-nouns-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
uniswap-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
gitcoin-api ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
shutter-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
address-enrichment ✅ Success (View Logs) Web Aug 19, 2026 at 11:02 pm
uniswap-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
compound-indexer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
ens-relayer ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
erpc ✅ Success (View Logs) Aug 19, 2026 at 11:02 pm
nodeful ✅ Success (View Logs) Aug 19, 2026 at 11:01 pm
scroll-api ✅ Success (View Logs) Aug 19, 2026 at 11:00 pm
user-api ✅ Success (View Logs) Web Aug 19, 2026 at 10:59 pm

@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: 4472ff2d20

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

SCR = "SCR",
OBOL = "OBOL",
SHU = "SHU",
// SHU = "SHU",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove Shutter from config-backed discovery surfaces

Commenting out this enum member makes every /shu route fail toDaoIdEnum, but Shutter remains registered in shared/dao-config/index.ts. Consequently, app/sitemap.ts and app/llms.txt/route.ts, which enumerate Object.keys(daoConfigByDaoId), still publish /shu and its proposal URLs even though those URLs now return 404. Remove the config registration as well, or make these discovery surfaces enumerate enabled DAOs.

Useful? React with 👍 / 👎.

@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

🔍 Vercel preview: https://anticapture-6f2ud1igj-ful.vercel.app

Copy link
Copy Markdown
Collaborator

🎨 UI Review

Automated review · Figma: not found (PR body/comments, ClickUp lists 901320776629/901323162483, and workspace search all came up empty; the matching ClickUp ticket DEV-1155 "Disable Shutter entirely in production" has no description/attachments) · Preview: unreachable from this review environment (network egress blocked to the Vercel preview domain) — regression check below is diff + source-level only, no live preview.
ℹ️ Reviewed without a Figma reference or live preview — grounded in source-level tracing of the DAO-enumeration paths this PR's enum change ripples into, plus UX-expert judgment on the touched components.

This is a narrow, well-executed change — the DaoIdEnum.SHU removal is applied consistently everywhere it's referenced directly (create-proposal/constants.ts, submitProposalRequest.ts, useCalldataReview.ts, submitGovernanceAction.ts, voteOnProposal.ts), all as commented-out/revertible code matching the existing OP precedent, and ProposalHeader.tsx/ProposalSection.tsx correctly preserve their queue/execute logic by comparing against the raw "SHU" string. One gap surfaced by tracing where else the app enumerates DAOs.


Sitemap & llms.txt — dead /shu/* links survive the disablement

The PR description states this change removes Shutter from "everywhere the app enumerates DAOs: the panel table, routing (/shu now 404s), the shutter.gov.blockful.io hostname mapping, sitemap/OG surfaces." The panel table, hostname mapping, and per-route 404 behavior all check out — but two public, crawlable surfaces don't:

  • apps/dashboard/app/sitemap.ts:135const daoIds = Object.keys(daoConfigByDaoId).map((id) => id.toLowerCase());
  • apps/dashboard/app/llms.txt/route.ts:8const daoUrls = Object.keys(daoConfigByDaoId).map(...)

Both iterate the keys of daoConfigByDaoId directly, not ALL_DAOS (= Object.values(DaoIdEnum)). Since rawDaoConfigByDaoId in shared/dao-config/index.ts still has SHU as a plain object-shorthand key (independent of the enum), Object.keys(daoConfigByDaoId) still includes "SHU" even after this PR. Concretely:

  • sitemap.ts's daoEntries will keep emitting /shu, /shu/proposals, /shu/risk-analysis, /shu/token-distribution, /shu/stakeholders, /shu/activity-feed, /shu/resilience-stages, /shu/attack-profitability, /shu/service-providers in sitemap.xml — every one of these now 404s (app/[daoId]/layout.tsx calls toDaoIdEnum(daoId)nullnotFound() since "SHU" is no longer in ALL_DAOS).
  • llms.txt's "Key DAO pages" list keeps {baseUrl}/shu for the same reason.

Net effect: search engines and LLM crawlers keep being pointed at a dead page from the site's own sitemap/llms.txt, which is exactly the kind of stale-link cleanup this PR set out to do. Fix: derive daoIds in both files from ALL_DAOS (lowercased) instead of Object.keys(daoConfigByDaoId).

Worth noting: this is a pre-existing gap, not new — OP has the identical problem today (also still a rawDaoConfigByDaoId key, also absent from ALL_DAOS), so /op is presumably already dead-linked in the current sitemap/llms.txt. Not asking this PR to fix the OP case too, just flagging that fixing it for SHU here (by switching to ALL_DAOS) would fix both DAOs at once. [Code-only]

Not a bug (checked, no change needed): shared/utils/whitelabel.ts's NORMALIZED_HOSTNAME_TO_DAO_ID map has the same root cause (built from daoConfigByDaoId, still resolves shutter.gov.blockful.io"SHU"), but it's harmless — a visit to that hostname gets rewritten internally to /whitelabel/shu/..., and app/whitelabel/[daoId]/layout.tsx re-validates via toDaoIdEnum and correctly notFound()s. End state is a 404 either way, just via one extra internal hop.


DaoOverviewHeader.tsx — price-formatting drop (confirmed harmless)

lastPrice.toFixed(daoId === DaoIdEnum.SHU ? 4 : 2)lastPrice.toFixed(2) (apps/dashboard/features/dao-overview/components/DaoOverviewHeader.tsx:64). Unlike the other touched files, this one drops the SHU special case outright rather than keeping it behind a commented/string-compared check. No live-user impact today since /shu (and the panel entry) are unreachable, so this component never renders for SHU anymore — flagging only so it's not missed if Shutter is ever re-enabled (the 4-decimal formatting would need to be manually re-added, unlike the other call sites which restore verbatim on uncomment). [Code-only]


Generated by Claude Code

# Conflicts:
#	apps/dashboard/features/create-proposal/constants.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants