Skip to content

[#1253] Build MilestoneClimb.tsx (SVG tier chart)#1291

Merged
realproject7 merged 2 commits into
mainfrom
task/1253-milestone-climb
May 26, 2026
Merged

[#1253] Build MilestoneClimb.tsx (SVG tier chart)#1291
realproject7 merged 2 commits into
mainfrom
task/1253-milestone-climb

Conversation

@realproject7

Copy link
Copy Markdown
Owner

Summary

  • SVG milestone climb chart with 4 tier nodes (Bronze $100K, Silver $1M, Gold $5M, Diamond $10M) on logarithmic scale
  • Current FDV marker with arrow indicator positioned on the line
  • Per-tier projected share labels from /api/airdrop/projection (displayed below each tier node)
  • Reached tiers filled with accent color, unreached show as outline
  • dimmed prop for pre-activation visual preview (40% opacity)
  • Fetches /api/airdrop/status for FDV + milestones, /api/airdrop/projection for per-tier shares
  • Mobile-responsive via SVG viewBox

Version

1.37.0 → 1.38.0 (feature)

Closes #1253

🤖 Generated with Claude Code

SVG milestone climb chart with 4 tier nodes (Bronze $100K, Silver
$1M, Gold $5M, Diamond $10M) on log scale. Current FDV marker
with arrow indicator. Per-tier projected share labels from
/projection. Dimmed variant prop for pre-activation state.
Fetches /status for FDV + milestones, /projection for shares.

Closes #1253

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented May 26, 2026

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
plotlink Ignored Ignored May 26, 2026 9:57am

Request Review

@realproject7 realproject7 left a comment

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.

@re2 review — APPROVE ✅

Checked against issue #1253 acceptance criteria:

Criterion Status
SVG renders 4 tier nodes + connecting line
Current FDV marker positioned on line ✅ log-scale arrow indicator
Projected share at each tier ✅ labels below nodes
Dimmed variant (40% opacity, no projection fetch)
Mobile-responsive (SVG viewBox)
Version 1.37.0 → 1.38.0 (feature)

Code notes:

  • Log-scale positioning: log10(mcap) / log10(maxMcap * 1.1) — correctly spaces $100K/$1M/$5M/$10M across the chart
  • FDV clamped to maxMcap * 1.1 to prevent overflow
  • Reached tiers: filled accent circles; unreached: outline only
  • /status fetched unconditionally for FDV + milestones; /projection gated on connected + not dimmed
  • formatMcap utility handles K/M formatting
  • Share labels conditionally rendered (!dimmed && share > 0)

No issues found.

@project7-interns project7-interns left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Verdict: REQUEST CHANGES

Summary

The component adds the SVG milestone chart and reads the expected /status and /projection endpoints, but two #1253 acceptance paths are not met yet: the pre-activation dimmed variant is not actually rendered, and the milestone/FDV log positioning is not normalized to the milestone range.

Findings

  • [high] Pre-activation never renders the dimmed MilestoneClimb variant.

    • File: src/app/airdrop/AirdropStateMachine.tsx:104
    • #1253 requires a dimmed/inactive variant for Pre-activation and an active variant for Mining. This PR adds a dimmed prop, but the pre-activation branch still renders only the connect/ActivationFlow UI; <MilestoneClimb dimmed /> is never mounted, so users never see the required preview state.
    • Suggestion: render the chart in the pre-activation layout with dimmed while keeping the existing active <MilestoneClimb /> in Mining.
  • [medium] Milestone node positions are not correctly normalized for the log scale.

    • File: src/components/airdrop/MilestoneClimb.tsx:87
    • xPos maps log10(mcap) directly over log10(maxMcap * 1.1), so with the configured thresholds Bronze ($100K) lands around 71% of the plot width and Silver/Gold/Diamond bunch near the right edge. The chart leaves most of the baseline empty and the current FDV marker is not positioned relative to the Bronze→Diamond milestone range.
    • Suggestion: normalize using the min and max milestone logs, e.g. (log10(value) - log10(minMcap)) / (log10(maxMcap) - log10(minMcap)), clamping below Bronze and above Diamond as needed.

Decision

Requesting changes until the dimmed pre-activation chart is wired into the page and the milestone scale positions tiers correctly. CI was still pending at review time.

…ation

Render MilestoneClimb dimmed in pre-activation state for visual
preview. Normalize log positioning between min milestone (50K) and
max milestone (1.5x Diamond) so tiers spread evenly across chart
instead of bunching near the right edge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@project7-interns project7-interns left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Verdict: APPROVE

Summary

The requested fixes are resolved. Pre-activation now renders the dimmed MilestoneClimb preview, and the SVG x-positioning is normalized over the milestone log range with clamping for the FDV marker.

Findings

  • None blocking.

Decision

Approving PR #1291. The chart now satisfies #1253 acceptance for active and dimmed states, tier nodes, FDV marker positioning, projected share labels, responsiveness, and latest CI is green.

@realproject7 realproject7 merged commit ada7917 into main May 26, 2026
4 checks passed
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.

[T3.4] Implement MilestoneClimb.tsx (port SVG from v4 backup)

2 participants