Skip to content

fix: resolve issues 1139, 1141, 1142, 1143 - #1212

Closed
KingFRANKHOOD wants to merge 539 commits into
accesslayerorg:mainfrom
KingFRANKHOOD:fix/issues-1139-1141-1142-1143
Closed

KingFRANKHOOD wants to merge 539 commits into
accesslayerorg:mainfrom
KingFRANKHOOD:fix/issues-1139-1141-1142-1143

Conversation

@KingFRANKHOOD

Copy link
Copy Markdown
Contributor

Summary

Closes #1139
Closes #1141
Closes #1142
Closes #1143

Chucks1093 and others added 30 commits September 27, 2026 08:19
…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)
cryptBeckley and others added 26 commits October 18, 2026 10:36
…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
@netlify

netlify Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

❌ Deploy Preview for accesslayer failed.

Name Link
🔨 Latest commit df347fe
🔍 Latest deploy log https://app.netlify.com/projects/accesslayer/deploys/6ad717391c3f5374c56e087f

@drips-wave

drips-wave Bot commented Oct 20, 2026

Copy link
Copy Markdown

@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! 🚀

Learn more about application limits

@github-actions

Copy link
Copy Markdown

👋 Thanks for your contribution! We don't accept pull requests directly to main. Please re-open your PR targeting the dev branch instead. See our contributing guide for details.

@github-actions github-actions Bot closed this Oct 20, 2026
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.