[#1253] Build MilestoneClimb.tsx (SVG tier chart)#1291
Conversation
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>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
realproject7
left a comment
There was a problem hiding this comment.
@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.1to prevent overflow - Reached tiers: filled accent circles; unreached: outline only
/statusfetched unconditionally for FDV + milestones;/projectiongated on connected + not dimmedformatMcaputility handles K/M formatting- Share labels conditionally rendered (
!dimmed && share > 0)
No issues found.
project7-interns
left a comment
There was a problem hiding this comment.
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
dimmedprop, 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
dimmedwhile keeping the existing active<MilestoneClimb />in Mining.
- File:
-
[medium] Milestone node positions are not correctly normalized for the log scale.
- File:
src/components/airdrop/MilestoneClimb.tsx:87 xPosmapslog10(mcap)directly overlog10(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.
- File:
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
left a comment
There was a problem hiding this comment.
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.
Summary
/api/airdrop/projection(displayed below each tier node)dimmedprop for pre-activation visual preview (40% opacity)/api/airdrop/statusfor FDV + milestones,/api/airdrop/projectionfor per-tier sharesVersion
1.37.0 → 1.38.0 (feature)
Closes #1253
🤖 Generated with Claude Code