Practice
Stacks
Home
About
Features
Pricing
Contact
Resources
Log in
Start Free Trial
Toggle menu
Release v1.50.0 Changelog | PracticeStacks
All Releases
Release
v1.50.0
v1.50.0
15 March 2026
Features
add admin onboarding list page
add admin onboarding loading skeleton
add admin onboarding table with search and status filters
add Onboarding nav item to admin sidebar
add React Query hook for admin onboarding list
add super-admin onboarding list API endpoint
add Documents and Invoices tabs to business detail page
add documents API route for business detail page
add Documents tab component with search and client/firm badges
add invoices API route for business detail page
add Invoices tab component with status badges and view action
add useBusinessDocuments hook
add useBusinessInvoices hook
add invoice cache tags and invalidation methods
update pruny to version 1.38.0
update pruny to version 1.38.0
add expectedCount to create and update validation schemas
add onboarding invite email template
add AES-256-GCM encryption utility for portal credentials
add branded footer with firm contact info
add branded sticky header for firm tenant pages
add client onboarding page with token validation and OTP check
add client onboarding portal view under firm tenant route
add dynamic service worker for firm subdomain
add dynamic web app manifest for firm subdomain
add explicit OG image reference to firm profile metadata
add FirmProvider context and useFirm hook for tenant branding
add generateMetadata with firm branding to layout
add multi-tenant layout with theme, header, and footer
hide footer on onboarding client portal routes
enhance styling for label and description elements
refine styling for input field and form item
add invoices dashboard loading skeleton
add invoices dashboard page with stats, filters, and actions
add single invoice detail page with line items, client info, and actions
link list page View action to detail page instead of print view
restore GET handler for single invoice detail API
restore useInvoice hook for single invoice detail page
add daily invoice processor cron job
add generateInvoicePdf function to html2pdf utility
add invoice CRUD React Query hooks
add invoice detail and update API route
add invoice email send API route
add invoice list API route with stats
add invoice schedule computation utility
add invoice settings API route
add invoice settings React Query hooks
add invoice-processor cron job to vercel config
add print-friendly invoice view page for PDF generation
add step 4 invoicing UI component with billing config and schedule preview
generate invoice records on onboarding completion
send WhatsApp notifications alongside email for invoice sent and overdue
add onboarding cache tags and invalidation methods
add ONBOARDING module to registry with ClipboardCheck icon
add SIDEBAR_ONBOARDING tour step ID
add tenant-aware URL builder for subdomain and path-based routing
add clientViewCount, clientLastViewedAt, clientOtpVerified to Onboarding
add expectedCount column to onboarding_document_template table
add invoice WhatsApp template types to enum
add INVOICES value to EmployeeModule enum
add invoicing tables migration
add location columns to Lead table
add INVOICES to module registry with Receipt icon
hide navbar on onboarding client portal routes
gate portal data behind OTP verification, track client views
require OTP verification before contact creation
require OTP verification before document upload
add useBulkAddDocTemplates hook and expectedCount to interfaces
add send-otp API for client portal authentication
add verify-otp API with OTP model integration
accept allowedExtensions in template create/update API
add 4-step wizard container with nuqs step navigation
add client portal loading skeleton
add client portal view with doc upload and contacts
add complete onboarding endpoint
add document templates CRUD API
add document upload and delete API with S3
add dynamic favicon and OG image metadata for client portal page
add file type multi-select to custom document form
add horizontal 4-step progress indicator
add Invoicing step to 5-step wizard indicator
add list and create API endpoints
add list page loading skeleton
add onboarding list page with stats, filters, and SVG empty state
add public client contact creation endpoint
add public client document upload endpoint
add public client portal page with token validation
add public client portal token validation endpoint
add React Query hooks for document templates and uploads
add React Query hooks for onboarding CRUD
add React Query hooks for registration entries
add React Query hooks for team assignments
add registration entries CRUD API
add send-to-client portal link dialog
add send-to-client token generation endpoint
add single onboarding GET, PATCH, DELETE endpoints
add step 1 registration entries form
add step 2 document templates and file upload
add step 3 team assignment with RM and executor/reviewer
add step 4 summary and complete button
add team assignment CRUD API
add wizard header with business and proposal info
add wizard loading skeleton
decrypt portal credentials in GET response
disable Complete Onboarding until all required documents are uploaded
enforce allowed file extensions on client upload slots
generate subdomain-based portal URLs and validate firm profile
pass allowedExtensions to client portal
pass expectedCount to client portal document templates
redesign documents with predefined store, count picker, and direct delete
redesign registrations as predefined toggle checklist with portal credentials
redesign registrations with selection dialog, credential modes, and lazy save button
redesign step 4 with 3-phase flow, client activity tracking, and send-to-client CTA
send email and WhatsApp notifications when portal link is sent to client
send WhatsApp completion notification when onboarding is marked complete
show Client/Firm badge on uploaded documents in step 2
update wizard page to 5 steps with invoicing at step 4
validate file extension against template allowedExtensions on upload
add allowedExtensions field to OnboardingDocumentTemplate
migration for allowedExtensions on document templates
add onboarding relation to ProposalWithRelations type
add Start Onboarding and View Onboarding actions to proposal dropdown
include onboarding relation in proposals API response
add subdomain-based multi-tenant routing for firm pages
redirect /firm/[slug] paths on main domain to tenant subdomain
add useBulkAddRegistrations hook for multi-select dialog
encrypt portal credentials on save and decrypt on read
add address, lat, lng fields to Lead model for location persistence
add client onboarding migration
add client onboarding models, enums, and relations
add client portal tracking fields and CLIENT_ONBOARDING OTP type
add expectedCount field to OnboardingDocumentTemplate for multi-copy documents
add INVOICE_SENT and INVOICE_OVERDUE to WhatsAppTemplateType enum
add Invoice, InvoiceLineItem, InvoiceSettings models with InvoiceStatus enum
add INVOICES to EmployeeModule enum
support bun run lint --fix passthrough via turbo
add Invoices nav item after Onboarding
add Onboarding nav item after Proposals
implement document upload functionality with detail schema and dialog
add INVOICE_SENT and INVOICE_OVERDUE template types and data interfaces
add onboarding invite and completed template types
add sendInvoiceSent and sendInvoiceOverdue methods
add sendOnboardingInvite and sendOnboardingCompleted methods
Bug Fixes
fix Tailwind classnames order in onboarding loading skeleton
use generic title, pass value/onValueChange to tab switcher, remove unused imports
fix broken team link to use settings tab param
fix broken services link to use correct route
link Powered by PracticeStacks to website instead of subdomain root
remove owner personal contact details from public tenant page
use stable path-based href to fix hydration mismatch in header
hide main site footer on firm subdomain pages
remove unused useInvoice and InvoiceDetail exports
pass package billingType and billingCycle to schedule builder on completion
respect package billingType for one-time vs recurring schedule
accept address, lat, lng in update schema so location persists
add overflow-hidden to email template dialog to prevent text overflow
populate assignedTo and location fields when editing existing lead
stop exposing owner email and phone in public business profile query
make encrypt and decrypt internal (remove unused exports)
remove unused AdminBlogTag and BlogMetaGeneration exports
remove unused AlertDialogOverlay and AlertDialogPortal exports
remove unused DefaultLeadTemplate export
remove unused FirmBrand export
remove unused sidebar components (SidebarTrigger, SidebarRail, SidebarMenuSub and variants)
remove unused tour barrel re-exports
remove unused useDeleteOnboarding export
remove unused Users import from step-team
replace non-null assertion with null guard in firm preview button
replace non-null assertion with null guard in portal URL open
hide main site navbar on firm subdomain pages
add firmSlug field to OnboardingDetail interface
add firmSlug to GET response using creator's business instead of client's
fallback to legacy URL when business profileSlug is missing
fix Tailwind classnames order in step-team component
include billingType and billingCycle in package select
legacy redirect uses firm's slug instead of client's business slug
match masked phone by last 4 digits for OTP verification
prevent portal URL overflow in send dialog with min-w-0
remove duplicate opacity prop on SVG rect element
replace button wrapping Checkbox with div to fix nested button hydration error
replace button wrapping Checkbox with div to fix nested button hydration error
replace form.watch with useWatch for React Compiler compatibility
restructure portal URL display to prevent overflow in send dialog
return primary masked phone in send-otp response
use firm's profileSlug for portal URL instead of client's business slug
use firmSlug for portal URL in step-complete instead of client business slug
validate slug against firm's business not client's in tenant portal page
fix useMemo dependency array for React Compiler compatibility
simplify signature label check to only require signedAt
allow manifest.json through proxy for subdomain rewriting
add min-w-0 to business name container for proper truncation
make 4-column grid responsive with sm breakpoint
add justify-start to popover tab items for consistent alignment
add button URL component for onboarding_invite template
rename invoice template names to avoid conflict with existing template
revert invoice_overdue template name (already submitted for review)
v1.49.0
v1.51.0