-
-
Notifications
You must be signed in to change notification settings - Fork 2
Releases: ignromanov/voidpay
v1.1.3 — /create redesign + SEO indexability + landing perf
d835a43 Patch release. Landing & /create surface only — no changes to schema v1, the invoice codec, or the payment flow.
✨ Features
/createredesign + SEO indexability — the creation page moved out of the no-index route group and gained a fresh hero / FAQ / how-it-works, plus a mobile scale fix. (#274)- Demo video on landing — responsive 16:9 / 9:16 walkthrough of create → pay. (#272)
⚡ Performance (landing Tranches 1–3)
- No more eager 2.7 MB video fetch on the mobile critical path. (#299)
- Demo hashes precomputed at build time; codec removed from the client bundle. (#300)
inlineCss+ tunedbrowserslist+ accessibility 84 → 100. (#302)- Below-fold rendering + LCP / CLS / compositing hardening. (#271)
🛠 Fixes & docs
- Dropped the "no tracking" overclaim and aligned analytics copy with cookie-free Umami, surfaced Base, README demo video now plays inline. (#273, #270)
🔧 Maintenance
- Dependency sweep: Next.js 16.2.7, viem 2.52, TanStack Query 5.101, Zustand 5.0.14, react-hook-form 7.77, Framer Motion 12.40, and dev-deps.
Full changelog: v1.1.2...v1.1.3
Assets 2
v1.1.2 — Mobile UX hardening + Next.js 16 + dependency sweep
c658fff Release v1.1.2
51 commits on top of master (since v1.1.0) — 171 files, +12 036 / −3 127.
Maintenance + reliability release. Focus: mobile in-app browser gate (P0 fix), Next.js 16 internal upgrade, broad dependency sweep. URL schema v1 untouched — old links unchanged.
Versioning note:
v1.2.0remains reserved for the @void-layer codec rewrite (specs 055-066, target ~Jun 1). This is a PATCH release per Constitution IV — no new product capability, no schema bit shifted.
Highlights
Bug fixes (critical paths)
fix(mobile): unified in-app browser gate — Telegram + Meta (FB / Instagram / Messenger) + X (Twitter) + 7 other hostile IABs. Closes GH#214 P0. Spec 073, PR #236.fix(payment): suppress payment-progress toast on mobile. Closes GH#215. PR #216.fix(landing): remove pixi.js + footer rewrite (landing cluster #53). PR #193.
Features (small)
feat(video): Remotion demo v2 — Path C scenes, 9-quadrant caption matrix, hook variants. (Dev / marketing content — not user-facing in app.)
Refactor
refactor(creator-store): extractCREATOR_INITIAL_STATEas single source of truth.
Docs / Compliance
docs(privacy): disclose Vercel access-log retention for?og=query string.docs(terms): align Terms of Service with Umami analytics disclosure.
Infrastructure
chore(deps): Next.js 15 → 16 upgrade (spec 054, PR #213). Major framework bump, no product-API change. Follow-ups GH#211 (OG-param hashing) and GH#212 (React Compiler global adoption) remain P2.chore(deps): React + @types/react → latest 19.2.x (PR #208).
Dependencies (41 dependabot PRs auto-merged)
- Web3 / payment:
viem2.47.16 → 2.48.11,@rainbow-me/rainbowkit2.2.10 → 2.2.11 - State / data:
@tanstack/react-query5.99.0 → 5.100.10,zustand5.0.12 → 5.0.13,react-hook-form7.72.1 → 7.75.0,zod4.3.6 → 4.4.3 - Infra:
@upstash/redis1.37.0 → 1.38.0,honosecurity group - UI:
tailwind-merge3.5.0 → 3.6.0,@tailwindcss/postcss4.2.2 → 4.3.0,framer-motionno change - Validation / forms:
pdfmake0.3.7 → 0.3.8,uuid13 → 14 - Dev / tooling:
typescript-eslint8.58.2 → 8.59.3,prettier3.8.2 → 3.8.3,happy-dom20.8.9 → 20.9.0,vite-tsconfig-paths5 → 6,lint-staged16 → 17,pnpm/action-setup5 → 6
Breaking changes
None for URL schema (v1 still LOCKED per Constitution IV — perpetual contract). Old links continue to decode and pay correctly.
Internal Next.js 16 surface: no app-router or middleware behaviour change observed; review noted in spec 054. Two P2 follow-ups deferred:
- GH#211 — OG-param hashing for access-log opacity
- GH#212 — global React Compiler adoption (currently per-component opt-in; 12 stale
eslint-disable react-hooks/refsdirectives remain as lint warnings — non-blocking)
Risk assessment
| Risk | Mitigation |
|---|---|
Next.js 16 regression on /pay hot paths |
Spec 054 already shipped to develop weeks ago; Vercel preview deploys + UmamI baseline clean on develop |
| In-app browser gate false positives | 10 IAB UAs covered (TG + Meta family + X + 7 others); rollback = revert PR #236 only |
Web3 dep stack drift (viem / wagmi / rainbowkit) |
Patch-tier only, no major bumps; multi-network smoke required post-deploy |
| LocalStorage shape | Unchanged from v1.1.0 |
Test plan
- CI green on
develop(per-PR merge) - Type-check + lint clean (0 errors, 12 stale eslint-disable warnings tracked in GH#212)
- Full
pnpm test:coveragere-run on this PR's HEAD - Smoke /pay on Ethereum, Base, Arbitrum, Optimism, Polygon after deploy
- Smoke in-app browser gate from Telegram + Instagram + X
- Verify Umami events post-deploy (no PII, no wallet addresses)
- Verify Speed Insights LCP / INP baseline within ±10 %
- Tag
v1.1.2after merge
Closed issues / PRs
- Closes GH#214 (in-app browser P0)
- Closes GH#215 (mobile payment toast)
- Squashes 41 dependabot PRs (see commit list)
Post-merge
- Tag
v1.1.2onmaster - Cut GitHub Release with this body
- Verify Vercel production deploy + Umami 24 h baseline
- Coordinate launch copy with Spark (CMO)
- Confirm Next 16 P2 follow-ups (GH#211, GH#212) stay on roadmap
🤖 Generated with Claude Code
Assets 2
v1.1.0 — Base Network + Payment Reliability
9e77e98 v1.1.0 — Base Network + Payment Reliability
Released: 2026年04月13日
Base mainnet is live — VoidPay now runs on 5 chains (Ethereum, Base, Arbitrum, Optimism, Polygon). The payment flow moved to typed viem errors, survives sped-up and replaced transactions, and wallet rehydration no longer flashes disconnect on /pay.
Added
- Base network (8453) — full support alongside Ethereum, Arbitrum, Optimism, Polygon PoS. Refactored the network visual system to scale to N chains (#79)
- Typed wagmi error handling — replaced string matching with typed viem errors; added
onReplacedcallback so the payment flow survives sped-up / replaced transactions (#115) /compare/request-finance— new comparison page with April 2026 research data, added to sitemap with priority- PWA ×ばつ512 icon for install prompts and social sharing
- TalentApp domain verification meta tag
Changed
- History page — redesigned cards in the payment-panel visual language
TrackedInvoicestore — now keyed by SHA-256contentHashinstead of array index (migration included for existing LocalStorage entries)
Fixed
- Wallet — rehydration race and cross-tab connection sync in scoped
Web3Providers(prevents brief disconnect flash on/pay) - History — batch unpaid-check now covers both created and received invoices
- Payment — CSS keyframe rotate prevents SmartPay spinner freeze on the Reown modal
- Invoice generation — mount flash, source immutability, cross-tab sync
- Demo — native-token template loading
- SECURITY.md — corrected styled-components reference (we inject via inline styles)
Security
honobumped via thenpm_and_yarnsecurity group@noble/hashes2.0.1 → 2.2.0
Infrastructure
project-syncworkflow — auto-syncs GH issues across both repos into the VoidPay Roadmap project board (GraphQL-based)- Dependabot auto-merge workflow + PR-template hygiene
Dependencies
viem2.47.6 → 2.47.16@tanstack/react-query5.90.16 → 5.99.0framer-motion12.23.26 → 12.38.0pixi.js8.14.3 → 8.17.1react-hook-form7.70.0 → 7.72.1use-debounce10.0.6 → 10.1.1- Dev:
prettier3.8.2,typescript-eslint8.58.2,vite7.3.2,vitest4.1.2,tailwindcss4.2.2,postcss8.5.8
Breaking Changes
None for URL schema (v1 remains LOCKED — existing links keep working).
LocalStorage: the TrackedInvoice store was re-keyed from array index to SHA-256 contentHash. Migration is in place; existing history is preserved.
Full Changelog: v1.0.1...v1.1.0
Assets 2
v1.0.1 — Hotfixes
553ea92 Same-day fixes for a privacy leak and OG preview issues discovered post-launch.
Security
- Umami analytics was receiving URL hash fragments containing full invoice data via browser referrer context — added
data-exclude-hashattribute to prevent leakage (PR #46)
Fixed
- BigInt guard against non-integer values in
totalfield during conversion (PR #46) - OG preview truncated invoice IDs to 8 characters — now preserves dashes, up to 20 chars (PR #49)
- Twitter link pointed to wrong handle — corrected to
@voidpay_xyz(PR #49) /og-image,/coming-soon,/pay,/invoiceexcluded from sitemap and robots.txt (PR #50)
Full Changelog: v1.0.0...v1.0.1
Assets 2
v1.0.0 — Production Launch
553ea92 VoidPay v1.0.0 — the first production release of zero-backend crypto invoicing. All invoice data lives in the URL hash fragment — no database, no signup, no server-side state. The link IS the invoice.
Core Architecture
- TLV v1 codec with Brotli WASM compression — invoices encode to URL-safe strings under 2KB
- Schema v1 is locked — links created today work forever
- Domain separator + salt for anti-replay protection
- 29-address token dictionary for compact encoding
Networks
- Ethereum (1), Arbitrum (42161), Optimism (10), Polygon PoS (137)
- Native tokens (ETH, MATIC) + any ERC-20 with Uniswap Token List verification
- RPC proxy (
/api/rpc) — API keys server-side, multi-provider failover (Alchemy → Infura → public)
Invoice Creation
- Form-based editor with live InvoicePaper preview
- Line items, due dates, notes (280 char limit), recipient address
- Magic Dust — random micro-amount for exact payment matching
- OG preview opt-in (
?og=) — server sees minimal metadata, hash stays private - ShareModal with link copy, QR code, and social sharing
Payment Flow
- SmartPayButton: 9-state machine (connect → switch network → send → confirm)
- Auto-chain switching — one click from disconnected wallet to submitted transaction
- EIP-681 QR codes for mobile wallet scanning
- Native and ERC-20 transfer support (
send-native.ts,send-erc20.ts)
Verification
- Payment verification to
finalizedblock status — reorg protection /invoicepage for creators to track payment status/paypage decodes hash fragment client-side with 4 error states
History & Export
- LocalStorage-based history (created + paid invoices, no financial data leaves device)
- Client-side PDF generation via pdfmake — QR for pending, "PAID" watermark with tx hash
- Export/import history for backup
Privacy & Security
- No Clarity, no Sentry, no client-side analytics collecting invoice data
- URL hash fragment never sent to server (HTTP spec)
- Umami analytics with
data-exclude-hash— pageviews only, no invoice content - No cookies, no session tokens, no accounts
UI
- Hybrid theme: dark UI (zinc-950) + light invoice document — "paper on desk" metaphor
- Network-colored ambient glows (Ethereum indigo, Arbitrum blue, Optimism red, Polygon purple)
- Pixi.js animated backgrounds on landing
- Mobile-first: 44px touch targets, safe areas,
100dvh, iOS zoom prevention - Glassmorphism design system built on Radix UI + shadcn/ui + Framer Motion
Landing Page
- 9 sections: Hero, Demo, WhyVoidPay, Audience, FAQ, SocialProof, Comparison, Nav, Footer
- JSON-LD schemas: FAQPage, Organization, SoftwareApplication
- Interactive demo invoice
Developer Experience
- Next.js 15 + React 19 + TypeScript strict
- Feature-Sliced Design architecture
- 2,550+ tests, 80%+ coverage (Vitest + Istanbul)
- TypeScript Project References (~1.5s incremental builds)
- ESLint 9 flat config, pre-commit hooks (lint + typecheck + coverage)
Links
- Live: https://voidpay.xyz
- Create invoice: https://voidpay.xyz/create