Practice
Stacks
Home
About
Features
Pricing
Contact
Resources
Log in
Start Free Trial
Toggle menu
Changelog
What's New in
PracticeStacks
Every release, feature, and fix — straight from our CI pipeline.
v1.89.0
4 April 2026
Bug Fixes
update proxy-image route for remote resource fetching
update registration finalize route
enforce 63 character max length on auto-generated profileSlug
enforce 63 character max length on profileSlug validation
enforce 63 char max length on auto-generated slug
pass businessName and businessEmail props to ComplianceToggleList
use fromMonth/toMonth props and canonical tailwind class in date picker
use DD-MM date format for compliance date filtering and parsing
use DD-MM date format for reminder compliance date filtering and parsing
attach firm brochure PDF to test compliance emails
add items-start to grid so notification count input aligns properly
replace non-null assertions with safe checks in billing cycle groups
respect billingCycle for recurring services instead of treating all as monthly
truncate long filenames in document upload cards
include billing fields in service select for invoice preview
pass billingCycle for services in invoice preview input
pass billingCycle for services in invoice schedule on client submit
pass billingCycle for services in invoice schedule on completion
display client profile image in testimonials section
fallback to business phone for OTP and reject when no phone found
persist digital signature toggle to Zustand on change instead of only on submit
enable cache control for lint and typecheck tasks
strip formatting from phone values to satisfy E.164 format requirement
Features
add ClientResponseBanner component to display registration status feedback in onboarding steps
add GET/PATCH API route and React Query hooks
add test email dialog and fix DD-MM date format in calendar and chips
add test endpoint for sending real compliance emails per business
add billing dashboard, invoices list, and settings tab components
add revenue stats aggregates and month-over-month change to GET
add RevenueStats type and gstNumber to hook response
show hint to add email when automation unavailable due to missing email
add billingSettings cache tag and invalidation method
add billing_module_v2 migration for BillingSettings table
add BillingSettings model linked to Business
add 'Visit Firm Page' link to business profile header
add comment count badge and closed state styling to bug report cards
add Support link to user dropdown menu
Reverts
use subdomain-aware URLs for PDF generation with internal fetch bypass
use .localhost subdomain redirects for tenant isolation locally
use .localhost subdomains instead of lvh.me or path-based routing
v1.88.1
3 April 2026
1.88.1
(2026-04-03)
Performance Improvements
add restore-keys for cross-branch cache sharing
add restore-keys for cross-branch cache sharing in leads-sdk
add restore-keys for cross-branch cache sharing in mcp-server
add restore-keys for cross-branch cache sharing in release
v1.88.0
3 April 2026
Performance Improvements
add cache strategy to created_by GET handler
add cache strategy to GET handler
cache node_modules in leads-sdk publish workflow
cache node_modules in mcp-server publish workflow
cache node_modules in release workflow and skip install on cache hit
add cache invalidation to PUT and DELETE handlers
add cache strategy to GET and invalidation to POST
add cache invalidation to PUT and DELETE handlers
add cache strategy to GET and invalidation to POST
add cache invalidation to bulk delete handler
add cache invalidation to PUT and DELETE handlers
add cache strategy to GET and invalidation to POST/PUT
add cache invalidation to PUT and DELETE handlers
add cache strategy to GET and invalidation to POST
add cache strategy to GET handler
add cache strategy to GET handler
add cache strategy to GET handler
add cache strategy to GET handler
add cache strategy to GET handler
Bug Fixes
add missing cache tag to compliance deadlines query
add missing cache tag to proposals overview query
add missing cache tag to revenue pipeline query
add missing dashboardStats cache tags to all queries
Features
add employee/department/compliance tags and dashboardStats to existing invalidations
v1.87.0
3 April 2026
Bug Fixes
delete EmployeeInvitation records before user to prevent FK constraint error
add extension node_modules to cache and bust stale cache
cache all workspace node_modules to fix missing tsup binary
add entry for pracice_stack_marketing directory
Performance Improvements
cache node_modules directly and skip install on cache hit
consolidate 3 parallel jobs into single job to eliminate duplicate setup
Features
add bulk delete API endpoint with ownership validation
add bulk delete confirmation dialog with data warnings
add multi-select checkboxes and bulk delete action to table
bypass Razorpay seat check in development mode
bypass Razorpay calls for seat management in development mode
add dev bypass to mock active subscription instead of calling Razorpay
bypass Razorpay cancel calls in development mode
bypass Razorpay for plan changes in development mode
create mock DB subscription in dev instead of calling Razorpay
return mock ACTIVE status in dev for verify endpoint
v1.86.3
30 March 2026
1.86.3
(2026-03-30)
Bug Fixes
use charge_at as trialEnd during trial period instead of current_start
v1.86.2
30 March 2026
1.86.2
(2026-03-30)
Bug Fixes
import LiveSubscription from types file to avoid server-only module in client bundle
v1.86.1
30 March 2026
1.86.1
(2026-03-30)
Bug Fixes
allow replacing CREATED and HALTED subscriptions on re-subscribe
v1.86.0
30 March 2026
Features
add helper to fetch live subscription data from Razorpay API
v1.85.3
30 March 2026
1.85.3
(2026-03-30)
Bug Fixes
use transparent background for convention favicon
use transparent background for favicon instead of white
v1.85.2
30 March 2026
1.85.2
(2026-03-30)
Bug Fixes
add cdn.razorpay.com to script-src for payment risk detection
v1.85.1
30 March 2026
1.85.1
(2026-03-30)
Bug Fixes
cast sharp Buffer to Uint8Array for NextResponse body
v1.85.0
30 March 2026
Bug Fixes
point favicon metadata to API icon route
point page favicon metadata to API icon route
use sharp to convert WebP/SVG logos to PNG for favicon
rewrite subdomain /favicon.ico to firm icon API route
Features
add API route for firm favicon with sharp image conversion
v1.84.7
30 March 2026
1.84.7
(2026-03-30)
Bug Fixes
pre-fetch and inline images before sending to html2pdf.app API
v1.84.6
30 March 2026
1.84.6
(2026-03-30)
Bug Fixes
use slug-scoped paths for manifest, icon, and apple icon metadata
v1.84.5
30 March 2026
1.84.5
(2026-03-30)
Bug Fixes
add eslint-disable for img tag used in PDF brochure generation
v1.84.4
30 March 2026
1.84.4
(2026-03-30)
Bug Fixes
use img tag instead of background-image for hero banner
v1.84.3
30 March 2026
1.84.3
(2026-03-30)
Bug Fixes
disable code blocks and reset code styling in rich text editor
invalidate onboarding query for both invitation and direct employee creation
fetch logo as base64 data URL to avoid broken images in ImageResponse
count pending invitations in team onboarding step completion
v1.84.2
30 March 2026
1.84.2
(2026-03-30)
Bug Fixes
use plain img tag to avoid /_next/image 400 on subdomains
v1.84.1
30 March 2026
1.84.1
(2026-03-30)
Bug Fixes
block dashboard access when trial period has expired
replace isomorphic-dompurify with sanitize-html to fix Vercel ESM crash
v1.84.0
29 March 2026
Bug Fixes
move custom duration state out of useEffect to avoid lint error
Features
add duration preset select with custom option in create dialog
add duration preset select with custom option in edit dialog
v1.83.0
29 March 2026
Bug Fixes
safe deletion with FK reference cleanup before removing employee
remove unused InvitationsResponse export
Features
add employee invitation email template with accept/reject CTAs
detect existing users and send invitation instead of blocking
handle invitation_sent response in add employee dialog
add CRUD API routes with public accept/reject endpoint
add public accept/reject page for employee invitations
add EmployeeInvitation model with InvitationStatus enum
add invitation management section to employees tab
v1.82.0
29 March 2026
Features
add location field and owner RM option to edit business dialog
include owner name in relationship manager dropdown
support location create/update in PATCH API
v1.81.0
29 March 2026
Bug Fixes
use canonical tailwind class bg-linear-to-br
Features
pass aiEnabled, aiPrompt, aiContext props to InputList
add AI suggestion support with clickable chip UI
enable AI suggestions for included/excluded items in add dialog
enable AI suggestions for included/excluded items in edit dialog
v1.80.0
29 March 2026
Features
add green badge on avatar for active notifications and move settings to profile dropdown
Bug Fixes
hide banner when notifications are already active
v1.79.0
29 March 2026
Bug Fixes
skip heartbeat when user is not authenticated
use const for timer and hoist sendHeartbeat declaration
reduce lastLoginAt fallback threshold from 24h to 1h for heartbeat coverage
Features
add ActivityHeartbeat component to ping server every 5 minutes
add heartbeat API endpoint to track user lastLoginAt
v1.78.0
29 March 2026
Bug Fixes
reorder dashboard steps to match sidebar visual order
scroll to target element when navigating between steps
Features
add Last Active column with relative time and status indicator
add lastLoginAt to AdminUser interface
include lastLoginAt field in admin users API response
v1.77.0
28 March 2026
Bug Fixes
remove GitHub issue link from admin report cards
add
www.glitchgrab.dev
to connect-src Content Security Policy
remove GitHub link from report conversation header
use
www.glitchgrab.dev
base URL to avoid CORS redirect
fix tailwind classname order and remove unused eslint-disable directives
remove duplicate description label, auto-refresh comments every 10s, skip skeleton on refetch, increase body height to 40vh
remove GitHub issue link from report cards
use server-safe buildTenantUrl for profile slug description to prevent hydration mismatch
reload page after payment to bypass stale Prisma cache
return Razorpay error descriptions and support skipGstin flag
Features
add Bug Reports nav item to admin sidebar
add Bug Reports page with approve/reject/close, status filters, and conversation view
add GSTIN column with inline edit, reset subscription button, and no-subscription badge
add PATCH endpoint for admin to update user GSTIN
add profile avatars and improved UI to recent customers list
add reset-subscription API endpoint for admin
add useResetSubscription and useUpdateAdminUserGstin hooks
include gstNumber in admin users API response
add GSTIN toggle with auto-uncheck on trial gate
add glitchgrab SDK for auto error capture and bug reporting
integrate glitchgrab report dialog with pre-filled error message
trigger glitchgrab report on poor rating instead of in-app ticket
use openReportDialog() for poor/okay ratings instead of hidden ref hack
add report detail, reply, and approval action hooks for v1.4.0 APIs
add useGlitchgrabReports hook to fetch user bug reports
add GlitchgrabSDKProvider with session mapping and ReportButton
mount hidden ReportButton to listen for openReportDialog events
wrap app with GlitchgrabSDKProvider for auto error capture
add approve/reject/close actions to bug report cards
add Bug Reports section showing glitchgrab auto-captured errors
add report conversation sheet with comments, reply, auto-refresh, and markdown description
add Report a Bug button using glitchgrab ReportButton
add skipGstin param to createSubscription hook
v1.76.2
26 March 2026
1.76.2
(2026-03-26)
Bug Fixes
enforce +91 10-digit phone regex on resend-otp
enforce +91 10-digit phone regex on update-phone
use isValidPhoneNumber for proper phone validation
require min 4 chars for masked phone validation
enforce +91 10-digit phone regex on finalize
enforce +91 10-digit phone regex on request-otp
enforce +91 10-digit phone regex on verify-otp
enforce +91 10-digit phone regex on business settings
enforce +91 10-digit phone regex on user settings
v1.76.1
25 March 2026
1.76.1
(2026-03-25)
Bug Fixes
normalize phone to +91 format for OTP lookup during login
unexport normalizePhone to fix server action build error
normalize phone to +91 format for OTP verification
remove local normalizePhone, rely on otp-service normalization
normalize phone to +91 format for OTP verification
enable smart caret on phone input to prevent cursor jumping
normalize phone to +91 format for OTP verification
normalize phone to +91 format for SMS fallback OTP lookup
v1.76.0
23 March 2026
Bug Fixes
update image source path for correct loading
Features
implement image carousel for enhanced user engagement
v1.75.7
23 March 2026
1.75.7
(2026-03-23)
v1.75.6
22 March 2026
1.75.6
(2026-03-22)
Bug Fixes
update last modified dates for various pages and adjust priority for blog posts
v1.75.5
21 March 2026
1.75.5
(2026-03-21)
Bug Fixes
set staleTime to 0 so steps update immediately after completion
v1.75.4
21 March 2026
1.75.4
(2026-03-21)
Bug Fixes
exclude CREATED status from active check to match subscription gate
exclude CREATED status from active subscriptions to block unpaid users
v1.75.3
21 March 2026
1.75.3
(2026-03-21)
Bug Fixes
handle Razorpay customer-already-exists error for re-registering users
v1.75.2
21 March 2026
1.75.2
(2026-03-21)
Bug Fixes
delay tour dialog until user has active subscription
v1.75.1
21 March 2026
1.75.1
(2026-03-21)
Bug Fixes
use WhatsApp icon instead of generic MessageSquare in sidebar nav
v1.75.0
21 March 2026
Features
add rating filter to feedback section defaulting to Needs Work
Bug Fixes
keep delete dialog open during pending mutation
resolve FK constraint error and add missing deletions in user delete
add client-side phone min length validation to prevent partial numbers
add server-side phone number validation to reject incomplete numbers
v1.74.0
20 March 2026
Features
add TICKET_RESOLVED to WhatsAppTemplateType enum
add Ticket Resolved WhatsApp template to admin tester page
add wa_ticket_resolved handler with sample data to tester API
send WhatsApp notification on ticket resolve with template fallback
add missing webhook message types for audio, video, sticker, reaction, button, interactive
add optimistic update for sent messages so they appear instantly
add rich message type rendering with icons for photo, video, audio, document
add sendTicketResolved method and auto-truncate all template params to 100 chars
add TICKET_RESOLVED template type, name mapping, and data interface
extract content from all webhook message types instead of storing null
Bug Fixes
accept PDF files by extension fallback on client-side validation
validate PDF by extension and magic bytes, not just MIME type
add null guards for assignedBy and nullable name fields on detail page
make firstName/lastName and assignedBy nullable in detail hook types
default status filter to Open instead of All
exclude reactions from conversation previews and show proper media labels
filter reaction events from message list since they are metadata
remove unnecessary slice on last message preview in conversation list
v1.73.0
20 March 2026
Features
make compliance framework step skippable in onboarding flow
v1.72.2
20 March 2026
1.72.2
(2026-03-20)
Bug Fixes
accept all non-terminal subscription statuses in gate to prevent blocking after checkout
v1.72.1
20 March 2026
1.72.1
(2026-03-20)
Bug Fixes
allow re-subscription when existing subscription is cancelled or expired
v1.72.0
20 March 2026
Features
add DELETE endpoint to fully remove user with Razorpay subscription cancellation
add delete user button with AlertDialog confirmation to users table
add useDeleteAdminUser mutation hook
v1.71.0
20 March 2026
Bug Fixes
fix mobile overflow on pricing, switch plan CTA, and make cancel button red
invalidate onboarding query when department is created
make add department dialog scrollable on mobile and accept trigger prop
replace trial CTA with dashboard link for authenticated users
show Go to Dashboard instead of Start Free Trial for logged-in users
show Go to Dashboard on pricing card for logged-in users
prevent Google business search from overflowing on mobile
constrain email dashboard wrapper height for proper inner scrolling
fix template and activity tabs not scrollable in email dashboard
remove overflow-hidden clipping ScrollArea in AI template review dialog
fix lint errors in usePwaInstall hook — lazy init and deps array
improve business setup dialog mobile layout and use slug input
use slug input type for profile URL slug field
add collapsed-mode icons for feedback and Chrome extension banners
close mobile sidebar when clicking dropdown menu items
hide dialog description on mobile and reduce header padding
Features
add blocking subscription gate with trial info and Razorpay auth charge notice
make onboarding banner collapsible with localStorage persistence
wrap dashboard content with subscription gate
add Create Custom button and fix dialog scrolling on mobile
add Grant All and Revoke All buttons for module permissions
add Grant All and Revoke All buttons to edit employee permissions
add slug input type with auto-lowercase and space-to-dash transform
add usePwaInstall hook for beforeinstallprompt event handling
add PWA install banner with expanded and collapsed modes
v1.70.1
20 March 2026
1.70.1
(2026-03-20)
v1.70.0
20 March 2026
Features
expose apiTokenScopes in session for Bearer token authentication
add public lead capture endpoint with CORS and Bearer token auth
add @practicestack/leads npm package for external lead capture
v1.69.0
20 March 2026
Bug Fixes
hide More dropdown at correct breakpoint and prevent negative badge count
close mobile sidebar sheet on navigation link click
Features
replace Proposals with Leads for quicker daily access
show per-device status and clarify multi-device enable behavior
v1.68.0
20 March 2026
Features
add drag-and-drop reordering for inclusion/exclusion lists
v1.67.0
20 March 2026
Bug Fixes
move subdomain check to useEffect to fix hydration mismatch
use useSyncExternalStore for subdomain check to satisfy React Compiler
move subdomain check to useEffect to fix hydration mismatch
use useSyncExternalStore for subdomain check to satisfy React Compiler
hide navbar and footer in print media for PDF generation
inline CSS background-image URLs so hero banners appear in brochure PDFs
use provided signedAt date for internal proposals instead of auto-setting to today
add cache-busting timestamp to brochure PDF preview iframe
Features
add phone and profileImage to feedback hook type
add profile image, email, phone, and WhatsApp contact buttons to feedback section
include phone and profileImage in feedback API response
add Google autofill with confirmation diff and auto-save to edit dialog
add Internal badge to expiring proposal card
add Internal badge to recent proposals widget
add Internal badge and hide Notify Client for internal proposals
add INTERNAL banner, hide Send/Accept buttons for internal proposals
add Internal Proposal toggle to new proposal wizard
add is_internal to proposal zustand store
add Signed At date field for internal proposals, hide Valid Until
add visible profile slug field with auto-generation to onboarding form
auto-approve internal proposals and suppress client notifications on creation
block client responses for internal proposals
block OTP send for internal proposals
block OTP verification for internal proposals
block send-notification for internal proposals
exclude internal proposals from creation notification cron
hide client signature toggle and show info bar for internal proposals
include isInternal in proposals list select
show Internally Approved in signature section for internal proposals
skip signature validation and adapt toast for internal proposals
add isInternal field to Proposal model
add auto-save, Google autofill, slug auto-gen, and celebration dialog to business settings
add Google autofill with confirmation diff and auto-save to user profile
add Google autofill, auto-slug generation, celebration banner, and hide footer when clean
replace manual save with debounced auto-save on user profile form
v1.66.1
20 March 2026
1.66.1
(2026-03-20)
v1.66.0
20 March 2026
Bug Fixes
remove non-null assertion in DELETE handler
sync description and approval labels to GitHub using post-update data
use useWatch for auto-save to satisfy React Compiler lint
Features
add image paste (Cmd+V) and drag-drop with S3 upload to TipTap editor
add image upload API route for editor paste and drop
add delete button with confirm dialog to admin ticket detail page
add DELETE endpoint to delete ticket and close linked GitHub issue
add useDeleteTicket mutation hook
replace manual Save with debounced auto-save for ticket description
v1.65.1
20 March 2026
1.65.1
(2026-03-20)
Bug Fixes
build mcp-server before next build to ensure fresh dist on Vercel
v1.65.0
19 March 2026
Features
Add comprehensive SEO metadata for robots, Open Graph, and Twitter, integrate FAQPage structured data, and enhance table accessibility.
Add WhatsApp lead form, update contact numbers, and enhance error page contact with WhatsApp branding.
Implement dynamic profession pages, replacing static ones, and enhance various UI components and configurations.
introduce dedicated competitor comparison pages with updated footer, SEO, and sitemap configurations.
Redesign loading spinner with an enhanced animated logo and a minimal dot progress indicator.
redesign navigation menu dropdowns with a two-column layout, categorized content, and enhanced list item styling.
Replace animated SVG background patterns with a Next.js Image component and gradient overlays.
update homepage SEO metadata and contact number for improved discoverability.
v1.64.0
19 March 2026
Bug Fixes
use canonical Tailwind class max-h-125 instead of arbitrary value
Features
add attachments and screenshot support to ticket MCP tools
add detailed platform instructions and workflow documentation to MCP server
add migration for ticket approval field
add TicketApproval enum and approval field to Ticket model
add approval card with approve/reject buttons and badge in detail header
add approval field to PATCH, auto-create and sync GitHub labels on approve/reject
add dedicated ticket detail page with TipTap editor, image upload, and GitHub push button
add image attachments in replies with S3 upload, sync images to GitHub comments
add POST endpoint to manually push ticket to GitHub as an issue
add TicketApproval to TicketItem interface and useUpdateTicket mutation
add useTicket, usePushToGitHub hooks, support description and attachments in mutations
add WhatsApp notification to admin on new ticket creation
include current approval label when manually pushing ticket to GitHub
include pending-approval label when creating GitHub issues for new tickets
show approval badge in ticket list with null-safe fallback
support description update in PATCH, add WhatsApp admin notification on status change
v1.63.1
19 March 2026
1.63.1
(2026-03-19)
v1.63.0
19 March 2026
Bug Fixes
wrap auth() in try-catch to prevent HANGING_PROMISE_REJECTION during Next.js prerendering
remove test-error page that breaks build, remove unused useReorderWorkflowSteps export
prevent dialog from re-opening after enabling push notifications
replace useEffect+setState with useMemo for ticket badge to fix lint error
remove unused WorkflowListItem and WorkflowDetail exports
replace template variables with admin user data in test emails
use PageHeader component and improve skeleton loader visibility
Features
add Workflows navigation item to admin sidebar
add delivery stats from NotificationLog to announcements list API
add deliveryStats type to AdminAnnouncement interface
show push and email delivery stats column in admin table
redesign error page with friendly animated monitor illustration and softer UX
auto-create ticket with screenshot, breadcrumbs, and page context for bad/okay ratings
capture screenshot and breadcrumbs, open dialog for okay rating, add manual trigger
add migration for Workflow models
add Workflow, WorkflowStep, WorkflowStepExecution models for onboarding flows
add feedback banner, ticket badge on Support link, and notification dot on avatar
add messageCount and devMessageCount to ticket list response
add messageCount and devMessageCount to TicketItem type
show dev message count badge on ticket cards
add admin UI — list, create, and edit pages with InputField + TipTap editor
add CRUD API routes and TanStack Query hooks for workflow management
add daily cron job to process workflow steps and send emails + push
add dedicated workflow detail page for step management with TipTap editor
add email open tracking endpoint with 1x1 GIF pixel
add push notification click tracking with redirect
add test email API endpoint for workflow steps with predefined template
add workflow step CRUD and reorder API routes
default channel to Both, add variable chips and AI context to editor
simplify step form — name as subject/title, auto-truncate push body, add preview and test email
v1.62.0
19 March 2026
Bug Fixes
defer auto-open dialog until tour completes, remove duplicate toast, auto-close on enable
fix Tailwind classname order and lint warning in dialog handler
remove unsupported onPointerDownOutside from AlertDialogContent
update dashboard tour steps — remove Billing, add Onboarding and Invoices
Features
rewrite as sidebar banner + dialog with snooze, blocked state, and inline settings
add migration for optional completedAt on ProductTour
make ProductTour.completedAt nullable to support snooze-only records
add notification banner with collapsed icon, remove Notifications from dropdown menu
add tour ID to Invoices menu item
replace skip action with snooze — only set skippedAt without completing
replace Skip Tour with Remind Me Later snooze and block dialog dismissal
snooze logic — suppress tour for today only, re-show next day until completed
v1.61.1
19 March 2026
1.61.1
(2026-03-19)
Bug Fixes
enable session auto-refresh every 5min and on tab focus to keep JWT in sync with DB
add session refresh redirect for users with stale JWT token
check DB for phone before showing OTP form to prevent stale token loop
remove unused export from TicketMessageItem interface
remove DropdownMenuSub component definitions (unused after settings menu flattening)
remove unused DropdownMenuSub exports after settings menu flattening
v1.61.0
19 March 2026
Bug Fixes
replace img with next/image for profile images
show unique subscribers with device count badge
deduplicate subscribers by user and show device count
update Subscriber type to flat user-grouped structure
use separate queries to avoid Prisma Accelerate relation type issue
removed used function
Features
add phone, profileImage, and business _count to EnhancedRecentUser type
include phone, profileImage, and business counts in recent users query
enrich user sidebar with profile status, phone, subscription, and usage counts
add signup funnel and OTP delivery PostHog events
track signup funnel events with PostHog
add sms-service for Msg91 OTP delivery
add subscriber list and category breakdown to notification analytics
return subscribers and per-category stats in notification analytics API
smart channel routing based on WhatsApp delivery history
send SMS fallback when WhatsApp OTP delivery fails
save template messages to WhatsAppMessage table for webhook tracking
v1.60.1
19 March 2026
1.60.1
(2026-03-19)
Bug Fixes
improve npm version collision detection in publish workflow
skip publish workflow when triggered by its own version commit
v1.60.0
19 March 2026
Bug Fixes
add bun types and include scripts dir to fix VS Code errors
add index signature to ToolResponse to fix VS Code TS2589 errors
cast server to any to suppress TS2589 deep type errors in ticket tools
Features
add notification stats API endpoint and hook
wrap feedback in card and add push notification stats section
add ticket tools for issue tracking via MCP server
register ticket tools in MCP server factory
log push and email delivery to NotificationLog table
add migration for NotificationLog table
add NotificationLog model for push and email delivery tracking
add 25 management software keywords for CA, CS, Tax & CMA
update CA page title, H1, description and schema to target management software
update CMA page title, H1, description and schema to target management software
update CS page title, H1, description and schema to target management software
update global title and description to lead with CA management software
update homepage H1 from proposal software to CA management software
update homepage metadata and schema to target CA management software keyword
update tax page title, H1, description and schema to target management software
v1.59.0
19 March 2026
Bug Fixes
replace non-null assertions with nullish coalescing in reengagement
use business WhatsApp number with support context in global error page
use business WhatsApp number with support context in pre-filled message
use business WhatsApp number with feedback context in pre-filled message
remove unnecessary export from GitHubIssueResult interface
remove unnecessary export from GitHubIssueResult interface
remove unused getBreadcrumbs and trackAction exports
suppress eslint no-console for intentional console interception
wrap BreadcrumbTracker in Suspense to fix blog/[slug] prerender
allow IP and non-production hostnames to bypass tenant subdomain routing
remove unused ExternalLink import from ticket settings
remove unused Settings icon import
use business WhatsApp number with support context in pre-filled message
remove unused useTicket hook export
restore exports for useTicketMessages and useReplyToTicket hooks
use profileImage instead of image in ticket message author avatar
add 2xl tier to tab switcher to prevent title truncation with 5+ tabs
auto-mark new incoming messages as read while viewing conversation
fix Tailwind classname order and canonical class in conversation list
fix Tailwind classname order in chat view
mark messages as read when selecting a conversation
remove unnecessary export from WhatsAppWebhookValue interface
replace non-null assertion with nullish coalescing in hook
wrap messages and window check in useMemo to fix React purity lint
Features
add conversation thread and reply input to ticket detail sheet
add conversations API with unread counts for WhatsApp inbox
add messages API for WhatsApp chat history
add TanStack Query hooks for WhatsApp inbox with polling
add tickets management page with filters, detail sheet, and status actions
add Tickets nav item to admin sidebar
add WhatsApp nav item to admin sidebar
add WhatsApp reply API with 24-hour window check
add error-report endpoint that creates deduplicated GitHub issues with S3 screenshots
add ticket creation and listing endpoints with GitHub issue sync
add ticket detail and update endpoints with role-based access
add user and device sections to GitHub issue body
sync ticket close to GitHub issue and close linked issue automatically
track lastLoginAt on signIn and throttled session refresh, stop re-engagement on login
add re-engagement cron job with push + WhatsApp for inactive users
add weekly ticket-expiry job to auto-close tickets older than 90 days
add error page with Contact Us button that silently creates GitHub issue and opens WhatsApp
add global error page with inline styles for root layout crashes
include user identity and device info in error reports
add API call tracking to breadcrumbs via fetch interception
add breadcrumb system to capture console logs and navigation before errors
add lastLoginAt, ReEngagementLog model, and 4 WA re-engagement enum values
add migration for re-engagement system schema
add migration for WhatsAppMessage table
add TicketMessage model for two-way ticket chat
add WhatsAppMessage model for inbox conversations
initialize breadcrumbs and track route changes for error reporting
add migration for Ticket model
add Ticket model with type, status, priority, GitHub sync and device info fields
add Support tab with ticket list, filters, create dialog and image upload
wire Support tab into settings page with LifeBuoy icon
add 4 re-engagement WhatsApp templates to Template Tester UI
add re-engagement template send handlers with sample data
add conversation sheet with chat UI for user ticket replies
add messages API for two-way ticket conversation
add TanStack Query hooks for ticket CRUD operations
add reengagement cron schedule at 8 AM IST daily
add auto-reply for support and feedback WhatsApp messages
add GitHub webhook for issue comment and status sync
add WhatsApp webhook for incoming messages and status updates
add 4 re-engagement template types, names, and data interfaces
add 4 sendReengagement methods for re-engagement notifications
add chat view with message bubbles and reply input
add conversation list panel with search and unread badges
add mark-as-read API to clear unread count on conversation open
add sendTextMessage for free-form inbox replies
add skeleton loading state for inbox page
add status ticks component for message delivery states
add useMarkWhatsAppRead hook for marking messages read
add webhook payload types and inbox UI types
add WhatsApp inbox page with two-panel responsive layout
v1.58.0
18 March 2026
Bug Fixes
fix industry pie chart clipping by switching to full-width vertical layout
remove unused export from UserPostHogData interface
remove unused exports from ComplianceType and ComplianceGroup interfaces
remove unused export from AdminFeedbackItem interface
Features
add FeedbackSection to admin dashboard with rating summary and feed
add GET /api/admin/feedback endpoint and useAdminFeedback hook
add POST /api/feedback endpoint to save user feedback
mount FeedbackWidget in dashboard layout
add floating feedback widget with 3-option rating, useMutation, and 15min delay for new users
add UserFeedback model and FeedbackRating enum with migration
add Chrome extension promo banner for ADMINISTRATOR role above footer
add Support button linking to WhatsApp in user dropdown
v1.57.0
18 March 2026
Bug Fixes
auto-fix tailwind canonical classes and classnames order
remove onboarding from super admin panel (firm-owner only feature)
stabilize useMemo deps by destructuring mutation and memoizing employees
replace arbitrary max-w with canonical tailwind class
revert per-component scroll overrides now handled by dialog
add overflow-y-auto to DialogContent so all dialogs scroll
fix tailwind classnames order in DialogContent
Features
add clickable user activity sheet to Recent Customers with PostHog data
add per-user PostHog activity hook for admin dashboard
add PostHog per-user activity API with sequential queries to avoid rate limits
add tracking events for all CRUD operations across modules
track Google and Microsoft login events
add bulk-assign endpoint for executor/reviewer by compliance type
add executor/reviewer to response, auto-set from RM on toggle, add PATCH endpoint
accept optional rmId when creating a business
add inline executor/reviewer pickers to compliance toggle list
add inline RM picker, industry selector, and status toggle to business table
add optional RM selector to add business dialog
add RM selector to edit business dialog
add rm type to BusinessWithCounts interface
include rm relation in business list API response
support rmId, status, and partial updates in PATCH endpoint
add analytics tracking for create, update, delete
add analytics tracking for update, delete, bulk delete
add estimatedHours to ComplianceItem and track toggle
auto-set executor/reviewer from business RM when assigning compliance
support estimatedHours in business compliance API
add analytics tracking for create and update
add analytics tracking for delete
add analytics tracking for lead deletion
add estimatedHours column to ClientComplianceRelation
add estimatedHours column to Compliance with default 1
return executor/reviewer, auto-set from RM on toggle, accept in PATCH
add analytics tracking for create, update, complete, send
inherit RM from business when creating onboarding, remove teamAssignments count
show executor/reviewer dropdowns per compliance instead of single employee
write RM back to business on onboarding completion
add analytics tracking for proposal deletion
track proposal PDF download events
add estimatedHours to ClientComplianceRelation and Compliance
migration to add rmId, executorId, reviewerId with data backfill
migration to drop assignedEmployeeId and OnboardingTeamAssignment table
add analytics tracking for update and delete
add analytics tracking for update and delete
add analytics tracking for checkout, seats, plan changes
v1.56.0
18 March 2026
Bug Fixes
always use CDN URL for cover images instead of raw S3
change ambiguous + icon to labeled Assign button
remove uppercase from View Pricing Plans button text
truncate title and breadcrumbs to prevent squishing tab switcher
add right padding to kanban so next column peeks into view
add right padding to kanban so next column peeks into view
change Resources dropdown to 3-column horizontal layout
Features
add CS, CMA to title tag and engagement letter terminology to meta description
add CS, CMA to title, engagement letter and DSC terms to meta descriptions
add ICAI engagement letter, fee quotes and service proposal keywords
add ICAI/ICSI/ICMAI badge, engagement letter and compliance terms to hero
add professional keywords to dashboard image alt text
update FAQ H2 with practice management and proposal software keywords
update solutions H2 to engagement letters, proposals and e-signatures
update target audience H2 to explicitly name CAs, CSs, CMAs and Tax Consultants
v1.55.0
18 March 2026
Features
add 7 comparison blog cover images
add comparison blog seed script with S3 upload and prebuild hook
add seed:blogs script and prebuild hook for auto-seeding
add seed:blogs command to root package.json
add page-specific keyword sets for about, contact, features, pricing, and legal pages
Bug Fixes
add dev S3 bucket hostname to next/image remotePatterns
update hero CTA test to check /login instead of /signup
change /signup to /login since signup route does not exist
change Resources href to # since it is a dropdown trigger not a route
change /signup to /login on CA landing page
change /signup to /login on CMA landing page
change /signup to /login on CS landing page
change /signup to /login on tax landing page
v1.54.0
18 March 2026
Bug Fixes
wrap documents in useMemo to fix exhaustive-deps
wrap invoices in useMemo to fix exhaustive-deps
wrap readyToOnboard in useMemo to stabilize reference
wrap invoices in useMemo to fix exhaustive-deps
upgrade exhaustive-deps and no-console from warn to error
remove unused exports from keyword arrays to fix knip
Features
restructure layout with Solutions column and separate Legal section
add industry landing pages to Resources dropdown
add /for-chartered-accountants landing page
add /for-company-secretaries landing page
add /for-cost-accountants landing page
add /for-tax-consultants landing page
add centralized SEO keywords config for all pages
add FAQ schema markup, centralized keywords, and update title
add global keywords and update title with em dash
add industry landing pages to sitemap with priority 0.9
update about page H1 to India-first client engagement platform
update features page H1 with India + CA, CS & Tax targeting
update H1 to keyword-rich copy and add WhatsApp follow-up line
update H2 to India-first client engagement platform positioning
update Open Graph image with new premium dashboard design
update Twitter card image to match new OG design
v1.53.0
18 March 2026
Bug Fixes
move readyIds inside useMemo to fix exhaustive-deps warning
remove non-null assertion in compliance route
replace non-null assertion with type assertion in step-complete
show client submitted banner and unblock complete button after client submission
Features
add inline editable executor/reviewer pickers and hours with avatar initials fallback
add team assignments API route and hook for business details
add team assignments table component with service-executor-reviewer view
add Team tab to business details page
add compliance API route and hooks with suggested groups from proposal services
add compliance toggle UI with employee assignment and suggested badges
auto-complete onboarding with invoice generation on client submission
include complianceTypeId in service/package selects for compliance detection
integrate compliance assignments section into Team step
v1.52.0
17 March 2026
Features
add onboard preview dialog on row click in Ready to Onboard tab
replace Start Onboarding link with proposal picker dialog
add clientSubmittedAt field to Onboarding model
migration for clientSubmittedAt on Onboarding
Bug Fixes
pass clientSubmittedAt to client portal view
persist client submission to DB and send emails non-blocking
show 'All done' on refresh using persisted clientSubmittedAt
v1.51.3
17 March 2026
1.51.3
(2026-03-17)
Bug Fixes
hide status/value columns in onboard tab to prevent horizontal scrollbar
v1.51.2
17 March 2026
1.51.2
(2026-03-17)
Bug Fixes
remove unnecessary search bar from recent proposals, add onboard/recent tabs
v1.51.1
17 March 2026
1.51.1
(2026-03-17)
Performance Improvements
remove global dashboard.webp preload unused on non-homepage routes
Bug Fixes
allow WebSocket connections in CSP for dev HMR
add missing sizes prop to background image
switch service worker from cache-first to network-first strategy
v1.51.0
15 March 2026
Bug Fixes
add optional chaining for registrations to prevent crash when field is undefined
include CLIENT-sourced registrations in server-side page data
wrap saveToApi in useCallback, move setSaveState inside debounce
spread readonly JOB_TITLE_OPTIONS to satisfy mutable type
remove explicit type annotation on filter to fix TS mismatch
close dialog on send success instead of showing link inline — prevents state reset from parent re-render
disable Send to Client button until step 3 is reached
disable Switch toggle during updateDocTemplate mutation
move setSaveState inside debounce to avoid synchronous setState in effect
move setSaveState inside debounce to avoid synchronous setState in effect
normalize values before auto-save comparison to prevent space/whitespace triggering saves, use isLoading for invoicing skeleton
prevent infinite save loop by tracking last saved values in invoicing auto-save
remove success toast from inline document template updates
remove success toast from inline onboarding updates
remove success toast from inline registration updates
remove success toast from inline team assignment updates
replace blur-based auto-save with debounced watch to prevent data loss on Next click
replace nested Card components with plain bordered divs in step-complete
show skeleton loading state while employees are being fetched in Team step
use isFetching for invoice settings child query loading state
use isFetching instead of isLoading for employee dropdown loading state
remove transaction wrapper to prevent timeout with Prisma Accelerate
Features
accept clientResponse in credentials PATCH endpoint
add credentials PATCH endpoint for client credential submission
add submit endpoint to notify firm via email when client completes portal
include CLIENT-sourced registrations in portal response
include clientResponse in registrations response
add credential response options — don't have, need call, will share later
add Portal Credentials section for client to fill login details
auto-save credentials, sticky submit bar, responsive card headers and text overflow
include business contacts in server-side page data
pass clientResponse to ClientPortalView component
show existing contacts list, add contact via dialog with proper fields matching ContactDialog
show Onboard button for approved proposals instead of dropdown
accept credentialSource in registration update endpoint
add credentialSource to UpdateRegistrationData type
add Assign All bulk action and saving indicator for team assignments
add bulk credential mode action for all registrations at once
add Saving.../Saved indicator to registration cards during auto-save
persist credential mode to DB instead of local state
show refetching indicator when data updates in background
add PageHeaderSkeleton with shared layout for loading states
include onboarding relation in API response
add clientResponse field to OnboardingRegistration for client feedback
add CredentialSource enum and credentialSource field to OnboardingRegistration
migration for clientResponse on OnboardingRegistration
migration for credentialSource on OnboardingRegistration
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
13 March 2026
Bug Fixes
replace useEffect setState with derived state for GSTIN initialization
track auto-verify by subscription ID so plan switches trigger re-verify
add safe JSON parsing and network error handling to ApiClient
improve auth and server error messages with actionable guidance
force refetch after checkout and open checkout on plan change requiring re-auth
handle UPI subscriptions by cancel+recreate when plan update fails
Features
add billing history section, GSTIN input on pricing card, and pre-fill from business settings
add switch plan CTA with confirmation dialog in current plan card
auto-verify CREATED subscriptions on page load and add dev tools for trial/sync
redesign billing page with pricing cards, monthly/yearly toggle, and comprehensive feature list
add shared error categorization handler for tool responses
add Chrome extension and MCP server to premium plan features
add BillingPeriod enum and billingPeriod field to Subscription model
add migration for billing period field
accept billingPeriod param and select monthly/yearly Razorpay plan
add change-plan API to switch between monthly/yearly via Razorpay
add dev-only subscription reset endpoint for testing
add invoices API to fetch billing history from Razorpay
add PATCH endpoint to force-end trial and set subscription active
add useChangePlan hook for switching billing period
add useInvoices hook, GSTIN support in create mutation, and gstNumber in response type
add useVerifySubscription and useDevEndTrial hooks, return status from verify
create Razorpay customer with GSTIN and save to business on subscribe
include business gstNumber in subscription GET response
pass billingPeriod to create mutation and add dev-reset hook
pass GSTIN via Razorpay customer when recreating subscription on plan change
v1.48.0
12 March 2026
Bug Fixes
use Uint8Array with ArrayBuffer for proper TS typing
remove debug logging from test-lead-email route
respect isCustomBrochure flag in attachment logic
adjust testimonial layout for improved styling and responsiveness
remove services section and unused import from print page
sanitize coverLetter HTML with DOMPurify in print page
hide PracticeStacks footer on firm profile pages
show template header with Add Template button in email templates tab
use const instead of let for immutable variable in brochure attachment
hide PracticeStacks navbar on firm profile pages
avoid dev server deadlock by pre-fetching HTML and inlining resources
return direct S3 URL in development instead of CDN
skip brochure auto-regen when custom brochure is uploaded
use print page for brochure preview to avoid CDN iframe blocking
Features
add brochure PDF generation and status endpoint
include profileSlug in ownBusiness session data
add PDF preview endpoint that proxies S3 file for inline viewing
add custom PDF upload and delete endpoints
add business profile cache tags and invalidation
attach firm brochure PDF to daily lead emails
attach firm brochure PDF to daily proposal notifications
attach firm brochure PDF to monthly compliance initial emails
attach firm brochure PDF to monthly compliance reminder emails
add attachments support to proposal, lead, and compliance emails
attach firm brochure PDF to lead email if available
auto-generate brochure PDF if missing and download via S3 SDK
add dynamic favicon using business logo
add dynamic OG image with business banner and logo
add public firm profile page with print layout and loading skeleton
add SEO metadata, owner card, dynamic favicon, remove services section
apply brand color theming, fix HTML rendering, redesign testimonials with accent bars and quote marks
add brochure PDF attachment helper for outgoing emails
add business profile data fetcher with ISR caching
add firm brochure PDF generation via html2pdf API
add Puppeteer PDF generation for local dev alongside html2pdf.app API for production
replace services with owner data in business profile query
add business profile fields with slug backfill for firm businesses
attach firm brochure PDF to proposal notification emails
add business profile fields for firm page and brochure PDF
add isCustomBrochure flag to Business model
add migration for isCustomBrochure column
add profile slug, tagline, social links, and brochure cache invalidation
add brochure management section with preview and upload
add firm profile and social media sections to business settings form
auto-regenerate brochure PDF in background when business profile is saved
render BrochureSection below business settings
add Visit Firm Page link in dropdown menu
integrate leads data into sidebar with loading badge
show business logo with name instead of PracticeStacks logo when available
v1.47.1
11 March 2026
1.47.1
(2026-03-11)
Performance Improvements
add ISR with use cache and cache tags
remove connection() for static ISR rendering
remove connection() from detail page for ISR
add ISR with use cache, sanitize release notes at read time
remove connection() for static ISR rendering
remove connection() from detail page for ISR
Bug Fixes
convert markdown content to HTML before rendering
v1.47.0
11 March 2026
Bug Fixes
broadcast announcements to all users, not just active subscribers
Features
add announcement form with rich editor and default published status
add Announcements link to admin sidebar navigation
add announcements list page with header and table
add announcements loading skeleton
add announcements table with search, filters, pagination, and empty state
add edit announcement page with data loading
add new announcement page
add data access helpers for public announcement queries
add public announcement detail page with prev/next navigation
add public announcements loading skeleton
add public announcements timeline page with SEO metadata
add admin announcement get, update, and delete endpoints
add admin announcements list and create endpoints
add React Query hooks for admin announcement CRUD
add announcement cache tags and invalidation methods
add Announcements link to resources section
replace standalone Blog link with Resources dropdown containing Blog, Changelog, Announcements
support nested children links in mobile menu
add sendAnnouncementNotifications for push and email
add Announcement model with type and status enums
add migration for Announcement model