Feature/calendar export#549
Open
Okorie2000-code wants to merge 13 commits into
Open
Conversation
…nts (Smartdevs17#440) - Add GasPriceOracle.sol: dynamic fee calculation with baseFee + priority fee, ERC-20 to ETH conversion rate, fee quotes with TTL, batch price ratio updates - Add RelayPaymaster.sol: GSN-compatible paymaster accepting ERC-20 fee payment, user deposits, relayer management, gas sponsorship tracking - Add backend/src/relayer/gasOracle.ts: EVM gas oracle service with EIP-1559 base fee fetching, ERC-20 price feed integration, quote generation with TTL - Add backend/src/relayer/evmRelay.ts: EVM meta-transaction relay service via MetaTxForwarder with EIP-712 signature verification, nonce management, rate limiting, and graceful fallback when relayer not configured - Enhance backend/src/routes/relayer.ts with EVM endpoints: POST /evm/relay, GET /evm/gas-quote, GET /evm/nonce/:address - Add Foundry test GasAbstraction.t.sol: 25 tests covering MetaTxForwarder, GasPriceOracle, RelayPaymaster, and integration flows Closes Smartdevs17#334 Co-authored-by: Your Name <you@example.com>
- Add Merkle tree verification to BatchSplitter.sol with batchTransferMerkle() and verifyBatchMerkleProof() functions for batch integrity verification - Add dry-run estimation (POST /estimate) returning total amount, gas units, duplicate count, invalid addresses, and duration - Add scheduled batch execution with cron-style processing (POST /schedule, GET /scheduled, DELETE /scheduled/:id) - Add JSON file upload support alongside CSV in POST /parse - Create frontend batch upload page (dashboard/batch) with CSV/JSON file upload, preview table, duplicate detection, dry-run estimate display, and submit/schedule actions - Add batch API client methods to frontend/lib/api.ts Closes Smartdevs17#335 Co-authored-by: Your Name <you@example.com>
…nts (Smartdevs17#438) - Add GasPriceOracle.sol: dynamic fee calculation with baseFee + priority fee, ERC-20 to ETH conversion rate, fee quotes with TTL, batch price ratio updates - Add RelayPaymaster.sol: GSN-compatible paymaster accepting ERC-20 fee payment, user deposits, relayer management, gas sponsorship tracking - Add backend/src/relayer/gasOracle.ts: EVM gas oracle service with EIP-1559 base fee fetching, ERC-20 price feed integration, quote generation with TTL - Add backend/src/relayer/evmRelay.ts: EVM meta-transaction relay service via MetaTxForwarder with EIP-712 signature verification, nonce management, rate limiting, and graceful fallback when relayer not configured - Enhance backend/src/routes/relayer.ts with EVM endpoints: POST /evm/relay, GET /evm/gas-quote, GET /evm/nonce/:address - Add Foundry test GasAbstraction.t.sol: 25 tests covering MetaTxForwarder, GasPriceOracle, RelayPaymaster, and integration flows Closes Smartdevs17#334 Co-authored-by: Your Name <you@example.com>
…tdevs17#436) - Add TimelockController.sol with configurable delay (min 48h), multi-sig approval threshold, proposal scheduling, execution, and cancellation - Add EmergencyPause.sol with guardian multi-sig pause mechanism, auto-expire after 7 days, and admin resume function - Add Foundry test suite (TimelockUpgrade.t.sol) covering: schedule+execute, pre-delay execution revert, cancelled upgrades, insufficient approvals, duplicate approval rejection, emergency pause activation/resume/auto-expiry, and configuration validation - Enhance upgrade.ts script with TimelockController governance flow (schedule proposal, wait for approvals + delay, execute) Closes Smartdevs17#336 Co-authored-by: Your Name <you@example.com>
…martdevs17#343) (Smartdevs17#442) - Add MultisigWallet and MultisigProposal types to Soroban contract with full on-chain create/approve/reject/cancel/expire lifecycle - Add signer management (add/remove) with blocking-threshold rejection logic and auto-cancellation of affected proposals on signer removal - Add configurable per-wallet proposal timeouts with auto-expiry sweep - Extend backend service with SignerChangeProposal consensus workflow, threshold-change proposals, and rejection finalization - Add Zod schemas for all new endpoints (add/remove signer, threshold change, proposal reject) - Add REST routes: PATCH /groups/:id, /signers/add, /signers/remove, /threshold, /proposals/:id/reject, /proposals/:id/cancel, /sweep-expired - Rewrite frontend dashboard with wallet creation dialog (configurable signers + threshold + timeout), proposal creation, expandable approval status cards, signer management dialog, stats bar, and status/wallet filters Closes Smartdevs17#343, Smartdevs17#354, Smartdevs17#342, Smartdevs17#355
Closes Smartdevs17#65 - Add generateICS utility to build valid iCalendar strings from events - Add downloadICS helper that triggers a browser .ics file download - Add handleAddToCalendar on the project detail page that maps milestones with due dates to ICS events and downloads the file - Render an 'Add to Calendar' button (CalendarDays icon) in the action bar
Co-authored-by: CharlieChinedu <Charliechinedu@gmail.com>
…missing acceptance-criteria items (Smartdevs17#445) * feat: implement 2FA, analytics, forms, and project milestones (Smartdevs17#338 Smartdevs17#339 Smartdevs17#340 Smartdevs17#341) Resolves four issues by fixing critical bugs and adding missing acceptance-criteria features. Issue Smartdevs17#338 — 2FA for wallet operations: - Fixed: twoFactorAuthRouter was never registered in index.ts, making all 2FA endpoints return 404 - Fixed: Verify2FARequestSchema and Disable2FARequestSchema rejected 8-char backup codes (schema enforced 6-digit TOTP only); now uses z.union to accept both - Added: /dashboard/security page for users to enable, confirm, and disable 2FA - Added: getPolicy/setPolicy functions and GET/POST /api/v1/auth/2fa/policy endpoints for per-user enforcement configuration Issue Smartdevs17#339 — Form builder and embed system: - Fixed: index.ts imported formsRouter with .ts extension (should be .js in ESM) - Added: payment field type to form schema with amount+currency validation - Added: exportFormSubmissions() and GET /api/v1/forms/:id/export?format=csv|json for response data export - Improved: Embed button now shows full iframe HTML snippet with sandbox attribute instead of copying only the URL Issue Smartdevs17#340 — Analytics and revenue reporting: - Added: time period selector (1h/24h/7d/30d) in the analytics dashboard UI; passes ?hours= to backend - Added: exportToCsv() method and GET /api/v1/analytics/export for CSV download of revenue time-series - Added: buildMerchantPercentiles() and GET /api/v1/analytics/percentiles with industry benchmark comparison (simulated, clearly labeled) - Added: scheduleReport/getReportSchedule and POST/GET /api/v1/analytics/schedule-report for scheduled email report preferences Issue Smartdevs17#341 — Project-based payment management: - Fixed: projects/page.tsx had duplicate getStatusColor declarations and completely broken JSX nesting — rewritten with clean two-column filter+cards layout - Added: getOverdueMilestones() method in services/projects.ts returning milestones past due date - Added: GET /api/v1/projects/overdue-alerts (auth-guarded) for overdue milestone detection - Added: invoiceHint: true in milestone approval response to signal frontend for invoice creation Closes Smartdevs17#338 Closes Smartdevs17#339 Closes Smartdevs17#340 Closes Smartdevs17#341 * security: fix auth/authorization gaps in 2FA, analytics, forms, and projects endpoints - 2FA policy GET/POST: require authenticated session; scope GET to self (or admin), POST derives userId from session (not body) and rejects cross-user mutations for non-admins - Analytics schedule-report GET/POST: require auth; POST binds userId to session, GET enforces self-only access (admin bypass) - Forms /export: require authenticated session before exporting any submissions - Forms CSV export: prefix formula-injection characters (=+-@\t\r) with single quote to prevent spreadsheet formula execution - Projects /overdue-alerts: scope getOverdueMilestones() to caller's ownerId (admin role returns all); added ownerId param to service method --------- Co-authored-by: harystyleseze <harystyleseze@gmail.com>
|
@Okorie2000-code is attempting to deploy a commit to the smartdevs17's projects Team on Vercel. A member of the Team first needs to authorize it. |
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.
What this PR does
Changes
Why
How to test
Notes