Repository navigation
fix: resolve issues 1139, 1141, 1142, 1143 - #1212
Closed
KingFRANKHOOD wants to merge 539 commits into
Closed
KingFRANKHOOD wants to merge 539 commits into
KingFRANKHOOD wants to merge 539 commits into
Conversation
…file-dashboard feat: add user profile page with held keys, staking positions, and tr…
# Conflicts: # src/lib/queryKeys.ts # src/pages/ProfilePage.tsx # src/routes.tsx
…e-bond-status-panel-on-creator-key-detail-page feat: add performance bond status panel on creator key detail page
…atomic-swap-ui feat: add atomic swap proposal and acceptance UI
…-#983 feat(accesslayerorg#983): add merge proposal voting UI for source key holders
feat: add pre-launch auction phase UI for creator key listings (accesslayerorg#924) :wq :wq Adds the reader-facing view of a creator key's pre-launch bidding window: a live countdown driven by the auction end timestamp, a validated bid input (floor = highest bid + min increment), a ranked/leader-highlighted bid history that polls on an interval, an outbid state when the connected wallet :wq stops leading, and an automatic transition back to the bonding curve page once the auction closes. Wires the page to the pre-launch auction config surfaced in accesslayerorg#816/accesslayerorg#808 and :x follows the polling/invalidation patterns established by the marketplace price work in accesslayerorg#918.
…erorg#1020) Show distinct wallets that have bought or sold the key in the key stats panel, refreshed every 5 minutes, with an accessible tooltip and a trend indicator vs the previous 24 hours.
…-unique-trader-count-stat feat: add unique trader count stat to key detail analytics (accesslayerorg#1020)
Add the fast-check integration test covering all four correctness properties and edge cases for FeaturedCreatorAudienceChip, and restore LandingPage.keyboard.test.tsx which was broken at HEAD by the missing QueryClientProvider and wagmi useAccount mock. Marks spec tasks 5 and 6 complete. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
Deprecated creator keys were indistinguishable from live ones across the app (issue accesslayerorg#996). This adds the deprecation notice flow: - Course gains an optional deprecation record (deprecatedAt, reason, successorId, successorName) served by the API when a key is deprecated. - DeprecationBanner renders on the key detail page: deprecation date, reason, and the successor key when one is designated, with a Migrate now CTA routing to the successor key's page. Dismissal is per-visit — a deprecation is a standing fact, not a promo. - Marketplace listing cards mark deprecated keys with a Deprecated badge so buyers see the status before clicking through. The in-app notification on the deprecation event rides the existing notification service (server-pushed Notification rows render on /notifications); no client changes needed there.
Add imports for BundleManagementPage, AtomicSwapCreatePage, and AtomicSwapProposalPage to resolve CI build errors. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ccesslayerorg#1015) Display a holding cap indicator on the buy form showing the user's current balance relative to the key's maximum holding cap, and block submission when the purchase would exceed it. - Add HoldingCapIndicator component with accessible progress bar and tooltip - Provide inline warnings as purchase quantity changes - Disable buy button with cap exceeded / reached messages - Hide holding cap indicator when cap is unlimited or unconfigured - Add comprehensive unit and integration test coverage
…pact warnings (accesslayerorg#1034) Show real-time price impact indicator on buy forms (TradeDialog and BuySellKeyFlow), display approaching and breached warning banners when impact reaches threshold, and disable buy submission with circuit breaker warning when threshold breached. Closes accesslayerorg#1034
) - Add TradeCooldownButton showing a live per-second countdown while a creator-set trade cooldown is active, with a tooltip explaining the policy - Fetch cooldown via GET /keys/:keyId/trade-cooldown (404 -> no cooldown) through useTradeCooldownStatus; invalidate after each settled trade - Wire into LandingPage featured/holdings trades and CreatorDetailPage buy flow, falling back to position-level nextBuyAllowedAt (accesslayerorg#873)
…118-1119-1120-1121 Feat/multi 1118 1119 1120 1121
…-issues-1131-1134 feat: improve assigned key detail workflows
…115-1116-1117 feat: Implement issues 1113, 1115, 1116, 1117
…esslayerorg#1135) - Add pending/completed tabs to the multi-sig admin panel - Display target contract, function, and params on pending actions - Enable execute only at the M-of-N signature threshold - Show access-denied state for non-signer wallets
…t/issue-1152-price-floor-indicator feat(trading): implement price floor indicator and sell block UI on key detail (accesslayerorg#1152)
…-action-approval-1135 feat: implement multi-sig action approval UI for protocol admins (accesslayerorg#1135)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…chain-alert-preferences Implement on-chain alert preferences
…66-build-key-merge-proposal-ui-for-dual-creator feat: add key merge proposal UI components for dual-creator consolidation
…1164-key-launch-auction-ui feat(auction): build key launch auction UI for initial price discovery bidding (accesslayerorg#1164)
Adds computeBuyCostPreview/computeSellPayoutPreview, a bigint curve engine cross-validated against the existing float curve (computeBuyCost/computeSellRevenue), plus slippage classification and a worst-case-buffer helper. PriceImpactSlider composes these into an interactive quantity slider showing gross/net cost or payout, the resulting price, a colour-coded slippage badge (green under 1%, yellow 1-5%, red over 5%), and the worst-case XLM figure for buys. Reduced scope from the full issue: the canvas sparkline chart and the strict <16ms/1000-slider-move performance assertion are not included. The curve engine, slider, and fee/slippage breakdown it was built to drive are the parts this covers. Closes accesslayerorg#755
Adds classifyVolumeDiscountTier (bronze/silver/gold, by cumulative wallet volume), getTierDiscountBps, and computeTierProgress, plus two presentational components: VolumeTierBadge (the badge itself, with a tooltip showing volume needed for the next tier, rendering nothing for a wallet with no tier) and TierFeeBreakdown (base fee / tier discount / final fee for the trade confirmation screen). Both take the wallet's tier and cumulative volume as props rather than fetching them, since this repo has no existing endpoint for wallet-level trading volume; wiring the fetch-on-connect + session cache is left to whoever adds that endpoint, and these components compose with it either way. Closes accesslayerorg#1102
… page The creator key detail page already showed avatar, display name, and bio via CreatorProfileHeader, but never surfaced published social links (Twitter, website, Discord) or a way to reach the creator's full public profile page — both exist already, just not here. Adds CreatorSocialSection, reusing the existing resolveCreatorSocialLinks/CreatorProfileSocialLinks (the same ones the public profile page already uses) so the links stay consistent across both pages, plus a link to /creator/<address>/profile. Renders nothing extra when the creator hasn't published any links. Closes accesslayerorg#1103
…er-assigned-batch feat: price impact slider, fee tier badge, creator social section
…cated to their creator keys, see their per-snapshot allocation, and claim individually or in bulk via the on-chain claim_airdrop contract call. Includes claim history, empty/error states
The page fetches airdrop allocations from GET /users/:wallet/airdrop-claims through a new cached service and groups unclaimed airdrops under their creator key, showing the snapshot date, total distributed, and the wallet's allocation for each. Each airdrop has a Claim button that submits a signed claim_airdrop({ airdrop_id, recipient }) Soroban call via a new injectable-factory contract service modeled on the governance service. A Claim All button sequentially claims every unclaimed airdrop across all held keys in one flow, with each claim getting its own signature and a mid-flow failure leaving earlier claims intact. Claimed airdrops move to a history section showing the received amount and claim date, and the page includes a wallet-connect prompt, loading skeletons, an error state, a "no airdrops yet" empty state, and an "all claimed" empty state. The implementation adds the airdropClaims query-key family, hooks for the query and both claim mutations, and registers the route with a RouteErrorBoundary. Tests cover the backend service, the contract call arguments and guards, and eight page integration cases including single claim, claim all sequencing, history rendering, and empty states.
Closes accesslayerorg#1154
…#1154-Build-holder-airdrop-claim-page-with-snapshot-allocation-breakdown Adds an /airdrop-claims page where holders can view all airdrops allocated to their creator keys, see their per-snapshot allocation, and claim individually or in bulk via the on-chain claim_airdrop contract call. Includes claim history, empty/error states
…rorg#1142, accesslayerorg#1143 Issue accesslayerorg#1139 — Portfolio rebalance UI with target allocation configuration - Added src/services/rebalance.service.ts: getRebalancePreview POST endpoint - Added src/utils/rebalance.utils.ts: allocation validation, sum, build helpers - Added src/hooks/useRebalance.ts: useRebalancePreviewMutation and useExecuteRebalanceMutation using execute_rebalance contract call - Added src/components/common/PortfolioRebalancePanel.tsx: per-key target % inputs, running sum validator with error when not 100%, Preview Rebalance button, swap preview results, Execute Rebalance button (disabled until valid), RebalanceExecuted toast on confirmation - Wired into ProfilePage.tsx as new "Rebalance" tab Issue accesslayerorg#1141 — Holder milestone rewards tracker on portfolio page - Added src/services/milestoneRewards.service.ts: GET /wallets/:wallet/milestone-rewards - Added src/utils/milestoneRewards.utils.ts: resolveMilestoneState (claimed/claimable/locked), milestoneProgressPercent, hasAnyMilestones - Added src/hooks/useMilestoneRewards.ts: useMilestoneRewards query and useClaimMilestoneReward mutation (claim_milestone_reward contract call with optimistic cache update) - Added src/components/common/MilestoneRewardsSection.tsx: per-key milestone cards (30/90/180/365d), progress bars, claim buttons, claimed state with received amount and date, empty state - Wired into ProfilePage.tsx as new "Milestones" tab Issue accesslayerorg#1142 — Key analytics chart with daily snapshot history - Added src/services/keySnapshotHistory.service.ts: GET /keys/:key_id/snapshots?range=X - Added src/utils/keySnapshotHistory.utils.ts: buildSnapshotHistoryPoints, formatMetricValue, range/metric constants - Added src/hooks/useKeySnapshotHistory.ts: useKeySnapshotHistory query (5-min stale time) - Added src/components/common/KeyAnalyticsHistoryChart.tsx: Recharts LineChart with metric tabs (Price/Volume/Holders/Market Cap), date range picker (7d/30d/90d/All Time), tooltip with exact values, connectNulls=false for sparse data, no animation flicker on metric switch via key prop - Wired into CreatorDetailPage.tsx as "Analytics History" section Issue accesslayerorg#1143 — Key reputation score display - Added src/services/keyReputation.service.ts: GET /keys/:key_id/reputation - Added src/utils/keyReputation.utils.ts: buildReputationRadarData, clampReputationScore, reputationTier, REPUTATION_METHODOLOGY_TOOLTIP - Added src/hooks/useKeyReputation.ts: useKeyReputation query (5-min stale time) - Added src/components/common/ReputationScoreBadge.tsx: badge on discovery KeyCard showing score/1000 with tooltip explaining methodology - Added src/components/common/ReputationBreakdownPanel.tsx: Recharts RadarChart for four metrics, per-metric dl breakdown, composite score - Wired ReputationScoreBadge into DiscoveryKeyCard.tsx - Wired ReputationBreakdownPanel into CreatorDetailPage.tsx as "Reputation" section - Added queryKeys entries for snapshotHistory, reputation, milestoneRewards, rebalance
❌ Deploy Preview for accesslayer failed.
|
|
@KingFRANKHOOD Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
|
👋 Thanks for your contribution! We don't accept pull requests directly to |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PortfolioRebalancePanelcomponent wired into ProfilePage as a Rebalance tabMilestoneRewardsSectioncomponent wired into ProfilePage as a Milestones tabKeyAnalyticsHistoryChart(Recharts) wired into CreatorDetailPageCloses #1139
Closes #1141
Closes #1142
Closes #1143