Bug Fixes
- add logic to handle invoices without a number and issue date, closes failed-to-generate-blog-metadata-#2368 #2368
- typo in old invoices' refusals, closes failed-to-generate-blog-metadata-#2368 #2368
- add tests for new invoice validation, closes user-module-redesign-#2372 #2372
- remove unnecessary check for imported invoices, closes failed-to-generate-blog-metadata-#2368 #2368
- update package.json dependency versions, closes amount-displayed-in-proposal-#2377 #2377
- add help requested badge, closes issue-backdated-invoices-purchasing-practice-#2369 #2369
- add import invoices functionality, closes failed-to-generate-blog-metadata-#2368 #2368
- add logic to convert leads from won to client after upgrading business, closes failed-to-generate-blog-metadata-#2368 #2368
- add test for clearing session cookies, closes practice-stacks-live-demo-accounts-#2366 #2366
- clear-session-cookies — use it unless a shorter/more accurate component name is obvious from the diff, closes practice-stacks-live-demo-accounts-#2366 #2366
- resolve client sender logic, closes user-module-redesign-#2372 #2372
- update help request logic and implement client notification, closes issue-notify-responsible-team-member-#2375 #2375
- update variant prop from string to enum, closes failed-to-generate-blog-metadata-#2368 #2368
- add seed methods for guides and compliance types, closes failed-to-generate-blog-metadata-#2368 #2368
- update route.ts, closes two-different-last-active-times-#2374 #2374
- add bookDemoAccessFor method, closes failed-to-generate-blog-metadata-#2368 #2368
- use new link route for demo booking, closes failed-to-generate-blog-metadata-#2368 #2368
- update booking logic, closes user-module-redesign-#2372 #2372
- split out landing sheet (#2366)
- update condition for bookingMissing in DemoLaunch component, closes user-module-redesign-#2372 #2372
- add loadHelpTasks and use HELP_SIGNAL, closes user-module-redesign-#2372 #2372
- add missing variant props and improve text formatting, closes failed-to-generate-blog-metadata-#2368 #2368
- update gemini_ai.ts, closes failed-to-generate-blog-metadata-#2368 #2368
- add firstGuideImage to get the first screenshot in a guide's content as a picture on its card, closes failed-to-generate-blog-metadata-#2368 #2368
- improve help request handling in compliance-document-collection.js, closes two-different-last-active-times-#2374 #2374
- simplify demo buttons for better readability, closes practice-stacks-live-demo-accounts-#2366 #2366
- clarify reasons for deleting imported invoices, closes failed-to-generate-blog-metadata-#2368 #2368
- implement Excel import option and support for old invoices, closes user-module-redesign-#2372 #2372
- remove old invoice headline, closes failed-to-generate-blog-metadata-#2368 #2368
- add import functionality to new-invoices-page, closes failed-to-generate-blog-metadata-#2368 #2368
- add support for past invoices and collectable totals, closes failed-to-generate-blog-metadata-#2368 #2368
- validate Indian numbers when validating lead phone nums, closes failed-to-generate-blog-metadata-#2368 #2368
- add logic to open Convert sheet when needed, closes failed-to-generate-blog-metadata-#2368 #2368
- add className prop to OutcomeCard, closes user-module-redesign-#2372 #2372
- add logic to convert sheet before upgrade business, closes failed-to-generate-blog-metadata-#2368 #2368
- add functionality to render "already issued before PracticeStacks" invoice fields for old invoices, closes issue-backdated-invoices-purchasing-practice-#2369 #2369
- add linkLeadId field to CreateOnboardingData, closes failed-to-generate-blog-metadata-#2368 #2368
- add link lead to existing client functionality, closes failed-to-generate-blog-metadata-#2368 #2368
- update glitchgrab dependency to 1.59.1, closes practice-stacks-live-demo-accounts-#2366 #2366
- update payment link button to use custom label, closes add-screenshots-for-each-module-#2367 #2367
- handle help requests for at-risk messages, closes user-module-redesign-#2372 #2372
- add support for Client Help tasks in schema.prisma, closes issue-notify-responsible-team-member-#2375 #2375
- remove security-related sections from profile completion card when in demo mode
- add formatFeePlusGst function for formatting fee and GST as a single string
- improve fee calculation and formatting, closes amount-displayed-in-proposal-#2377 #2377
- use proposalPrice for client total calculation, closes two-different-last-active-times-#2374 #2374
- update summary display with new fee-plus-gst string, closes amount-displayed-in-proposal-#2377 #2377
- update currency formatting for total contract investment
- add password and two-step login lockout prevention, closes user-module-redesign-#2372 #2372
- one click opens the booking sheet right on the homepage; booking lands the demo, closes practice-stacks-live-demo-accounts-#2366 #2366
- add screenshots to guide cards, closes failed-to-generate-blog-metadata-#2368 #2368
- add demo keys for explore live demo button and detail page, closes failed-to-generate-blog-metadata-#2368 #2368
- add page for admin user page, closes user-module-redesign-#2372 #2372
- add tests for new functionality in notification settings tab, closes admin-panel-issue-too-cluttered-#2364 #2364
- prevent closing the sheet when there's a header with z-10 and no click handler, closes cancel-click-issue-#2373 #2373
- add loadHelpTasks to ensure help requests are not repeated in the document line, closes user-module-redesign-#2372 #2372
- update highlighted row selection for new results, closes shortcut-key-notifications-#2365 #2365
- add stage route, closes failed-to-generate-blog-metadata-#2368 #2368
- add link lead id for onboarding start, closes failed-to-generate-blog-metadata-#2368 #2368
- improve task types and labels, closes issue-backdated-invoices-purchasing-practice-#2369 #2369
- add proposal value formatting for test email notifications, closes two-different-last-active-times-#2374 #2374
- add GST to proposal value, closes two-different-last-active-times-#2374 #2374
- add 'id' filter and return only the row's ID #2372, closes failed-to-generate-blog-metadata-#2368 #2368
- update proposal value calculation for verification OTP route, closes two-different-last-active-times-#2374 #2374
- add currency code to proposal template data, closes two-different-last-active-times-#2374 #2374
Features
- add fee and gst in quoted value for proposals, closes two-different-last-active-times-#2374 #2374
- improve import logic for invoices, closes failed-to-generate-blog-metadata-#2368 #2368
- add branch input field, closes issue-backdated-invoices-purchasing-practice-#2369 #2369
- close panel when converting to client, closes failed-to-generate-blog-metadata-#2368 #2368
- improve user row and filter panel interactions
- add intro and on-booked props, closes failed-to-generate-blog-metadata-#2368 #2368
- add decideBookedEntry helper function for gate booking verification, closes failed-to-generate-blog-metadata-#2368 #2368
- add tests for issueBookedDemoAccessFor and decideBookedEntry, closes failed-to-generate-blog-metadata-#2368 #2368
- use currency symbol in proposal value
- add row action items for giving referral reward and setting referred by, closes add-screenshots-for-each-module-#2367 #2367
- add firm staff sender test for #2376
- add firm-staff account lookup functionality, closes deleted-user-wa-role-menu-#2376 #2376
- pre-paid credits used up when production returned them (#2368)
- fix Gemini account failure on AI click, closes failed-to-generate-blog-metadata-#2368 #2368
- add test for first guide image, closes failed-to-generate-blog-metadata-#2368 #2368
- add guide card feature, closes failed-to-generate-blog-metadata-#2368 #2368
- add support for opening user row actions and more user filters in /admin/users (#2364), closes add-screenshots-for-each-module-#2367 #2367
- fix page to show old invoice, closes failed-to-generate-blog-metadata-#2368 #2368
- add support for importing previous bills, closes user-module-redesign-#2372 #2372
- add SendQuoteSheetHost and PaymentLinkSheetHost to AdminUsersLayout, closes failed-to-generate-blog-metadata-#2368 #2368
- improve lead board logic and user experience, closes failed-to-generate-blog-metadata-#2368 #2368
- names the first digit instead of the count when all 10 digits are there, closes failed-to-generate-blog-metadata-#2368 #2368
- move lead to Won from Convert sheet, closes lead-to-client-confirmation-#2363 #2363
- remove link lead to client mutation, closes failed-to-generate-blog-metadata-#2368 #2368
- add 'CLIENT_HELP' type to TaskSourceType, closes issue-notify-responsible-team-member-#2375 #2375
- add old invoice handling logic, closes issue-backdated-invoices-purchasing-practice-#2369 #2369
- add setting tab and caps, closes admin-panel-issue-too-cluttered-#2364 #2364
- use proposal-value to format proposal value label
- add fee and GST in the email and WhatsApp alike, closes two-different-last-active-times-#2374 #2374
- use
useSessionfor account panel settings, closes user-module-redesign-#2372 #2372 - clear session cookies for start demo route, closes failed-to-generate-blog-metadata-#2368 #2368
- add CLIENT_HELP type, closes issue-notify-responsible-team-member-#2375 #2375
- filter out non-firm-staff accounts from usableAccounts
- add demo booking start flow, closes failed-to-generate-blog-metadata-#2368 #2368
- refactor view tabs for user management, closes user-module-redesign-#2372 #2372
- update businessId linking for help requests and staff notifications, closes issue-backdated-invoices-purchasing-practice-#2369 #2369
