PracticeStacks Logo
PracticeStacks
  • Home
  • About
  • Features
  • Pricing
  • Contact
Start Free Trial
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

Ready to streamline your practice?

Join CA, CS & Tax firms across India using PracticeStacks.

Start Free Trial
PracticeStacks Logo
PracticeStacks

Bringing structure, clarity, and consistency to professional firms across India.

Get in Touch

  • shekhar@practicestacks.in
  • +91 96992 14195
  • Pune, Maharashtra, India

Platform

  • Home
  • Features
  • Pricing
  • About Us
  • Contact

Solutions

  • For Chartered Accountants
  • For Company Secretaries
  • For Tax Consultants
  • For Cost Accountants

Compare

  • vs GoProposal
  • vs Cone
  • vs Ignition
  • vs Anchor
  • vs Fresh Proposals
  • vs Financial Cents
  • vs FigsFlow

Resources

  • Blog
  • Changelog
  • Announcements

Legal

  • Cookie Policy
  • Cancellation & Refund
  • Terms of Service
  • Privacy Policy
© 2026 PracticeStacksA platform by Biztree Outsourcing Pvt Ltd