Skip to content

Commit cf809ca

Browse files
0xdevcollinsBenjtalkshowryzen-xpEkene001
authored
merg to prod (#461)
* UI fixes (#451) * fix: improve timeline input , ui improvement and fixes for participation tab * fix: implement 2fa for email and password login * fix: fix conflict * fix: fix submission form * UI fixes (#454) * fix: improve timeline input , ui improvement and fixes for participation tab * fix: implement 2fa for email and password login * fix: fix conflict * fix: fix submission form * fix: fix hackathon submission and participant page * fix: fix hackathon submission and participant page * feat(navbar): enhance navbar styles and layout - Added CSS variables for active navbar link states, improving visual feedback. - Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views. - Updated component structure to ensure consistent styling and behavior across different states. * feat(announcements): enhance announcement rendering and markdown support - Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page. - Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab. - Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users. * feat(newsletter): implement newsletter API integration with subscribe… (#452) * feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences * Draft feat(newsletter): Imp some extra things * feat(newsletter): add API routes, client helpers, and UI pages * Docs: add comprehensive bug test report for organization features (#456) * Test: add comprehensive bug test report for organization features * docs: update bug test report for organization features and address critical issues * fix: update branch name in bug test report and upgrade dompurify to version 3.3.2 * fix: update the milestone submission flow for campaign --------- Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com> Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com> Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
1 parent 27f5732 commit cf809ca

3 files changed

Lines changed: 154 additions & 28 deletions

File tree

app/me/crowdfunding/[slug]/milestones/[milestoneIndex]/page.tsx

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -162,31 +162,31 @@ export default function MilestoneDetailPage({ params }: PageProps) {
162162
// Step 3: Perform blockchain transaction with Trustless Work SDK
163163
toast('Please confirm the transaction in your wallet');
164164

165-
const { unsignedTransaction } = await changeMilestoneStatus(
166-
{
167-
contractId: campaign.escrowAddress,
168-
milestoneIndex: (milestone.orderIndex ?? milestoneIndex).toString(),
169-
newStatus: data.status === 'completed' ? 'completed' : 'in_progress',
170-
newEvidence: data.submissionNotes, // Use submission notes as evidence description
171-
serviceProvider: walletAddress || '',
172-
},
173-
'multi-release'
174-
);
175-
if (!unsignedTransaction) {
176-
throw new Error(
177-
'Unsigned transaction is missing from useChangeMilestoneStatusresponse.'
178-
);
179-
}
180-
181-
const signedXdr = await signTransaction({
182-
unsignedTransaction,
183-
address: walletAddress || '',
184-
});
185-
186-
const trxsent = await sendTransaction(signedXdr);
187-
if (trxsent.status === 'SUCCESS') {
188-
toast.success('Transaction confirmed on blockchain');
189-
}
165+
// const { unsignedTransaction } = await changeMilestoneStatus(
166+
// {
167+
// contractId: campaign.escrowAddress,
168+
// milestoneIndex: (milestone.orderIndex ?? milestoneIndex).toString(),
169+
// newStatus: data.status === 'completed' ? 'completed' : 'in_progress',
170+
// newEvidence: data.submissionNotes, // Use submission notes as evidence description
171+
// serviceProvider: walletAddress || '',
172+
// },
173+
// 'multi-release'
174+
// );
175+
// if (!unsignedTransaction) {
176+
// throw new Error(
177+
// 'Unsigned transaction is missing from useChangeMilestoneStatusresponse.'
178+
// );
179+
// }
180+
181+
// const signedXdr = await signTransaction({
182+
// unsignedTransaction,
183+
// address: walletAddress || '',
184+
// });
185+
186+
// const trxsent = await sendTransaction(signedXdr);
187+
// if (trxsent.status === 'SUCCESS') {
188+
// toast.success('Transaction confirmed on blockchain');
189+
// }
190190

191191
toast('Updating milestone...');
192192

docs/bug-test-report.md

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# Bug Test Report: Organization & Onboarding Flow
2+
3+
**Project:** BoundlessFi
4+
**Date:** March 7, 2026
5+
**Environment:** Frontend (Local) / Backend (Staging API)
6+
**Status:** Issue #448 Verification Complete
7+
8+
---
9+
10+
## 1. Executive Summary
11+
12+
Overall, core organization features (creation, search, and navigation) are stable. However, critical blockers exist within the **Invitation Lifecycle** and **Hackathon Publishing** flows. Additionally, UX refinements are needed for mobile navigation and input validation.
13+
14+
---
15+
16+
## 2. Issue #448 Verification Status [COMPLETED]
17+
18+
All items specified in Issue #448 have been verified for production readiness:
19+
20+
| Feature | Status | Notes |
21+
| :----------------------- | :----- | :--------------------------------------------------- |
22+
| **Public Profile Route** | Pass | `/org/[slug]` functions correctly end-to-end. |
23+
| **OG Metadata** | Pass | Title, description, and images validated. |
24+
| **Settings Tabs** | Pass | Profile, Links, Members, and Transfer verified. |
25+
| **Sidebar Actions** | Pass | Host Hackathon and Grants (disabled state) verified. |
26+
| **Search/Sort** | Pass | Search and sort keys behave as expected. |
27+
| **Deep-linking** | Pass | Direct URL loading for organizations is functional. |
28+
| **Header Search** | Pass | `⌘K` navigation is bug-free. |
29+
| **Profile Validation** | Pass | Slug/Profile validation logic is functional. |
30+
| **Mobile Responsive** | Pass | Hamburger menu is functional on settings pages. |
31+
32+
---
33+
34+
## 3. High-Priority Bugs
35+
36+
### BUG-001: Invite Link Routing Mismatch (404)
37+
38+
- **Issue:** Generated invite links point to `/signup` instead of the active `/auth` route.
39+
- **Example Link:** `https://staging.boundlessfi.xyz/signup?invitationId=...`
40+
- **Impact:** Users cannot join organizations via email.
41+
- **Recommended Fix:** Update `getInvitationUrl` in the backend/auth-config to target `/auth`.
42+
43+
### BUG-002: Invite Acceptance Logic Failure
44+
45+
- **Issue:** Manually correcting the URL to `/auth` allows sign-up, but the user is not associated with the organization.
46+
- **Actual Behavior:** User is redirected to home; status remains "Pending"; member list is not updated.
47+
- **Expected Behavior:** User should automatically join the organization and redirect to the org dashboard.
48+
49+
### BUG-003: Hackathon Publish Endpoint (404)
50+
51+
- **Action:** Click **Publish** in the Preview tab for a draft hackathon.
52+
- **Observed Error:** `PUT .../api/organizations/{orgId}/hackathons/draft/{hackathonId}/publish` returns **404 Not Found**.
53+
- **Likely Root Cause:** Wallet balance is insufficient for publish-related on-chain or fee-dependent operations.
54+
- **UX Gap:** The UI does not tell users that the publish failure is caused by **insufficient wallet funds**.
55+
- **Impact:** Users cannot move hackathons from "Draft" to "Live" and do not know how to resolve it.
56+
- **Suggestion:** Show a clear inline/toast error such as: `Insufficient wallet funds to publish. Please fund your wallet and try again.`
57+
58+
**Suggested User Guidance (Fund Wallet Steps)**
59+
60+
1. Open wallet settings from the profile/wallet menu.
61+
2. Copy your connected wallet address.
62+
3. Add funds to that wallet on the required network (via exchange transfer, bridge, or faucet for test/staging).
63+
4. Wait for transaction confirmation and refresh the app.
64+
5. Return to the hackathon draft and click **Publish** again.
65+
66+
### BUG-004: Delete/Archive Organization Non-Functional
67+
68+
- **Issue:** Actions to delete or archive an organization fail.
69+
70+
**What I tested**
71+
72+
- Opened `/organizations`.
73+
- Selected an organization.
74+
- Clicked the **Archive** button and completed the confirmation prompt.
75+
- Clicked the **Delete** button and completed the confirmation prompt.
76+
77+
**Observed Result**
78+
79+
- Both actions failed.
80+
- The organization was not archived and not deleted.
81+
82+
**Expected Result**
83+
84+
- Archive should move the organization to archived state.
85+
- Delete should remove the organization.
86+
87+
**Scope**
88+
89+
- Test type: Manual UI test.
90+
- Environment: Frontend local + staging backend.
91+
- Role: Owner.
92+
- Organizations tested: 1 organization in this pass.
93+
94+
## 4. UI/UX Improvements
95+
96+
### UX-001: Mobile Navigation Tabs (Host Hackathon)
97+
98+
- **Observation:** Sub-navigation tabs (e.g., Participation, Edit) are difficult to access/truncated on mobile screens.
99+
- **Suggestion:** Implement **horizontal scrollable tabs** for sub-nav menus to improve mobile accessibility.
100+
101+
### UX-002: Slug Availability Feedback
102+
103+
- **Issue:** The UI displays "Slug available" even for taken slugs, only failing upon final form submission.
104+
- **Suggestion:** Real-time validation should return "Slug already taken" before the user attempts to submit.
105+
106+
### UX-003: Password Strength Feedback
107+
108+
- **Issue:** Form submission is blocked for weak passwords without explaining why.
109+
- **Suggestion:** Add a helper text: _"Password must be at least 8 characters and include a number."_
110+
111+
---
112+
113+
## 5. Technical Edge Cases
114+
115+
### Route Guarding: Invalid Organization IDs
116+
117+
- **Issue:** Manually entering an invalid ID (e.g., `/organizations/random123/settings`) still renders the settings UI shell.
118+
- **Recommendation:** Implement a check to return a 404 page if the Organization ID does not exist in the database.
119+
120+
---
121+
122+
**Reported by:** QA Team
123+
**Branch:** `Test/Test-the-organization-flow---manual-QA-checklist`

package-lock.json

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)