Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
378 commits
Select commit Hold shift + click to select a range
5a9e068
Merge pull request #151 from Saboleee/main
Kingsman-99 May 28, 2026
5c6fc82
Merge pull request #152 from chucksentertainment-hash/feat/deadline-e…
Kingsman-99 May 28, 2026
d1c7b7d
Merge pull request #153 from bolu26/feature/stellar-swap
Kingsman-99 May 28, 2026
3cca245
Merge pull request #154 from Damidesign/feature/smart-invoice-suggest…
Kingsman-99 May 28, 2026
393919a
Merge pull request #155 from chukwudiikeh/feat/invoice-management-fea…
Kingsman-99 May 28, 2026
7ef9022
Merge pull request #158 from jxsonyx/feat/add-invoice-duplicate-feature
Kingsman-99 May 28, 2026
77fc766
Merge pull request #159 from jxsonyx/feat/add-lazy-loading
Kingsman-99 May 28, 2026
d25da14
Merge pull request #164 from benjaminjohnsonfin-afk/feature/invoice-e…
Kingsman-99 May 28, 2026
e1c9c86
Merge branch 'main' into feature/invoice-collaboration
Kingsman-99 May 28, 2026
26ad0b0
Merge pull request #156 from fejilaup-cloud/feature/invoice-collabora…
Kingsman-99 May 28, 2026
f03a260
Merge branch 'main' into feat/invoice-history-page
Kingsman-99 May 28, 2026
201eadb
Merge pull request #160 from 0xfaan/feat/invoice-history-page
Kingsman-99 May 28, 2026
32d9cbc
Merge branch 'main' into feature/invoice-features
Kingsman-99 May 28, 2026
7383817
Merge pull request #161 from goldemaverick-ui/feature/invoice-features
Kingsman-99 May 28, 2026
89b70ba
Merge branch 'main' into feat/add-keyboard-navigation
Kingsman-99 May 28, 2026
3afb97f
Merge pull request #162 from 0xfaan/feat/add-keyboard-navigation
Kingsman-99 May 28, 2026
ff6e899
Merge branch 'main' into feature/invoice-enhancements
Kingsman-99 May 28, 2026
53b99dc
Merge pull request #163 from famvilianity-eng/feature/invoice-enhance…
Kingsman-99 May 28, 2026
6189251
Merge branch 'main' into feature/invoice-enhancements
Kingsman-99 May 28, 2026
051da41
Merge pull request #165 from uchechithelmaonye-cpu/feature/invoice-en…
Kingsman-99 May 28, 2026
5c1b1b7
Merge branch 'main' into feature/invoice-management
Kingsman-99 May 28, 2026
7c00be5
Merge pull request #166 from elvissamuel834-dotcom/feature/invoice-ma…
Kingsman-99 May 28, 2026
1caac19
Merge branch 'main' into feature/invoice-enhancements
Kingsman-99 May 28, 2026
9311f54
Merge pull request #167 from janipauwels-sys/feature/invoice-enhancem…
Kingsman-99 May 28, 2026
d5ed71e
Merge branch 'main' into feat/invoice-enhancements
Kingsman-99 May 28, 2026
716f72b
Merge pull request #168 from lolandriley-wq/feat/invoice-enhancements
Kingsman-99 May 28, 2026
34064fa
Merge branch 'main' into feature/invoice-enhancements
Kingsman-99 May 28, 2026
d2929d8
Merge pull request #169 from maugauwi-hash/feature/invoice-enhancements
Kingsman-99 May 28, 2026
5817760
Merge branch 'main' into main
Kingsman-99 May 28, 2026
64e24a9
Merge pull request #157 from aji70/main
Kingsman-99 May 28, 2026
0d0672c
Merge branch 'main' into feat/issue-25-dark-mode
Kingsman-99 May 28, 2026
bac701a
Merge pull request #64 from obedebuka41-dotcom/feat/issue-25-dark-mode
Kingsman-99 May 28, 2026
95984dd
feat: add contract upgrade notifier banner (#170)
Happybello365 May 28, 2026
e7ff87d
feat: add notification center page, API dashboard, payment analytics,…
GoSTEAN May 28, 2026
98c1c9b
feat: add collaboration cursors and webhook tester (#176)
Markadrian6399 May 28, 2026
f1ee465
feat: add escrow status panel to invoice detail page (#177)
whisper011 May 28, 2026
2b232ef
feat: add dev contract inspector at /dev/inspect/[id] (#178)
whisper011 May 28, 2026
6959011
feat: Add invoice payment history export (#175)
driftsorbit May 28, 2026
7e2cc5c
feat: Feat/payment velocity chart (#174)
Happybello365 May 28, 2026
f5eecc4
feat: Feat/recipient onboarding (#171)
Happybello365 May 28, 2026
26cd22f
feat: Add invoice creator verification flow (#173)
driftsorbit May 28, 2026
016b3e0
feat(invoice): add FlowDiagram visualization on invoice detail (#110)…
Oby38 May 28, 2026
c160a09
feat(settings): add API keys manager page; fix modal/layout nesting (…
Oby38 May 28, 2026
d27600b
feat: payment success animation, contract debugger, batch pay UI, dee…
Ehonrie May 29, 2026
b4b39fe
feat: add ReminderSender, state sync, activity heatmap, revenue page …
jessie-hash-pixel May 29, 2026
c26aae0
Feature/issues achievement profile dispute autofill (#187)
Bruno755 May 29, 2026
439c67b
feat: add payment amount lock toggle (#116) (#189)
Teeeyanaa May 30, 2026
7a52471
fix: add missing imports to layout.tsx for I18nProvider, SimulationMo…
Teeeyanaa May 30, 2026
3453fe1
Add invoice chat panel with localStorage-backed off-chain messaging (…
lemarjohnny781 Jun 1, 2026
5e80a14
Add payment channel setup panel, local channel state, and channel-awa…
lemarjohnny781 Jun 1, 2026
e5e94bf
Add invoice payment flow diagram (#192)
Oby38 Jun 2, 2026
0cd867a
fix: resolve all TypeScript, ESLint, and build errors
Kingsman-99 Jun 10, 2026
6594216
fix: update deploy workflow to use latest Vercel CLI
Kingsman-99 Jun 10, 2026
39e9e3f
Implement full theme system with dark/light/system modes, per-compone…
Ebuka321 Jun 19, 2026
d09360b
feat: add production-grade cooldown indicator for invoice pay flow (#…
luhrhenzthedev Jun 20, 2026
cd79f1b
feat(search): advanced search engine with compiled filters, URL state…
GoSTEAN Jun 20, 2026
4aa67ab
Feat/duplicate invoice flow (#206)
YahKazo Jun 22, 2026
efc2fae
feat: added new features (#207)
marvs8 Jun 22, 2026
8f8b70e
fix: regenerate corrupted lockfile and fix setTimeout type mismatch
Kingsman-99 Jun 24, 2026
dffa983
feat: QR modal wallet-connection auto-detection via polling (#211) (#…
Nuel-ship-it Jun 24, 2026
cd74e4e
feat(#208): webhook retry with exponential backoff and dead-letter qu…
Nuel-ship-it Jun 24, 2026
b18da87
csv bulb import implemented (#260)
OmniZlatoon Jun 25, 2026
13a48cd
feat: add invoice template sharing and shareable search filters (#261)
edehvictor Jun 25, 2026
e0f0935
feat: add group invoice aggregate progress dashboard (#262)
kimmoris12345 Jun 25, 2026
6bddd04
Add embed widget theming and branding customization (#263)
farouqyakubu6-creator Jun 25, 2026
6f37778
Add accessibility settings panel (#264)
Ekpemark Jun 25, 2026
09aacd5
feat: UI enhancements for split-app (#222-225) (#265)
Bruno755 Jun 25, 2026
370cd8b
feat: add notifications, installment comparator, and onboarding persi…
williamsokperez-arch Jun 25, 2026
4481d68
Issue #221: Add keyboard shortcuts overlay and help modal (#267)
harryjupiter148 Jun 25, 2026
61b8c80
feat: add CloneLineageTree component to /invoice/[id] (#268)
Keengfk Jun 25, 2026
39225cf
fix: rename anonymous arrow to named function in FocusTrap mock
Kingsman-99 Jun 25, 2026
fb206bb
ci: add automated conflict detection bot for PRs
Kingsman-99 Jun 26, 2026
4cb49d8
feature:Build anomaly/fraud flag indicator for suspicious payment pat…
bitstarkbridge Jun 26, 2026
7473da3
feat: invoice ownership transfer, payer budget alerts, and webhook re…
richardiyamura Jun 26, 2026
49755f0
feat: add webhook signature verification tester (#218) (#271)
Favourof Jun 26, 2026
8003ad6
Add dashboard filter presets (#272)
ositaemmanuel653-netizen Jun 26, 2026
ad0ab1c
feat: add api request log viewer with filters, pagination, and CSV ex…
Waffiyyi Jun 26, 2026
39e3a99
feat: add arbitrator marketplace, session auto-lock, dynamic QR amoun…
PrettyEmerald001 Jun 26, 2026
1d7f4c6
feat: add batch duplicate detection, payment preferences, co-creator …
Austinaminu2 Jun 26, 2026
7e17695
feat: timeline export, bulk reminders, invoice numbering, template ve…
Haroldwonder Jun 26, 2026
d62db7d
feat: add invoice JSON export, deadline extension flow, webhook docs,…
SYMBAxx Jun 26, 2026
46e1239
feat: add ICS export, search column picker, dark-mode PDF, and offlin…
The-moving-man Jun 26, 2026
130bacb
feat: build invoice list dashboard with real contract data and summar…
Osifowora Jun 27, 2026
b21405a
feat: implement Address Book feature with modal CRUD, search, copy, a…
Osifowora Jun 27, 2026
865861e
Implement pay invoice modal (#332)
newmattock Jun 27, 2026
4509f89
Feat/UI design system (#333)
micmusjnr20 Jun 27, 2026
7a5623f
Invoice improvements: multi-step form, detail page, admin rotation, r…
Prasiejames Jun 27, 2026
0cf506d
feat: add toast system, error boundary, form inputs, and auth layout …
daddygokings-art Jun 27, 2026
22af028
feat: wire up FundingProgress, StatusBadge, and Skeleton components (…
xxvii-xiaxia Jun 27, 2026
7b5782c
feat: implement issues #301, #302, #303 (#337)
bumblebee-2020 Jun 27, 2026
cfe088a
feat: implement dark mode with Tailwind dark variant and system prefe…
Buildwithlevo Jun 27, 2026
96ca89f
feat: resolve issues #305, #306, #307, #308 (#339)
bokkykennedy79-spec Jun 27, 2026
5e694aa
feat(#317): add Soroban RPC health indicator with tooltip and offline…
quartune Jun 27, 2026
4698e7e
feat(#321): add PWA install prompt with 30s delay and 7-day dismiss s…
quartune Jun 27, 2026
70c5b69
feat(#320): rebuild analytics dashboard with charts, date filter, and…
quartune Jun 27, 2026
8fe3ffc
feat(#322): invoice template system with /templates page, export/impo…
quartune Jun 28, 2026
73813cc
fix: Add API key scoped permissions (#319)
Bamzy123 Jun 28, 2026
d185e00
feat: add payment certificate, deadline suggester, source bar, and ve…
Buildwithlevo Jun 28, 2026
03c0576
feat: add @mention parsing, chip rendering, and notification integrat…
Keengfk Jun 28, 2026
4db00fe
feat: implement receipt download, i18n (pt/fr), and creator profile p…
obi123tony Jun 28, 2026
59da2ab
feat: Dashboard controls and wallet monitoring (#357)
janipauwels-sys Jun 28, 2026
e478ad3
feat: implement rate limiting, fee tiers, analytics, and invariant ch…
maugauwi-hash Jun 28, 2026
8ecdaeb
feat: #323 public invoice preview + #324 CSV recipient import (#359)
debbieAmoni Jun 29, 2026
daad8fe
feat: implement keyboard shortcuts system and invoice comparison view…
deborahamoni0-prog Jun 29, 2026
06766df
feat: implement issues #350, #361, #349, #360 (#371)
ahmadadebayo78-boop Jun 29, 2026
8b3b65e
feat: Add invoice sharing via QR code modal and resolve Next.js compi…
LawalRahman Jun 29, 2026
fd28321
Feat/issues 345 346 347 348 (#373)
meloball9993-star Jun 29, 2026
cb1d388
Feat/payments devtools skeletons errorboundary (#374)
lonerthefirst3-sudo Jun 29, 2026
409c332
feat: copy-to-clipboard (#312), activity timeline (#311), PDF export …
rejoicetukura-blip Jun 29, 2026
dbc4fb4
feat: optimistic UI updates for payment submissions (#376)
topboy192 Jun 30, 2026
c53bc5d
feat: add invoice duplication on detail page and InvoiceCard (#377)
topboy192 Jun 30, 2026
b169dc9
feat: build /recipients page for saved address management (#378)
topboy192 Jun 30, 2026
94fce42
feat: update dark mode localStorage key and transition duration (#379)
topboy192 Jun 30, 2026
9e4af4e
Implement groups page and group creation flow (#380)
Emmanex01 Jun 30, 2026
14a47b9
Fix build warnings and migrate Sentry to Next.js 14 instrumentation p…
Kingsman-99 Jun 30, 2026
4ef4379
Fix npm ci lock file sync for Vercel deployment
Kingsman-99 Jun 30, 2026
9a8edcc
Fix deprecated glob warning on Vercel
Kingsman-99 Jun 30, 2026
d6eeced
Add missing postcss.config.js to enable Tailwind CSS processing
Kingsman-99 Jun 30, 2026
33d0791
Fix live demo link in README
Kingsman-99 Jul 1, 2026
008657d
update production domain to stellarsplit-dapp.vercel.app
Kingsman-99 Jul 1, 2026
1f18da8
update README: fix live demo URL and add homepage screenshot
Kingsman-99 Jul 1, 2026
ae1960b
suppress hydration warning on body to handle wallet extension script …
Kingsman-99 Jul 3, 2026
9e45fbe
fix hydration error: move inline scripts into head instead of html root
Kingsman-99 Jul 3, 2026
2835561
restore Script import for service worker registration
Kingsman-99 Jul 3, 2026
a0b7c00
move contributor docs from root into docs/ folder
Kingsman-99 Jul 3, 2026
3cfc3fe
feat: add StellarSplit mark to README header
Kingsman-99 Jul 13, 2026
389dc83
feat: add confidential payment commitment and reveal flow (#391)
afeezorobsco-cyber Jul 20, 2026
ba4f91f
feat(a11y): add WCAG 2.1 AA automated accessibility audit gate (#392)
Arome8240 Jul 20, 2026
e08f51e
feat: add E2E test suite with POM pattern for testnet (#396)
Tobi-8 Jul 20, 2026
65ef90c
feat: implement useInvoiceStream hook with live payment tracking (#395)
Derry255 Jul 20, 2026
6dbcdb8
feat: add subscription management dashboard (#393)
Promise278 Jul 20, 2026
6ad383c
Closes #387: Implemented: build analytics dashboard (#394)
Promise278 Jul 20, 2026
3f53e91
feat: add cross-chain payment flow (Ethereum/Solana → Stellar) (#397)
obedebuka41-dotcom Jul 24, 2026
ba3be3f
fix: resolve post-merge broken JSON configs and page.tsx errors
Kingsman-99 Jul 25, 2026
85ad2fc
fix(tests): migrate all jest.mock() calls to vi.mock() for vitest hoi…
Kingsman-99 Jul 25, 2026
bb5f3dd
feat(settings): add Soroban contract event log explorer (#448)
naninu123 Jul 27, 2026
661a35e
Add MFA gate for high-value invoice releases (#449)
NeduTheDev1 Jul 27, 2026
3f71116
feat: recipient address book with smart labels (#406) (#450)
NeduTheDev1 Jul 27, 2026
889bf95
fix(watcher): prevent dropped events under high churn + make buffer s…
iwayemi5 Jul 27, 2026
b6ad916
Feat: Implement four invoice management features (#437, #439, #441, #…
OZILSOLAR Jul 27, 2026
8f37b31
Feature/432 433 435 436 payment retry cost estimation nlp share links…
Able-faz-system Jul 27, 2026
f33c9d7
Feature/issues 442 444 446 447 (#455)
kossyomma-beep Jul 27, 2026
01e1a10
feat: implement invoice co-creator real-time presence indicators (#456)
Barbie-Dev Jul 27, 2026
f3bea8c
feat: implement recipient address changes, path payments, and group l…
Barbie-Dev Jul 27, 2026
0874ce9
Feat/issues 425 427 428 429 : Implement bulk export, address validati…
Barbieple-Devstem Jul 27, 2026
7a8c958
Invoice import, push notifications, comments, and offline drafts (#459)
soma-enyi Jul 27, 2026
ca096f9
feat(invoice): implement live sse activity feed panel with view track…
DevRushd Jul 27, 2026
5b5eff6
test: implement comprehensive tests for issues #420-423 (#522)
maugauwi-hash Jul 27, 2026
d1b084b
#399 Invoice Payment Split Calculator with Tax Deduction (#523)
Sensei-Victor Jul 27, 2026
daa4467
test: comprehensive test suite for issues #415, #414, #413, #412 (#524)
famvilianity-eng Jul 27, 2026
ec6df1e
feat: infinite scroll, responsive layout, focus management, dark mode…
joshfatoye0011-bit Jul 28, 2026
969ee14
Add stepper, toast system, PDF export, and fiat conversion display (#…
Austinaminu2 Jul 28, 2026
af133ed
feat: split builder reordering, sliders, avatars, and invoice tags (#…
Maki-Zeninn Jul 28, 2026
9151f55
Feat/issues 425 427 428 429 (#528)
Barbieple-Devstem Jul 28, 2026
53f3f37
feat: implement invoice installment plan builder (#404) (#529)
nonchalanttee22-lgtm Jul 28, 2026
606da98
Add wallet persistence, RPC error boundary, skeleton loading, and sta…
SYMBAxx Jul 28, 2026
daec967
test: comprehensive test suites for issues #411, #410, #409, #408 (#531)
goldemaverick-ui Jul 28, 2026
0dbc453
test: comprehensive test suites for issues #416-419 (#532)
chukwudiikeh Jul 28, 2026
0637152
feat: Real-Time Invoice Collaboration with Live Cursors (#451)
isaac4real-art Jul 29, 2026
15caa23
feat(#477): add permanent Mainnet/Testnet network status badge (#533)
Mirabliss Jul 29, 2026
6c20dec
feat(#476): add XLM/USDC denomination toggle to amount input (#534)
Mirabliss Jul 29, 2026
5214bea
feat(#478): add multi-column sortable invoice list table (#535)
Mirabliss Jul 29, 2026
ef03310
feat(#479): add global keyboard shortcut registry with help overlay (…
Mirabliss Jul 29, 2026
9bb6862
Responsive tables, search, split builder, and memo validation (#537)
aji70 Jul 29, 2026
2bae61b
feat: implement features #486-489 (expiry picker, wallet disconnect, …
Mimah97 Jul 29, 2026
c953187
Invoice form UX enhancements (#494-#497) (#539)
Jambox11 Jul 29, 2026
69fd5a9
Email validation, rate-limit feedback, rounding handler, and rich tex…
Almikefred Jul 29, 2026
6a119dc
Feature/invoice UI refinements (#541)
Tukura11 Jul 29, 2026
9f30cbd
Feature/invoices UI enhancements (#542)
Saboleee Jul 29, 2026
a19c603
Feature/invoice features and wallet balance (#543)
favourawaku Jul 29, 2026
807019c
feat(invoice): add fee alerts and role-aware summaries (#544)
Oryke Jul 29, 2026
a86a293
feat(nav): responsive sidebar with collapse toggle (#545)
Nuwe10 Jul 29, 2026
7994367
feat(invoice): blockchain confirmation block counter widget (#546)
Nuwe10 Jul 29, 2026
f2da109
feat(settings): webhook endpoint configuration UI (#547)
Nuwe10 Jul 29, 2026
e9f1015
feat(api): rate-limit feedback with retry countdown (#548)
Nuwe10 Jul 29, 2026
3541cc6
implement dispute panel with IPFS evidence flow and live arbitration …
canicefavour Jul 29, 2026
8c9c574
#403 Custom Invoice Branding with Logo Upload FIXED (#551)
felladaniel36-hash Jul 30, 2026
55918a7
feat: per-recipient payment history panel (#519) and bulk tag assignm…
ahmadrabiumustapha Jul 30, 2026
7e4c9a6
fix: issues 553, 554, 555, 556 (#563)
unrealtim-tech Jul 30, 2026
3ee9957
fix: issues 557, 558, 559, 560 (#564)
MJigah Jul 30, 2026
a3d8166
Add copy confirmation for wallet addresses (#565)
dominionvinson-maker Jul 30, 2026
8faff13
fix: resolve all failing tests in split-app (1544 passing)
Kingsman-99 Aug 10, 2026
119909c
fix: resolve CI lint, build, and TypeScript errors
Kingsman-99 Aug 10, 2026
c35ded6
fix: resolve all build failures — TypeScript, missing deps, API route…
Kingsman-99 Aug 10, 2026
783dc16
fix: resolve 3 a11y test failures — contrast, mobile nav label, token…
Kingsman-99 Aug 10, 2026
504045e
fix: remaining a11y failures — inactive tab contrast and mobile sideb…
Kingsman-99 Aug 10, 2026
339847e
fix(a11y): make mobile nav always in DOM so Playwright getByRole find…
Kingsman-99 Aug 10, 2026
a3b50dc
fix(test): freeze time in getTimeRemaining test to prevent flaky hour…
Kingsman-99 Aug 10, 2026
3488554
test: skip flaky mobile nav keyboard operability a11y test
Kingsman-99 Aug 10, 2026
c73dd6f
Implement accessibility enhancements and UX improvements (#637)
lunabeckod-design Aug 29, 2026
bf5defb
Fix: resolve issues #580, #579, #578, #577 (#638)
colemaya95-ctrl Aug 29, 2026
72fc314
test: implement comprehensive test suites for features #597-600 (#639)
elvissamuel834-dotcom Aug 29, 2026
c891bce
feat: implement PWA offline support with pending transaction queue (#…
Davichi-1 Aug 29, 2026
71e0294
test: add comprehensive test suites for payment features (#641)
janipauwels-sys Aug 29, 2026
570ea83
test: Implement tests for Stellar Wave component enhancements (#642)
uchechithelmaonye-cpu Aug 29, 2026
7a07192
fix: accessibility and component improvements for split-app (#643)
okontemple96-dotcom Aug 29, 2026
adcb080
test: add component tests for issues #584, #583, #582, #581 (#644)
willowgray071-cpu Aug 29, 2026
de4455b
Fix/resolve 4 invoice component issues (#588, #587, #586, #585) (#645)
lolandriley-wq Aug 29, 2026
dd2fe8a
feat: invoice share context, CSV trim, duplicate rename, export date-…
cyberpunk30 Aug 29, 2026
5504064
feat: emoji reactions, live preview, diff view, template preview (#647)
Helix-xi Aug 29, 2026
92df247
feat: escrow countdown, installment recalc, mark-as-paid, recurring c…
solarix-x Aug 29, 2026
8031bfd
feat: fix chat scroll, add wizard step indicator, extract ArbitratorP…
mikelmonie Aug 29, 2026
421408c
feat: relative billing date, CSV export, milestone markers, tz labels…
blackmamba-232 Aug 29, 2026
4f8cb8e
Fix reputation tooltip, network recovery, sim-mode confirmation, and …
chrizand9-code Aug 29, 2026
00c0815
Fix FeeOptimizer, NotificationCenter, ReminderSender, and CountdownTi…
deeejaymu-afk Aug 29, 2026
f09e081
Fix #633-#636: DeadlineSuggester tooltip, gauge zones, hook split, wa…
lawrencesunday311-sketch Aug 29, 2026
7f3c373
Fix stale payout data, add analytics date range, paginate leaderboard…
valoryyaa-byte Aug 29, 2026
6a69bb6
feat(dashboard): implement invoice kanban board view and fix diff uti…
Luchistack Aug 29, 2026
398b978
fix(#567,#568,#561,#562): button size prop, navbar active link, dynam…
marshall8000 Aug 30, 2026
b1a9184
feat(hooks): add sortBy, MX check, rounding mode, and preset export/i…
Inkman007 Aug 31, 2026
c47e0b8
feat(hooks): expose undo/redo counts, permission status, fee sensitiv…
had3sgames Aug 31, 2026
cc68bd9
feat: draft conflict detection, rate caching/alerts, collab count bad…
knytcomics-ui Aug 31, 2026
4b5240d
feat(fees,payments,plans,calendar): itemised fee breakdown, path sele…
Coredevjay Aug 31, 2026
b8b69f0
fix: exponential backoff retry, masked amounts, session dismiss banne…
rejoicetukura-blip Aug 31, 2026
8c050ca
feat: CSV column selection, subscription status filter, invoice diff …
quartune Aug 31, 2026
52544f9
feat(hooks,components): live address validation, cursor labels, SVG e…
ink-mami Aug 31, 2026
9970a3d
fix: toast position prop, address validation, proof zoom/pan, locale …
Oryke Aug 31, 2026
f13bd23
feat: reminder snooze, webhook test ping, and XLM/USDC precision fix …
studiomonkeyx Aug 31, 2026
488ffa1
fix(tests): fix all remaining Wave 8 contributor test failures
Kingsman-99 Sep 4, 2026
bdbd481
fix(tests): fix InvoiceTimeline test hang and failures
Kingsman-99 Sep 4, 2026
08ed66f
fix: restore correct package names in package.json
Kingsman-99 Sep 4, 2026
12c2bca
fix: regenerate package-lock.json to sync with package.json
Kingsman-99 Sep 4, 2026
e2fbf5c
fix: update next.config.js to use @ducanh2912/next-pwa instead of nex…
Kingsman-99 Sep 4, 2026
d0d1cb1
fix(lint): move useState before early return in StatusBadge
Kingsman-99 Sep 4, 2026
2e7b577
fix: add missing OfflineBanner component imported by root layout
Kingsman-99 Sep 4, 2026
60e99cc
fix: remove orphaned root-level app/components/lib files causing buil…
Kingsman-99 Sep 4, 2026
35d3250
fix: add 'use client' directive to StatusBadge (uses useState)
Kingsman-99 Sep 4, 2026
e7e4406
fix: remove invalid JWT_SECRET export from API route file
Kingsman-99 Sep 4, 2026
9fc8f1c
fix(build): fix TypeScript errors in auth route and AchievementCard
Kingsman-99 Sep 4, 2026
df3cd7b
ci: trigger CI run
Kingsman-99 Sep 5, 2026
b354c7b
Add dark PDF theme and structured CSV validation errors (#778)
Busiii-adetiba Sep 26, 2026
4887e2c
Add configurable anomaly sensitivity and opt-in fraud risk factor exp…
GenesisPray Sep 26, 2026
fa9d564
feat: add receipt RTL and WCAG helpers (#780)
Sep 26, 2026
d14a497
feat(invoice): add PDF export with receipt QR code and print support …
daddygokings-art Sep 26, 2026
a992d8f
feat(voting): allow eligible payers to vote for deadline extensions w…
Buildwithlevo Sep 26, 2026
4ccd3bc
feat(invoice): add top contributors leaderboard section on invoice de…
Oby38 Sep 26, 2026
2aab2c9
feat(creator): add reputation score and paginated public invoice list…
shelterfaithapps Sep 26, 2026
a1872bf
feat(pay): add per-payer contribution cap allowance UI and dynamic va…
leviso74 Sep 26, 2026
2e1331f
feat(wizard): implement multi-step invoice creation wizard with indep…
ayomidemariam Sep 26, 2026
046c707
feat(invoice): show NFT celebration screen with shareable card upon i…
hannyloveworld Sep 26, 2026
5951a26
feat(templates): add template management library UI with save, load, …
oziginwambada Sep 26, 2026
e9aa53e
feat(invoice): add invoice cancellation confirmation flow with title …
levibliz Sep 26, 2026
020e3d5
feat(invoice): add AccessCodeGate for private invoices with client-si…
snooopdog Sep 26, 2026
219776e
feat(cosigners): add co-signer invitation flow, dedicated approval pa…
meshmesh001 Sep 26, 2026
d1e886a
feat(history): implement invoice history ring buffer event log with t…
mondaymose Sep 26, 2026
54f2d84
feat(theme): add dark/light/system theme system with data-theme, no-F…
rain91300 Sep 26, 2026
eab2b42
feat: add invoice fraud detection and anomaly alerts (#940)
therealbibson Oct 22, 2026
9e4393e
feat: add invoice fraud detection and anomaly alerts (#941)
therealbibson Oct 22, 2026
879951e
feat: add webhook health dashboard and queue tests (#942)
therealbibson Oct 22, 2026
186321b
Merge remote-tracking branch 'upstream/main' into feat/invoice-fraud-…
therealbibson Oct 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ VAPID_SUBJECT=mailto:support@example.com
# from /api/settings/branding/logo/... with CDN-style immutable cache headers
# (fine for local dev and CI).
BLOB_READ_WRITE_TOKEN=
<<<<<<< HEAD
=======

# ---------------------------------------------------------------------------
# Error tracking & crash reporting (Sentry)
Expand All @@ -33,4 +35,5 @@ SENTRY_PROJECT=
# SENTRY_AUTH_TOKEN: server-only token with `project:releases` scope for
# sourcemap uploads. Never expose this to the client. Leave empty to skip
# sourcemap upload (builds still succeed, traces will be minified).
SENTRY_AUTH_TOKEN=
SENTRY_AUTH_TOKEN=
>>>>>>> upstream/main
4 changes: 4 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
{
"extends": "next/core-web-vitals",
"rules": {
<<<<<<< HEAD
"react-hooks/exhaustive-deps": "off"
=======
"react-hooks/exhaustive-deps": "off",
"no-unexpected-multiline": "off",
"@next/next/no-img-element": "off",
"jsx-a11y/alt-text": "off"
>>>>>>> upstream/main
}
}
7 changes: 7 additions & 0 deletions .github/workflows/accessibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,14 @@ on:
jobs:
a11y:
runs-on: ubuntu-latest
<<<<<<< HEAD
=======
env:
NEXT_PUBLIC_STELLAR_NETWORK: ${{ secrets.NEXT_PUBLIC_STELLAR_NETWORK }}
NEXT_PUBLIC_CONTRACT_ID: ${{ secrets.NEXT_PUBLIC_CONTRACT_ID }}
NEXT_PUBLIC_RPC_URL: ${{ secrets.NEXT_PUBLIC_RPC_URL }}
NEXT_PUBLIC_USDC_ADDRESS: ${{ secrets.NEXT_PUBLIC_USDC_ADDRESS }}
>>>>>>> upstream/main
steps:
- uses: actions/checkout@v4

Expand All @@ -26,7 +29,11 @@ jobs:
run: npm ci

- name: Install Playwright browsers
<<<<<<< HEAD
run: npx playwright install --with-deps chromium firefox webkit
=======
run: npx playwright install chromium
>>>>>>> upstream/main

- name: Run accessibility tests (WCAG 2.1 AA gate)
run: npx playwright test --grep @a11y
Expand Down
9 changes: 9 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,12 @@ jobs:
NEXT_PUBLIC_STELLAR_NETWORK: ${{ vars.NEXT_PUBLIC_STELLAR_NETWORK }}
NEXT_PUBLIC_CONTRACT_ID: ${{ vars.NEXT_PUBLIC_CONTRACT_ID }}
NEXT_PUBLIC_RPC_URL: ${{ vars.NEXT_PUBLIC_RPC_URL }}
<<<<<<< HEAD

- name: Deploy to Vercel
run: npx vercel@latest --prod --token=${{ secrets.VERCEL_TOKEN }} --yes
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
=======
>>>>>>> upstream/main
28 changes: 28 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,19 @@ junit.xml
# ── OS files ──────────────────────────────────────────────────────────────
.DS_Store
Thumbs.db
<<<<<<< HEAD

# ── Editor / IDE ──────────────────────────────────────────────────────────
.vscode/
.idea/
*.swp
*.swo
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
=======
*.DS_Store

# Test artifacts
Expand All @@ -39,12 +52,26 @@ playwright-report/
test-results/
junit.xml
*.lcov
>>>>>>> upstream/main

# ── Logs ──────────────────────────────────────────────────────────────────
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
<<<<<<< HEAD
pnpm-debug.log*

# ── Misc ──────────────────────────────────────────────────────────────────
.vercel/
.turbo/
.cache/
.eslintcache
*.tgz
branch_structure.json
temp_auto_push.bat
temp_interactive_push.bat
=======

# Editor
.vscode/
Expand All @@ -58,3 +85,4 @@ yarn-error.log*
.cache/
*.tgz
dist/
>>>>>>> upstream/main
3 changes: 3 additions & 0 deletions docs/ACCESSIBILITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ The initial audit surfaced the following categories of critical/serious violatio
- **Browser coverage locally vs. CI.** A fresh dev sandbox may only have the Chromium Playwright browser installed. CI installs Chromium, Firefox, and WebKit via `npx playwright install --with-deps`, so the merge gate is multi-engine even when a local run (`npx playwright test --grep @a11y`) only exercises Chromium.
- **Moderate/minor axe findings are not gated on.** Only `critical`/`serious` impact violations fail the build, per the acceptance criteria. Any moderate/minor findings surfaced by axe during a run are not currently tracked separately.

<<<<<<< HEAD
=======
## Component-level automated testing

In addition to the page-level Playwright + `@axe-core/playwright` gate
Expand Down Expand Up @@ -95,6 +97,7 @@ release cycle and whenever a new page/flow is added to the audit scope:
"Known limitations" section until fixed. Once fixed, add a short note to
the "What was fixed" section above so the audit trail stays complete.

>>>>>>> upstream/main
## Extending the audit

To add a new page to the gate, add an entry to the `PAGES` array in `e2e/a11y.spec.ts` — the shared `runAxe()` helper and assertion are reused automatically. For flows that require user interaction (opening a modal, completing a multi-step form), follow the pattern in the two targeted tests at the bottom of that file: drive the interaction with Playwright, then call `runAxe(page)` and assert on `critical`/`serious` violations.
6 changes: 6 additions & 0 deletions e2e/a11y.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,13 @@ const PAGES: Array<{ path: string; name: string }> = [
{ path: '/', name: 'Home' },
{ path: '/dashboard', name: 'Dashboard' },
{ path: '/invoice/new', name: 'New Invoice' },
<<<<<<< HEAD
{ path: '/invoice/1', name: 'Invoice Detail' },
{ path: '/verify/1', name: 'Verify Invoice' },
{ path: '/analytics', name: 'Analytics' },
=======
{ path: '/settings', name: 'Settings' },
>>>>>>> upstream/main
];

async function runAxe(page: Page) {
Expand Down
3 changes: 3 additions & 0 deletions e2e/create-invoice.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ test.describe('Create invoice flow', () => {
await expect(createPage.totalAmountInput).toHaveValue('200');
});

<<<<<<< HEAD
=======
test('back button returns to previous step without losing entered data', async ({ page }) => {
const createPage = new CreateInvoicePage(page);
await createPage.goto();
Expand All @@ -38,6 +40,7 @@ test.describe('Create invoice flow', () => {
await expect(createPage.amountInput).toHaveValue('150');
});

>>>>>>> upstream/main
test('fill form and submit redirects', async ({ page }) => {
const createPage = new CreateInvoicePage(page);
await createPage.goto();
Expand Down
3 changes: 3 additions & 0 deletions e2e/dashboard.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ test.describe('Dashboard', () => {
const hasEmpty = await dashboard.emptyState.isVisible().catch(() => false);
expect(hasCards > 0 || hasEmpty).toBe(true);
});
<<<<<<< HEAD
=======

test('analytics dashboard updates in real-time', async ({ page }) => {
const dashboard = new DashboardPage(page);
Expand Down Expand Up @@ -70,4 +72,5 @@ test.describe('Dashboard', () => {
await expect(liveMetric).toBeVisible();
await expect(liveMetric).not.toHaveText('');
});
>>>>>>> upstream/main
});
9 changes: 9 additions & 0 deletions e2e/pages/DashboardPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,34 @@ export class DashboardPage {
readonly invoiceCards: Locator;
readonly emptyState: Locator;
readonly payMultipleButton: Locator;
<<<<<<< HEAD
=======
readonly analyticsDashboard: Locator;
readonly liveMetrics: Locator;
readonly autoRefreshToggle: Locator;
readonly connectionStatus: Locator;
>>>>>>> upstream/main

constructor(page: Page) {
this.page = page;
this.heading = page.getByRole('heading', { name: /Dashboard/i });
this.invoiceCards = page.locator('a[aria-label*="View Invoice"]');
this.emptyState = page.locator('text=/No invoices found/i');
this.payMultipleButton = page.locator('button:has-text("Pay Multiple")');
<<<<<<< HEAD
=======
this.analyticsDashboard = page.locator('[data-testid="analytics-dashboard"]');
this.liveMetrics = page.locator('[data-testid="live-metric"]');
this.autoRefreshToggle = page.locator('[data-testid="auto-refresh-toggle"]');
this.connectionStatus = page.locator('[data-testid="connection-status"]');
>>>>>>> upstream/main
}

async goto() {
await this.page.goto('/dashboard');
}
<<<<<<< HEAD
=======

async waitForLiveUpdate() {
await this.connectionStatus.filter({ hasText: /connected/i }).waitFor();
Expand All @@ -34,4 +42,5 @@ export class DashboardPage {
async toggleAutoRefresh() {
await this.autoRefreshToggle.click();
}
>>>>>>> upstream/main
}
9 changes: 8 additions & 1 deletion instrumentation-client.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import * as Sentry from "@sentry/nextjs";
<<<<<<< HEAD
=======
import { initPerformanceMonitoring, onPerformanceMetric, isRegression } from "./src/lib/performanceMonitoring";
>>>>>>> upstream/main

const dsn = process.env.NEXT_PUBLIC_SENTRY_DSN;

Expand All @@ -13,6 +16,9 @@ if (dsn) {
});
}

<<<<<<< HEAD
export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;
=======
// Core Web Vitals collection + budget-regression reporting (see
// src/lib/performanceMonitoring.ts and docs/PERFORMANCE.md).
onPerformanceMetric((metric) => {
Expand Down Expand Up @@ -205,4 +211,5 @@ function attachFlushHandler(): void {
if (typeof window !== "undefined") {
attachFlushHandler();
initAnalytics();
}
}
>>>>>>> upstream/main
26 changes: 25 additions & 1 deletion instrumentation.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
import * as Sentry from "@sentry/nextjs";
<<<<<<< HEAD

export async function register() {
const dsn = process.env.NEXT_PUBLIC_SENTRY_DSN;
if (!dsn) return;

if (process.env.NEXT_RUNTIME === "nodejs") {
Sentry.init({
dsn,
tracesSampleRate: 0.1,
debug: false,
});
}

if (process.env.NEXT_RUNTIME === "edge") {
Sentry.init({
dsn,
tracesSampleRate: 0.1,
debug: false,
});
}
}
=======
import { initAnalytics } from "./lib/analytics/server";
import { registerBackupScheduler } from "./lib/backup/scheduler";

Expand Down Expand Up @@ -73,4 +96,5 @@ export async function register() {
);
}
}
}
}
>>>>>>> upstream/main
12 changes: 11 additions & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ const config = {
moduleNameMapper: {
"^@/(.*)$": "<rootDir>/src/$1",
},
<<<<<<< HEAD
testMatch: ["**/__tests__/**/*.(test|spec).(ts|tsx)"],
testPathIgnorePatterns: ["/node_modules/", "/src/app/search/__tests__/"],
collectCoverageFrom: ["src/components/**/*.{ts,tsx}", "!src/components/**/*.d.ts"],
coverageThreshold: { global: { branches: 80, functions: 80, lines: 80, statements: 80 } },
};

module.exports = createJestConfig(config);
=======
testMatch: [
"**/__tests__/**/*.(test|spec).(ts|tsx)",
"**/__tests__/**/*.(test|spec).(js|jsx)",
Expand Down Expand Up @@ -36,4 +45,5 @@ const config = {
restoreMocks: true,
};

module.exports = createJestConfig(config);
module.exports = createJestConfig(config);
>>>>>>> upstream/main
5 changes: 4 additions & 1 deletion jest.setup.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import "@testing-library/jest-dom";
<<<<<<< HEAD
=======

/**
* Global Jest setup.
Expand Down Expand Up @@ -359,4 +361,5 @@ beforeEach(() => {

afterEach(() => {
jest.clearAllMocks();
});
});
>>>>>>> upstream/main
Loading
Loading