Skip to content

Organization fixes#337

Merged
0xdevcollins merged 6 commits into
boundlessfi:mainfrom
Benjtalkshow:organization-fixes
Oct 20, 2025
Merged

Organization fixes#337
0xdevcollins merged 6 commits into
boundlessfi:mainfrom
Benjtalkshow:organization-fixes

Conversation

@Benjtalkshow

Copy link
Copy Markdown
Collaborator

No description provided.

@0xdevcollins
0xdevcollins merged commit 20a035f into boundlessfi:main Oct 20, 2025
6 of 10 checks passed
0xdevcollins pushed a commit to Benjtalkshow/boundless that referenced this pull request Jul 5, 2026
Fill the management dashboard's Submissions tab: list submitted work from
the organizer submissions endpoint (boundlessfi#337) with submitter identity, status,
the content link plus documentation/tweet/demo/media, and submitted-at.
Respect submissionVisibility — competition work stays sealed (and unfetched)
until the deadline. Adds a client-side 'stage for payout' selection that
feeds winner selection (boundlessfi#633).
0xdevcollins pushed a commit to Benjtalkshow/boundless that referenced this pull request Jul 5, 2026
Fill the management dashboard's Submissions tab: list submitted work from
the organizer submissions endpoint (boundlessfi#337) with submitter identity, status,
the content link plus documentation/tweet/demo/media, and submitted-at.
Respect submissionVisibility — competition work stays sealed (and unfetched)
until the deadline. Adds a client-side 'stage for payout' selection that
feeds winner selection (boundlessfi#633).
0xdevcollins added a commit that referenced this pull request Jul 5, 2026
* feat(bounty): submissions review tab (#632)

Fill the management dashboard's Submissions tab: list submitted work from
the organizer submissions endpoint (#337) with submitter identity, status,
the content link plus documentation/tweet/demo/media, and submitted-at.
Respect submissionVisibility — competition work stays sealed (and unfetched)
until the deadline. Adds a client-side 'stage for payout' selection that
feeds winner selection (#633).

* fix(bounty): review fixes for submissions tab (#632)

- rebase onto the #630 review fixes (ace008f); port listBountySubmissions
  to apiClient/unwrapData and drop the hand-rolled query serializer
- lift winner staging into the dashboard so it survives tab switches and
  can feed the Payout tab (#633)
- add pagination (backend caps pages at 50, defaults to 20): pager UI plus
  showing-x-of-y, so large bounties are no longer silently truncated
- unlock the hidden-until-deadline gate live via a 30s recheck; do not gate
  when no deadline exists; label the gate as UX-only in comments (the
  organizer endpoint returns submissions regardless of visibility)
- type submissionVisibility as the generated enum end to end, dropping the
  fails-open '' fallback
- share submissionStatusClass from statusClass.ts; import ordinal from
  lib/utils; drop redundant retry: false
- show tier amounts with full precision and the reward currency
- render non-link submitter when no username; optimize Cloudinary media
  thumbs (96px) instead of full-size unoptimized originals; index media keys
- fold hook options into one bag: useBountySubmissions(org, id, { params, enabled })

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
0xdevcollins added a commit that referenced this pull request Jul 5, 2026
* chore(bounty): refresh codegen for v2 organizer DTOs

Regenerate the OpenAPI schema against v2 to pull the new organizer DTOs
(BountyOperateOverviewDto, OrganizerBountySubmissionDto,
BountyAnnouncementDto, etc.). Drop applicationCreditCost from the bounty
publish request body; the backend removed it from PublishBountyEscrowDto
and now applies it server-side from the draft.

* feat(bounty): management dashboard shell + overview (#630)

Add the per-bounty organizer management hub at
/organizations/[id]/bounties/[bountyId]: a tabbed shell (Overview,
mode-aware Applications, Submissions, Payout & Winners, Settings) with the
status + mode header, and an Overview tab that consumes the operate-reads
endpoint (#338) for intake stats, deadlines, and prize tiers. Non-overview
tabs are placeholders for the follow-up issues (#631-#634).

* feat(bounty): submissions review tab (#632)

Fill the management dashboard's Submissions tab: list submitted work from
the organizer submissions endpoint (#337) with submitter identity, status,
the content link plus documentation/tweet/demo/media, and submitted-at.
Respect submissionVisibility — competition work stays sealed (and unfetched)
until the deadline. Adds a client-side 'stage for payout' selection that
feeds winner selection (#633).

* feat(bounty): winner selection + payout tab (#633)

Fill the management dashboard's Payout & Winners tab: assign anchored
submissions to prize tiers (one winner per tier, single-claim = 1,
competition = 1-N), then drive the single select-winners escrow op
(useBountyPayout, organizer scope; MANAGED signs server-side, EXTERNAL via
wallet kit) with progress + payout tx link. On settle the bounty flips to
COMPLETED; already-completed bounties show recorded winners. Consumes the
submissions review (#632) staging.

* fix(bounty): review fixes for winner selection + payout (#633)

- require every prize tier to have a winner before payout: the on-chain
  select_winners op is one-shot and completion strands unpaid tiers' escrow
- add a review + confirm dialog before the irreversible payout (winner,
  address, amount per tier, total), matching publish/treasury precedent
- fetch the COMPLETE submission pool for winner selection
  (listAllBountySubmissions pages the capped endpoint) so late entrants are
  never invisible; the completed-state winner list uses it too
- exclude rejected and disputed submissions from eligibility, show review
  status in the picker, and hide submissions whose payout address is already
  assigned to another tier (backend rejects duplicate addresses)
- derive summary, request body, and total from one resolved-selections
  source so the footer can never promise more than the request sends
- build the tx link via getTransactionExplorerUrl (network-aware) instead of
  a hardcoded testnet URL
- share the sealed-until-deadline card + 30s deadline recheck
  (SealedUntilDeadline, useDeadlinePassed) with the submissions tab, so the
  payout gate opens live and a null deadline does not seal forever
- surface staged submissions from the Submissions tab first in each picker
- share ESCROW_PHASE_LABEL from features/bounties (submit form + payout)
- drop dead payoutResponse/hasStarted state in useBountyPayout and document
  the owner-address limitation (treasury-funded bounties need backend work)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

2 participants