Skip to content

feat: advanced search, receipt export, onboarding, real-time collab (#794 #795 #796 #797) - #838

Merged
Kingsman-99 merged 1 commit into
Stellar-split:mainfrom
bambuska-man:feat/issues-794-795-796-797
Sep 28, 2026
Merged

Kingsman-99 merged 1 commit into
Stellar-split:mainfrom
bambuska-man:feat/issues-794-795-796-797

Conversation

@bambuska-man

Copy link
Copy Markdown

Summary

This PR implements four open issues in a single cohesive batch, touching the search layer, export pipeline, onboarding experience, and real-time collaboration system.


#794 — Advanced full-text invoice search

Files: src/lib/invoiceSearch.ts, src/app/search/page.tsx

  • Multi-token full-text search — rewritten searchInvoices() splits the query on whitespace and requires all tokens to appear somewhere in the invoice corpus (id, status, creator, recipients, title, token) using AND semantics.
  • Saved searches — new saveNamedSearch / removeSavedSearch / getSavedSearches helpers persist named searches to localStorage (up to 20).
  • Per-entry recent-search removal — removeRecentSearch(query) lets users delete individual recent entries without clearing the whole history.
  • FullTextSearchBar — search input with icon, clear button, and Enter-to-submit wired to history saving.
  • SearchHistoryPanel — dropdown showing starred saved searches and chronological recent history with per-item remove buttons; collapses when the input loses focus.
  • Full-text filter is composed on top of the existing structured FilterIndex results so both filter dimensions work simultaneously.

#795 — Invoice PDF export with receipt PDF and QR code

Files: src/components/InvoiceExportButton.tsx

  • Receipt PDF — new compact A5 PDF (downloadReceiptPdf) with a branded color banner, summary table, and an embedded QR code pointing to the on-chain verification page.
  • Email Receipt — inline expandable email panel calls /api/send-confirmation with invoice metadata; shows success/error feedback inline; supports Enter-to-send.
  • QR code extracted into a shared generateQrCodeDataUrl() helper reused by both the full invoice export and the receipt variant.
  • All three actions (Export PDF, Receipt PDF, Email Receipt) have independent loading states and never block each other.
  • Branding resolution (resolveBranding) is extracted into a callback to avoid repetition.

#796 — Creator onboarding flow with interactive tutorials

Files: src/components/OnboardingFlow.tsx

  • 5-step flow (up from 3): Welcome → Connect Wallet → Create Invoice → Share & Get Paid → Getting-started Checklist.
  • Tooltip component — hoverable/focusable ? badge on each step title with a contextual tip; fully accessible (role=tooltip).
  • Back navigation — Back button appears from step 2 onward for non-linear exploration.
  • Clickable progress bar — each segment is a button; clicking jumps directly to that step.
  • OnboardingChecklist — 5 getting-started items with a progress bar; checked state persisted to localStorage under stellarsplit_checklist.
  • Welcome step renders a feature-highlights card; Share step shows a numbered how-it-works list; Wallet step links to freighter.app for first-time users.

#797 — Real-time collaboration with co-editor panel and field highlights

Files: src/components/CoEditorPanel.tsx

  • CoEditorPanel — collapsible sidebar panel powered by useInvoiceCollaboration. Shows:
    • Online presence list with per-user field focus
    • "Currently editing" section listing field names per collaborator
    • ConnectionIndicator with animated pulse (Live / Connecting… / Disconnected)
    • Collapsed mode that renders just a compact avatar row
    • Permission-denied banner that auto-dismisses after 5 s
  • FieldHighlight — exported wrapper component that renders a colored glow ring and mini avatar badges on any <input> / <textarea> when a remote collaborator has that field focused. Drop-in usage: <FieldHighlight fieldName="title" remoteCursors={remoteCursors}>...</FieldHighlight>.
  • PresenceDot — avatar with full-address tooltip on hover and current field annotation.
  • colorForAddress() + contrastTextColor() ensure legible colored avatars for every collaborator.

Testing

All changes are built on top of existing tested utilities (FilterIndex, useInvoiceCollaboration, BrandSettings) and do not modify their contracts. No new runtime dependencies were added.

Closes #794
Closes #795
Closes #796
Closes #797

…tellar-split#797 — search, export, onboarding, collab

Stellar-split#794 — Advanced full-text invoice search
- Rewrite searchInvoices() with multi-token AND semantics across id, status,
  creator, recipients, title, and token fields
- Add saved search persistence (saveNamedSearch / removeSavedSearch)
- Add per-entry recent search removal (removeRecentSearch)
- Add FullTextSearchBar component to search page with clear button
- Add SearchHistoryPanel showing saved searches (starred) and recent history
- Integrate full-text filter on top of structured FilterIndex results
- clearAll() now also resets the full-text query

Stellar-split#795 — Invoice PDF export with receipt PDF and QR code
- Extract generateQrCodeDataUrl() helper (reused by both PDF variants)
- Add downloadReceiptPdf() — compact A5 receipt PDF with branded banner,
  summary table, and QR code pointing to on-chain verification page
- Add sendReceiptEmail() — calls /api/send-confirmation with invoice metadata
- Add 'Receipt PDF' and 'Email Receipt' buttons to InvoiceExportButton
- Email panel expands inline with address input and sends-on-Enter support
- All three export actions are independent and show individual loading states

Stellar-split#796 — Creator onboarding flow with interactive tutorials
- Expand from 3 → 5 steps: Welcome, Connect Wallet, Create Invoice, Share,
  Checklist
- Add Tooltip bubble component (? icon, hover/focus activated)
- Each step title shows a contextual tooltip via Tooltip component
- Add Back button for non-linear navigation between steps
- Clickable progress-bar segments for direct step jumping
- Add OnboardingChecklist component with 5 getting-started items, a progress
  bar, and localStorage persistence of checked state
- Welcome step shows a feature highlights card
- Share step shows a numbered how-it-works explanation
- Wallet step adds Freighter install link for new users

Stellar-split#797 — Real-time collaboration with co-editor panel and field highlights
- Add CoEditorPanel component: collapsible sidebar showing online presence
  list, active field edits, connection status indicator (Live / Connecting /
  Disconnected)
- Add FieldHighlight wrapper: renders a colored glow ring + editor avatar
  badges on any input when a remote collaborator has it focused
- Add PresenceDot with full-address tooltip on hover
- Add ConnectionIndicator with animated pulse for connecting/error states
- Collapsed mode shows avatar row for minimal footprint
- Permission-denied banner auto-dismisses after 5 s
- colorForAddress() and contrastTextColor() for accessible colored avatars
@vercel

vercel Bot commented Sep 27, 2026

Copy link
Copy Markdown

@bambuska-man is attempting to deploy a commit to the kingsman-99's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Sep 27, 2026

Copy link
Copy Markdown

@bambuska-man 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

@Kingsman-99
Kingsman-99 merged commit de25fb9 into Stellar-split:main Sep 28, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants