Commit graph

175 commits

Author SHA1 Message Date
Vlad Sazonau
059e4b03aa
Update product screenshot dimensions in README
Some checks failed
🔍 Knip / Run Knip (push) Has been cancelled
🧹 ESLint / Run linting (push) Has been cancelled
📝 TypeScript Type Check / Run type check (push) Has been cancelled
🧪 Vitest Unit Tests / Run unit tests (push) Has been cancelled
2026-04-20 11:45:12 +02:00
VladSez
dac8829140 refactor: remove RESEND_AUDIENCE_ID from environment configuration
Some checks are pending
🔍 Knip / Run Knip (push) Waiting to run
🧹 ESLint / Run linting (push) Waiting to run
📝 TypeScript Type Check / Run type check (push) Waiting to run
🧪 Vitest Unit Tests / Run unit tests (push) Waiting to run
- Deleted RESEND_AUDIENCE_ID from both .env.example and src/env.ts to streamline environment variable management.
2026-04-20 02:05:04 +02:00
VladSez
5ba4cae47b fix: enhance Terms of Service data-testid
Some checks failed
🔍 Knip / Run Knip (push) Has been cancelled
📝 TypeScript Type Check / Run type check (push) Has been cancelled
🧪 Vitest Unit Tests / Run unit tests (push) Has been cancelled
🧹 ESLint / Run linting (push) Has been cancelled
2026-04-18 16:45:39 +02:00
VladSez
79941e0eeb fix: update e2e tests for Terms of Service visibility and text consistency
- Modified the e2e tests for the Invoice Generator Page to ensure the Terms of Service text is consistent across mobile and desktop views.
- Updated the test assertions to reflect the revised text and structure for better clarity and accuracy.
- Changed the Playwright test reporter from 'list' to 'line' for improved output formatting.
2026-04-18 16:07:06 +02:00
VladSez
87760b5ae7 fix: update Terms of Service text for consistency in InvoiceClientPage
- Adjusted the Terms of Service text in both mobile and desktop views for clarity, removing the word apply to enhance readability.
- Increased spacing in the footer for better layout and visual appeal.
2026-04-18 13:11:55 +02:00
Vlad Sazonau
4967bb319c
fix: update Terms of Service text for clarity and consistency (#214)
* fix: update Terms of Service text for clarity and consistency

- Modified the Terms of Service text in the invoice form tests to include apply for better accuracy.
- Updated footer descriptions across multiple language files to clarify terms of use and include a link to the Terms of Service.
- Enhanced the About page and Changelog layout to ensure consistent presentation of Terms of Service information.

* i18n fixes
2026-04-18 02:17:29 +02:00
Vlad Sazonau
0b371690a4
feat: implement loading skeletons for various pages (#213)
* feat: implement loading skeletons for various pages

- Added a HeaderSkeleton component to provide a consistent loading state for the header across multiple pages.
- Updated About, Terms of Service, and Changelog loading states to utilize the new HeaderSkeleton for improved user experience during content loading.
- Refactored loading components to enhance visual consistency and maintainability.

* refactor: update loading component styles for improved responsiveness

- Adjusted maximum width settings for loading components in both loading.tsx and page.client.tsx to enhance layout consistency across different screen sizes. The new design accommodates larger displays while maintaining a clean and user-friendly interface.

* fix: minor style issue
2026-04-17 17:12:31 +02:00
VladSez
4422060542 feat: enhance tooltip content for invoice PDF download link
- Updated the tooltip for the invoice PDF download link to provide clearer compliance information, emphasizing user responsibility for local tax and accounting regulations. The new design includes a structured layout for improved readability.
2026-04-17 15:22:08 +02:00
Vlad Sazonau
18c01ed42b
feat: add tos and founder pages, add how it works yt video (#212)
* feat: add tos and founder pages, add how it works yt video

- Updated About page tests to reflect new href attributes for links, including features, FAQ, and Terms of Service.
- Added visibility checks for new links in the footer: Founder and Terms of Service in multiple languages.
- Refactored invoice form tests to include Terms of Service links for both mobile and desktop views.
- Updated translations in multiple languages to include new links for Founder and Terms of Service.
- Replaced video demo URL with YouTube embed in the InvoiceClientPage for improved accessibility.

* refactor: update footer descriptions and improve test cases

- Removed redundant title checks in the changelog test for streamlined validation.
- Updated the Terms of Service text in the invoice form tests for consistency.
- Enhanced footer descriptions across multiple language files to clarify the tool's purpose and terms of use.
- Removed unused founder link references in various components to simplify the codebase.

* fix: footer type

* feat: add tooltip for invoice PDF download link

- Integrated a CustomTooltip component to provide compliance information when downloading invoices.
- Updated the download link structure to include the tooltip, enhancing user experience and clarity.
2026-04-17 05:23:24 +02:00
VladSez
c48b71c5ad fix: update changelog entry layout to improve date display
- Added a new date display section in the changelog entry header for better visibility.
- Removed the previous date display to streamline the layout.
2026-04-14 22:39:15 +02:00
Vlad Sazonau
8a67b2ef32
fix: changelog updates, add founder recognition + minor style fixes (#210)
* fix: changelog updates, add founder recognition + minor style fixes

- Disabled the Next.js rule for using <img> elements in the ESLint configuration.
- Improved the layout of the Founders info section in the InvoiceClientPage for both mobile and desktop views by adding an avatar image and restructuring the HTML for better accessibility and styling.
- Updated the GitHub link text in the ProjectInfoLinks component to Star on GitHub for clarity.

* chore: link fix

* chore: minor readme fix

* fix: e2e test

* fix: e2e test

* refactor: improve image loading and styling across components

- Removed ESLint disable comment for <img> elements in mdx-components.
- Added lazy loading and async decoding attributes to images in InvoiceClientPage and Footer components for better performance.
- Updated GitHub Star CTA button styling for enhanced visual consistency.
- Adjusted backdrop blur effect in ManualPlayVideo component for improved aesthetics.
2026-04-13 18:31:57 +02:00
Vlad Sazonau
b832952caf
fix: update invoice PDF templates cond rendering (#209)
* fix: update invoice PDF templates cond rendering

- Replaced the live preview GIF with a new live PDF preview GIF in the README.
- Added a new demo GIF for GitHub README.
- Updated invoice PDF templates to use conditional rendering for various fields, improving readability and maintainability.

* chore: minor readme fix
2026-04-12 03:56:39 +02:00
Vlad Sazonau
32cfc46ad8
Enhance README with demo image and content updates
Added demo image and updated README content.
2026-04-12 03:22:30 +02:00
Vlad Sazonau
4f95e53e92
feat: update design for Github Star CTA btn, update changelog design (#208)
* feat: update design for Github Star CTA btn, update changelog design

- Introduced a new skill called 'caveman' that allows for ultra-compressed communication, reducing token usage while maintaining technical accuracy.
- Added detailed documentation for the 'caveman' skill, outlining grammar rules, response patterns, and examples.
- Updated skills-lock.json to include the new 'caveman' skill.
- Enhanced UI components for better spacing and visual consistency in various sections of the application.

* chore: update README

- Added a link to the EasyInvoicePDF website in the README logo section.
- Enhanced the README with updated version dates and improved formatting for release notes.
- Corrected the release date for v1.0.0 and v1.0.1 in the changelog files to reflect accurate information.

* chore: minor readme fix

* style: update GitHub Star CTA button to use rounded-full design

- Changed button styling from rounded-lg to rounded-full for improved aesthetics and consistency.

* chore: minor readme fix

* minor changelog clarifications
2026-04-12 01:40:40 +02:00
Vlad Sazonau
10b3fb2991
fix: mobile burger menu, lazy load videos on marketing page, minor css fixes (#207)
* fix: lazy load videos on marketing page, minor css fixes

- Updated .npmrc to include new supply chain security settings.
- Modified package.json to add trust policy for pnpm.
- Updated video component for improved lazy loading and playback control.
- Adjusted marketing feature card video fallback image and cleaned up CSS styles.

* fix: e2e test

* feat: add mobile menu, update translations for changelog links in multiple languages and enhance About page header component

- Changed the term changelog to more localized equivalents in German, Spanish, French, Italian, Dutch, Portuguese, Russian, and Ukrainian.
- Refactored the About page header component to improve structure and added translations for navigation links.
- Introduced new components for logo and mobile menu to enhance code organization and maintainability.
- Updated video component for better lazy loading and playback control.

* feat: enhance video components and update styles for About page

- Introduced AutoPlayVideo and ManualPlayVideo components for improved video playback experience.
- Updated video descriptions in marketing features for better clarity.
- Adjusted CSS styles in the mobile menu for consistent spacing.
- Removed scrollbar-gutter property to simplify global styles.

* refactor: update mobile menu styles and enhance video playback control

- Adjusted mobile menu button styles for improved spacing and visual consistency.
- Implemented video pause functionality when scrolling out of view to optimize resource usage.
- Enhanced e2e tests for the About page to include mobile and desktop navigation checks.
- Removed the unused GitHub star call-to-action header component.
- Added logic to handle mobile and desktop navigation visibility in tests.

* refactor: optimize color selection logic in hero description

- Simplified the color selection mechanism for highlighted text in the hero section by using a modulo operation to cycle through colors.
- Removed the random color selection to ensure a consistent color pattern across multiple spans.
2026-04-06 22:31:53 +02:00
Vlad Sazonau
a414bda22a
Enhance README with tax settings and QR code support
Added sections for customizable tax settings and QR code support with multi-page PDF capabilities.
2026-04-02 02:40:55 +02:00
Vlad Sazonau
d14456bd70
Update feature description for live preview 2026-04-02 02:21:46 +02:00
Vlad Sazonau
4c37060883
Update image sources in README.md 2026-04-02 02:20:31 +02:00
Vlad Sazonau
c37d3ac48d
Replace local image paths with direct links in README
Updated image sources in README.md to use direct links instead of local paths.
2026-04-01 16:15:20 +02:00
Vlad Sazonau
7dae0e5c28
refactor: update README and clean up demo assets (#205)
* refactor: update README and clean up demo assets

- Removed outdated sections from README, including shareable links, QR codes, and customizable tax settings.
- Updated the shareable links section with a new demo image.
- Deleted unused demo assets for QR codes, share links, and tax customization to streamline the project.
- Enhanced the general information section in the invoice form with improved staleness checking logic and documentation.

* chore: update datetime classname
2026-04-01 03:17:54 +02:00
Vlad Sazonau
a77a28405f
refactor: remove button helpers from general information section (#204) 2026-03-30 19:59:10 +02:00
Vlad Sazonau
89df4480b0
chore: improved upload logo e2e test, minor label fix, bump version to 1.0.3, added changelog.md and blog post with 1.0.3 announcement (#202) 2026-03-30 00:11:50 +02:00
VladSez
2140905142 chore: update screenshot assets for default template, easy invoice logo, and stripe template 2026-03-29 17:16:05 +02:00
Vlad Sazonau
ce1ea7169b
feat: replaced window.confirm with alert discard dialog for buyer and seller management (#200)
* feat: replaced window.confirm with alert discard dialog for buyer and seller management

- Added a ConfirmDiscardDialog component to handle unsaved changes in BuyerDialog and SellerDialog, enhancing user experience by preventing accidental data loss.
- Updated the dialog logic to open the confirmation dialog when attempting to close the forms with unsaved changes.
- Modified related tests to ensure the confirmation dialog behaves as expected, verifying the visibility and functionality of the discard options.
- Adjusted GitHub Actions workflows to include necessary permissions for improved CI/CD processes.

* feat: refactor buyer and seller management components with new dialog structure

- Updated import paths for BuyerManagement and SellerManagement components to reflect new directory structure.

- added re-usable hook

* chore: add Vercel deployment URL to E2E workflow notifications

- Included the Vercel deployment URL in the E2E workflow notifications to provide better visibility of deployment status alongside existing GitHub Actions run and pull request links.

* feat: implement pre-fill switch dirty guard in BuyerDialog and SellerDialog

- Added functionality to guard the pre-fill switch toggle against unsaved changes in both BuyerDialog and SellerDialog.
- Introduced a confirmation dialog that prompts users when attempting to toggle the pre-fill switch while the form is dirty, enhancing data integrity.
- Updated related tests to cover various scenarios for toggling the switch and confirming or discarding changes, ensuring expected behavior in the user interface.

* feat: enhance buyer and seller dialogs with localStorage validation

- Updated BuyerDialog and SellerDialog to validate localStorage entries, preserving valid data while dropping invalid ones.

* feat: update buyer and seller dialogs to handle whitespace and duplicate entries

- Enhanced BuyerDialog and SellerDialog to trim whitespace from name and other fields before saving.
- Implemented validation to reject whitespace-padded names that duplicate existing buyers or sellers, ensuring data integrity.
- Updated related tests to cover new scenarios for trimming and validation, improving overall user experience.
2026-03-27 20:15:48 +01:00
Vlad Sazonau
6238a02435
fix: update GitHub Actions script and fix buyer/seller dialog functionality (#199)
- Modified the update-github-actions script in package.json to include a minimum age parameter for better control over updates.
- Added a new test case to ensure the pre-fill switch in both Buyer and Seller dialogs resets to off after closing and reopening the dialog, improving user experience.
- Updated BuyerDialog and SellerDialog components to reset the form values correctly when the dialog is closed.
2026-03-25 18:44:13 +01:00
Vlad Sazonau
8047c8f0c4
feat: add cancel confirm dialog for seller/buyer dialog, update gh actions, added new script update-github-actions in package.json (#198)
* feat: enhance buyer and seller dialogs with unsaved changes confirmation and dropdown selection verification

- Implemented unsaved changes confirmation dialog in BuyerDialog and SellerDialog to prevent accidental data loss when closing the dialogs.
- Added checks to verify the selected buyer and seller in dropdowns across various test cases, ensuring accurate representation of selected entities.
- Updated tests to cover scenarios for confirming or dismissing unsaved changes, enhancing user experience and reliability of the dialogs.

* chore: update GitHub Actions workflows and package dependencies

- Updated actions/checkout, pnpm/action-setup, and actions/setup-node to their latest versions for improved stability and performance.
- added new knip github ci job
- Enhanced email notification action to the latest version for better functionality.
- Added new script update-github-actions in package.json to streamline workflow updates.
- Included actions-up dependency in package.json to facilitate GitHub Actions updates.
- Updated pnpm-lock.yaml to reflect new dependencies and versions.

* fix: update email sender format in GitHub Actions workflows

- Changed the 'from' field in email notifications to include a no-reply address for better clarity.
- Updated the jq command in multiple workflows to handle empty pull request URLs gracefully, preventing potential errors.

* refactor: enhance buyer and seller information sections with improved styling and content

* chore: add failure handling for GitHub Actions workflows + improve cancel confirm message in seller/buyer

- Implemented steps to mark workflows as failed for E2E tests, Knip, linting, type checking, and unit tests when respective outcomes are 'failure', improving error handling and workflow reliability.

* chore: add jsdoc to seller and buyer dialog

* fix: e2e test
2026-03-25 02:50:17 +01:00
Vlad Sazonau
fcda659229
feat: reworked seller/buyer sections, email visibility switch field, shared invoice indicator, improved Out-of-Date helper + minor things (#197)
* feat: add OutOfDateDatesHelper, Shared invoice badge, etc
* Introduced new markdown files for skills, covering typography, surfaces, animations, and performance to enhance interface design consistency.

* feat: add isSharedInvoice prop to InvoiceForm for shared invoice indication

* Introduced isSharedInvoice prop in InvoiceForm component to manage shared invoice state.
* Updated UI to display tooltips for shared seller and buyer information, enhancing user awareness of shared invoices.

* test: enhance invoice form tests with detailed validation for date fields and invoice number

* fix: update label styling in UI component for improved visual consistency

* Changed text class from text-balance to text-pretty in Label component to enhance design consistency across the application.

* feat: enhance email visibility functionality in buyer and seller dialogs

* Added email visibility toggle in BuyerDialog and SellerDialog components, allowing users to show or hide the email field in PDF outputs.
* Updated related tests to ensure proper functionality of the email visibility feature.
* Improved UI labels for required fields to enhance user experience and clarity.

* feat: implement email visibility toggle in PDF for invoice templates

* Added tests to verify email visibility toggles for both seller and buyer sections in the default and stripe invoice templates.
* Included functionality to capture screenshots of PDFs with emails hidden and visible based on user selections.
* Created new snapshot images for both email visibility states across different devices and browsers.

* formatting

* chore: update CI workflows to handle linting, type checking, and unit tests failures

* Added  to linting, type checking, and unit tests steps to prevent workflow failure on errors.
* Modified email notification conditions to trigger only on failure of respective steps, improving error handling and notification accuracy.

* refactor: update email visibility toggle tests to use role-based queries

* refactor: simplify buyer and seller information forms by removing tooltip components and enhancing locked state visibility

* Removed tooltip components from Buyer and Seller information sections, replacing them with a locked banner for better user guidance.
* Updated input fields to reflect required status and improved accessibility by removing unnecessary aria attributes.
* Enhanced the content of shared seller and buyer tooltips in the InvoiceForm for clarity.

* refactor: remove isSharedInvoice prop and associated tooltips from Invoice components

* Eliminated the isSharedInvoice prop from InvoiceForm and its usage in InvoiceClientPage.
* Simplified the InvoicePageHeader content for shared invoices by replacing detailed tooltips with a concise message.
* Streamlined the code for better readability and maintainability.

* refactor: update locked banner visibility and improve invoice management UI

* Enhanced visibility of locked banners in Buyer and Seller management forms, providing clearer guidance for modifying details.
* Updated tests to verify the visibility and content of locked banners based on buyer and seller selection states.
* Simplified the Invoice components by removing unnecessary props and improving layout consistency across the application.

* refactor: improve error message layout and content in error handling components

* Updated the Error component to separate error messages for better clarity and user guidance.
* Enhanced the styling of the ErrorMessage component for improved readability and layout consistency.
2026-03-23 22:19:23 +01:00
VladSez
a15ae484c8 docs: update README with new features and release notes for v1.0.2 2026-03-12 22:29:57 +01:00
Vlad Sazonau
0b968a3ac5
feat: enhance buyer and seller management with new functionality and improved toast notifications (#195)
* Added tests for adding buyers and sellers without applying them to the current invoice, ensuring proper handling of user actions.
* Implemented toast notifications for various actions, including adding, restoring, and deleting buyers and sellers, with mobile-friendly positioning.
* Updated existing toast messages to reflect accurate statuses for added buyers and sellers, enhancing user feedback.
* Refactored components to pass mobile state for better toast management across different devices.
2026-03-12 21:59:26 +01:00
Vlad Sazonau
9fbb5873a8
refactor: streamline toast management in InvoiceForm component (#194)
* Removed the useRef for managing deletion state of invoice items.
* Updated toast dismissal logic to enhance user experience by closing specific toasts after form changes.
* Improved overall clarity and organization of the invoice form component.
2026-03-12 16:51:55 +01:00
Vlad Sazonau
a6b4463116
refactor: improve layout in BuyerDialog and SellerDialog components (#193)
* Updated layout by adding rounded borders and padding to the notes and account number sections for better organization.
* Enhanced accessibility by improving label visibility and structure in the notes and account number fields.
* Streamlined the visibility toggle for notes and account number fields, ensuring consistent user experience across dialogs.
2026-03-12 02:48:00 +01:00
Vlad Sazonau
46a7fc83e2
refactor: update layout and improve accessibility in invoice-related components (#192)
* Simplified layout in GeneralInformation, BuyerDialog, and SellerDialog components by removing unnecessary animation classes and adjusting flex properties for better organization.
* Enhanced visibility of PDF field labels in BuyerDialog and SellerDialog by providing more descriptive text.
* Updated button variant in BuyerManagement and SellerManagement components for consistency in styling.
2026-03-12 00:39:13 +01:00
Vlad Sazonau
ebdb888d2b
feat: auto-scroll form on mobile when switching between tabs, fix loading placeholder (#191)
* chore: update package version and add new agent skills for changelog maintenance and frontend design

* Bump package version from 1.0.1 to 1.0.2 in package.json.
* Introduce new skills:
  - changelog-maintenance for managing software release documentation.
  - frontend-design for creating high-quality frontend interfaces.
* Add detailed documentation for each skill, including usage instructions and best practices.

* feat: add MobileFormScrollContainer for preserving scroll position in mobile invoice forms

* Introduced MobileFormScrollContainer component to maintain and restore scroll position for mobile forms, enhancing user experience during navigation.
* Updated InvoiceClientPage to utilize MobileFormScrollContainer, replacing the previous div wrapper for the invoice form.

* feat: adjust layout in invoice form and loading components

* Changed the lint-staged command in package.json to use pnpm for better consistency.
* Adjusted margin styles in the invoice form component to improve layout.
* Enhanced the loading component by refining the structure and adding placeholders for better user experience during loading states.

* refactor: update visibility checks for header links in About page tests

* Replaced text-based visibility checks for the 'EasyInvoicePDF' link with role-based checks using getByRole for improved accessibility and consistency in e2e tests across different languages.
2026-03-11 02:57:49 +01:00
Vlad Sazonau
850a00ba07
fix: update README logo and refactor invoice form for Stripe payment link (#190)
* Replaced the logo in README.md with a new image for better clarity.
* Moved the Stripe payment link input section within the invoice form to improve organization and user experience.
2026-03-10 00:48:42 +01:00
Vlad Sazonau
0a0e42d666
feat: upload logo for default invoice templates, improve add invoice btn styles, add more e2e tests (#189)
* feat: enhance default invoice template with logo upload functionality and improve PDF generation tests

* Added a test to verify PDF generation with a logo in the default invoice template, ensuring the logo persists across template switches.
* Updated the invoice form to allow logo uploads for all templates, enhancing user experience.
* Improved e2e tests with new snapshots for PDF outputs with logos in both default and Stripe templates.
* Refactored related components to streamline logo handling and visibility checks in the invoice form.

* refactor: update button styles and enhance invoice item addition with tooltip

* Changed button text color from slate-50 to white for better visibility in the invoice PDF download link component.
* Wrapped the Add invoice item button in a CustomTooltip to provide contextual help, improving user experience when adding new items to the invoice.
* Adjusted button variant and class names for consistency and improved styling across components.

* chore: update easy-invoice logo SVG for improved design consistency

* chore: update logo in README to SVG format for improved quality

* chore: update logo in README to SVG format for improved quality
2026-03-09 22:55:16 +01:00
Vlad Sazonau
cb1045c75b
feat: expand TODO list with discounts feature and improve e2e workflow (#186)
* Added detailed requirements for implementing a per-item discount feature in the TODO list, including design considerations and examples.
* Updated e2e workflow to ensure concurrency management, allowing only one Playwright test workflow to run per branch or pull request at a time.
* Simplified Playwright test execution steps by removing unnecessary duration calculations, enhancing clarity and efficiency.
* Improved test reliability by adjusting URL handling in e2e tests.
2026-03-09 00:05:50 +01:00
Vlad Sazonau
5ffef43756
refactor: currency searchable combobox (#183)
* refactor: remove redundant toast dismissal in invoice form PDF regeneration logic

* test: enhance invoice item deletion confirmation flow in e2e tests

* Updated e2e tests to verify the visibility of the delete confirmation dialog and its cancel flow.
* Improved checks for item presence after cancellation and confirmed deletion scenarios.
* Added data-testid to the confirmation dialog for better test targeting and reliability.

* feat: enhance invoice item deletion handling in InvoiceForm

* Introduced a ref to manage the deletion state of invoice items, preventing toast notifications from closing during item removal.
* Updated the PDF regeneration logic to conditionally dismiss toasts based on the deletion state, improving user experience during invoice updates.

* feat: implement currency combobox for improved currency selection in invoice form

* Replaced the native currency select with a searchable combobox component, enhancing user experience.
* Updated related tests to verify the functionality of the new combobox, including currency selection and visibility of options.
* Organized currencies into groups for better accessibility and usability in the combobox.

* test: enhance currency selection validation in invoice form tests

* Updated e2e tests for the Invoice Generator and Default Invoice Template to verify that the selected currency is correctly saved in the hidden input field.
* Added checks to ensure the currency value is accurately reflected after selection in both the main and mobile currency comboboxes.
* Marked test suites as focused to streamline testing during development.

* feat: enhance QR code generation and mobile handling in invoice components

* Updated QR code generation logic to dynamically adjust error correction level and pixel width based on input length, improving scannability.
* Added  prop to various components to optimize UI behavior for mobile devices, including toast message positioning.
* Increased timeout for expect assertions in Playwright configuration from 25,000ms to 35,000ms for improved test reliability.
* Updated snapshot images for invoice templates to reflect recent changes in QR code rendering.

* feat: add validation for currency groups in schema

* Implemented checks to ensure all supported currencies are unique and correctly grouped.
* Added error handling for duplicate currencies within groups and for missing currencies in the supported list.
* Enhanced overall currency validation logic to improve data integrity in the application.
2026-03-08 17:36:02 +01:00
Vlad Sazonau
ffeab9880a
refactor: rename item removal handler and enhance user feedback in invoice form (#182)
* Renamed the item removal handler from  to  for clarity.
* Added a success toast notification upon successful removal of an invoice item to improve user experience.
* Updated related components and tests to reflect the new handler name and ensure consistent functionality.
2026-03-04 02:22:53 +01:00
Vlad Sazonau
b407d39731
fix: fix i18n issue with generating pdf via api + other improvements (#181)
* fix: fix i18n issue with generating pdf via api + other improvements

* Updated e2e tests to enhance navigation reliability by simplifying URL wait strategy.
* Added a new test to verify permanent redirect behavior for invoice generation.
* Adjusted default visibility settings for unit fields in the general information component to align with Stripe template behavior.
* Enhanced error logging in the generate-invoice API route for better debugging and clarity.

* chore: update Node.js engine requirement in package.json from >=20.0.0 to >=22.0.0

* chore: remove Node.js engine requirement from package.json

* chore: remove branch and commit information from failure notifications in workflow files

* Updated lint.yml, type-check.yml, and unit-tests.yml to remove branch and commit details from failure notification messages, streamlining the output for better clarity.

* feat: add Polish VAT label for buyer and seller in invoice data

* Updated the invoice data structure to include the Polish-specific VAT label  for both buyer and seller fields, ensuring compliance with local invoicing standards.
2026-03-03 22:58:45 +01:00
Vlad Sazonau
88860d0e40
fix: delete invoice item flow (#180)
* chore: fixed invoice item deletion flow

* Removed deprecated dependency @microlink/react-json-view from package.json.
* Upgraded knip dependency from version 5.55.1 to 5.85.0 for better performance.
* Increased timeout for expect assertions in Playwright configuration from 10,000ms to 15,000ms for improved test reliability.
* Enhanced invoice item deletion process by implementing a confirmation dialog, ensuring user clarity before item removal.

* fix: enhance invoice item deletion confirmation and update e2e tests for accuracy

* Improved the confirmation dialog for deleting invoice items to display the correct item name.
* Updated e2e tests to ensure accurate calculations of totals for multiple invoice items, including adjustments for quantity, price, and VAT rates.
* Enhanced visibility checks for calculated values in the invoice form tests to ensure reliability.

* chore: update dependencies and refactor code for improved clarity

* Added shadcn to the ignoreDependencies list in knip configuration.
* Removed deprecated @react-email/components and @react-email/tailwind from package.json and pnpm-lock.yaml.
* Refactored several exported functions to internal functions in various components for better encapsulation.
* Deleted unused confirm-subscription email component to streamline the codebase.
* Updated rate-limit.ts by removing unused email limiter logic and related types.
2026-03-02 01:47:41 +01:00
Vlad Sazonau
a4f3a34a53
docs: add Star History section to README and improve e2e test navigation strategy (#179)
* docs: add Star History section to README and improve e2e test navigation strategy

* Added a new Star History section to README.md for enhanced visibility of repository popularity.
* Updated e2e tests to improve navigation reliability by using Promise.all for URL assertions, reducing flakiness in tests.

* refactor: update tax-related field names and improve test messages for clarity

* Changed field names from  to  and  to  across various test files and components for consistency.
* Updated helper messages in tests to enhance clarity and user guidance.
* Adjusted timeout settings in Playwright configuration to improve navigation reliability.

* fix: e2e test

* refactor: update button labels and enhance timeout settings

* Changed button label from Generate a link to invoice to Generate invoice link across multiple test files and components for consistency.
* Adjusted timeout settings in Playwright configuration to improve test reliability, increasing the timeout for expect assertions based on the environment.
2026-03-01 21:17:29 +01:00
Vlad Sazonau
77f9ae886c
chore: set timezone environment variable in e2e workflow to fix timezone issue in node js server env (#178)
* chore: add timezone logging to Playwright config and set environment variable in e2e workflow

* Added a console log in Playwright configuration to display the current timezone being used.
* Configured the e2e GitHub Actions workflow to set the timezone to Europe/Warsaw for consistent date handling across local and CI environments.

* chore: add back timezoneId in playwright.config
2026-02-27 01:16:39 +01:00
Vlad Sazonau
de6d25da71
chore: adjust Playwright configuration and e2e test settings for stability (#177)
* chore: adjust Playwright configuration and e2e test settings for stability

* Changed the number of workers in Playwright configuration for CI from 2 to 1 to enhance test stability.
* Removed serial mode configuration from Default and Stripe invoice template tests, allowing for parallel execution.
* Deleted serial mode configuration comments from relevant test files to streamline code clarity.

* chore: refine Playwright configuration timeouts for improved test performance

* Adjusted timeout settings for expect assertions and test execution based on local and CI environments.
* Introduced navigationTimeout and actionTimeout settings to enhance control over page interactions and navigation delays.
2026-02-26 23:52:19 +01:00
Vlad Sazonau
616294b564
feat: update Playwright configuration and enhance e2e tests (#176)
* chore: update Playwright configuration and enhance README for clarity

* Increased the number of workers in Playwright configuration for CI from 1 to 2 to improve test execution efficiency.
* Adjusted the timeout for dismissing toast notifications in the AppPageClient from 1000ms to 1500ms for better user experience.
* Reorganized the Star History section in README.md for improved visibility and engagement.

* feat: enhance toast notifications with unique IDs and conditional display logic

* Added unique IDs for success and error toast notifications in BuyerManagement, SellerManagement, and SellerDialog components for better tracking.
* Implemented conditional logic to show the CTA toast only in non-CI environments, improving user experience during development and testing.
* Updated error toast IDs for consistency across components.

* chore: configure e2e tests to run in serial mode for improved stability

* Updated Default and Stripe invoice template tests to run in serial mode, preventing race conditions and ensuring consistent test execution.
* Added configuration comments to clarify the importance of running tests in serial mode for enhanced stability.
2026-02-26 21:33:12 +01:00
Vlad Sazonau
2c2a684d83
test: update navigation wait strategy in e2e tests for improved reliability (#175)
* test: update navigation wait strategy in e2e tests for improved reliability

* Modified page.goto calls in e2e tests to include { waitUntil: commit } for better synchronization during navigation.
* Ensured consistent handling of URL assertions across various test cases, enhancing overall test stability.

* docs: add Star History section to README for enhanced visibility of repository popularity

* feat:set default timezone to Europe/Warsaw in Playwright config for consistent date handling across environments + enhance e2e workflow to include duration output for better performance tracking

* Added duration output for Playwright tests to the GitHub Actions workflow, allowing for better monitoring of test execution times.
* Updated test result messages to indicate slow performance based on duration thresholds, improving visibility into test efficiency.

* fix: enhance e2e tests for URL assertions and toast visibility

* Removed redundant duration output in GitHub Actions workflow for Playwright tests.
* Updated URL assertions in the Generate Invoice Link and Stripe Invoice Sharing Logic tests for improved reliability.
* Added visibility checks for toast notifications after generating invoice links to ensure proper user feedback.

* fix: improve toast messages for invoice sharing and enhance user experience

* Updated success toast messages for generating and sharing invoice links to provide clearer user guidance.
* Added a timeout for dismissing toasts to improve user feedback and prevent clutter.
* Enhanced the clipboard copy toast message for better clarity on user actions.
2026-02-26 03:15:04 +01:00
Vlad Sazonau
c81eafd34b
test: enhance URL verification in e2e tests for various pages (#174)
* Added URL assertions to ensure correct navigation after page loads in the About, Changelog, Invoice Generator, and Not Found pages.
* Updated tests to verify that the expected URLs are displayed after navigating to specific routes, improving test reliability and coverage.
* Cleaned up redundant code in invoice form tests and ensured consistent URL checks across all relevant test cases.
2026-02-25 15:21:34 +01:00
Vlad Sazonau
0192d62528
improvement: update QR code images and enhance invoice template visuals (#172)
* improvement: update QR code images and enhance invoice template visuals

* Updated QR code images for both default and Stripe invoice templates to ensure visual consistency across different devices.
* Increased QR code size in the invoice template for better visibility.
* Adjusted QR code generation parameters to improve rendering quality.
* Modified text color in invoice components for improved readability.

* feat: enhance error handling in GitHub stars fetching

* Integrated Sentry for improved error tracking in the fetchGithubStars function.
* Updated error logging to provide more context on failures when fetching GitHub stars.
* Minor adjustment to QR code generation comments for clarity.

* feat: enhance error handling in invoice sharing logic

* Updated error toast message to provide clearer user guidance when sharing invoices fails.
* Integrated Sentry for improved error tracking, capturing exceptions during the sharing process.
2026-02-25 03:33:22 +01:00
Vlad Sazonau
6192cca49d
feat: add QR code functionality to invoice templates and other improvements + bug fixes (#165)
* feat: add QR code functionality to invoice templates and enhance user experience

* Introduced QR code generation for invoices, allowing users to include a QR code with customizable descriptions.
* Updated invoice templates to display QR codes in both default and Stripe formats.
* Enhanced form components to support QR code data input and visibility toggles.
* Added utility functions for generating QR code data URLs.
* Updated tests and snapshots to cover new QR code features and ensure visual consistency across templates.
* Introduced a Code of Conduct document to promote a respectful community environment.

* feat: enhance error handling and metadata management in invoice application

* Updated error handling to reset invoice metadata to default upon error occurrence.
* Refactored invoice client page to utilize a constant for default mobile tab value.
* Improved metadata structure by including last visited mobile tab in the default metadata.
* Adjusted schema to allow optional item name field for better flexibility in invoice items.

* fix: downgrade react-pdf version and update mobile tab handling

* Downgraded react-pdf from version 10.1.0 to 9.2.1 for compatibility.
* Updated mobile tab handling to utilize the last visited tab from app metadata.
* Refactored invoice client page to improve metadata management and ensure proper tab state persistence.

* fix: remove redundant validation message for item name in invoice form

* chore: update TODO list and comment out scroll to top effect in AppPageClient

* Added a new issue link to the TODO.md for tracking.
* Commented out the scroll to top effect in page.client.tsx for potential future use.

* refactor: streamline viewport settings and restore scroll to top effect in AppPageClient

* Simplified viewport configuration by removing unnecessary properties.
* Restored the scroll to top effect in AppPageClient for improved user experience on initial render.

* revert viewport

* fix: prevent jumping on iOS when typing in textarea component

* Added resize-none class to the textarea to improve user experience on iOS devices by preventing layout shifts while typing.

* feat: reworked app logic, improved multi-page pdf layout, add/update e2e tests, improvements and bug fixes

* Enhanced README.md with new features, including multi-page PDF support, QR code functionality, and live preview demos.
* Added demo GIFs to showcase new features and improve user understanding.
* Updated key features section for clarity and added a news & updates section for version tracking.

* feat: add debounced error handling in invoice form component

* Introduced a debounced callback for showing form errors to improve user experience by preventing rapid toast notifications.
* Updated validation logic to utilize the new debounced error handling mechanism.

* chore: update e2e snapshots and improved form errors toast

* fix: improve PDF viewer and QR code layout in invoice templates

* Added state management for page numbers in the mobile PDF viewer to handle multi-page documents.
* Adjusted QR code positioning and size to prevent overlap with the fixed footer.
* Updated padding in the Stripe template styles to resolve overlapping issues with the footer.
* Updated TODO.md with additional context on preventing layout issues in PDF rendering.

* feat: enhance invoice sharing logic with validation error handling

* Added a new test to verify error toast visibility when the invoice form has validation errors.
* Implemented state management for form validation errors in the AppPageClient.
* Updated the InvoiceForm component to manage error states and trigger appropriate toasts for user feedback.
* Ensured that the share button behavior reflects the form's validation state, improving user experience.

* feat: enhance invoice template with authorized person fields

* Added fields for Person Authorized to Receive and Person Authorized to Issue in the default invoice template.
* Implemented visibility toggles for these fields in the invoice form.
* Updated tests to verify the correct behavior of these fields in both default and Stripe invoice templates.
* Enhanced PDF rendering to include names of authorized persons when applicable.

* feat: implement cooldown for CTA toasts and update UI elements

* Introduced a 5-minute cooldown for showing CTA toasts to enhance user experience.
* Updated toast management logic in various components to respect the new cooldown.
* Adjusted text color in the InvoiceClientPage for better visibility.
* Refined tooltip content in the invoice form to clarify functionality.
* Updated TODO.md to reflect changes in toast behavior.

* feat: add unit column switch to stripe invoice template

* Changed toggle labels from Show/hide to Show for various fields in the invoice forms and dialogs to enhance clarity.
* Updated related test cases to reflect the new label changes across buyer, seller, and invoice templates.
* Ensured consistency in user interface elements for better user experience.

* chore: adjust text size

* feat: update README and improve CTA toast logic

* Replaced the EasyInvoicePDF logo with a new design and adjusted its size for better visibility.
* Enhanced the call-to-action (CTA) toast functionality by refining the logic for showing toasts based on user interactions and session activity.
* Updated text in the invoice form to clarify user actions and improve overall user experience.
* Added a new logo image to the project assets.

* update readme

* refactor: improved mobile PDF viewer by importing the PDF worker directl, improve CTA toast logic, update readme

* Renamed sections in README for clarity, including Live Preview to Invoice PDF Live Preview and Instant Download to Instant PDF Download.
* Adjusted text in CTA toasts for better engagement.
* Updated minimum time on page and interactions required for showing CTA toasts to enhance user experience.
* Improved mobile PDF viewer by importing the PDF worker directly and addressing related issues in TODO.md.

* fix: adjust CTA toast display timing for improved user experience

* Updated the timeout for showing the CTA toast to 6 seconds after the invoice link notification, enhancing the visibility and timing of user prompts.

* feat: Improved handling of invoice sharing logic to differentiate between mobile and desktop sharing methods, enhancing user experience.

* Added a new command in package.json for running cloudflared tunnel.
* Updated tests to verify the visibility of the share invoice link description toast.
* Refined toast notifications in the AppPageClient to include new IDs for better tracking and user feedback.
* Improved handling of invoice sharing logic to differentiate between mobile and desktop sharing methods, enhancing user experience.

* feat: enhance toast notifications with unique IDs for better ux

* fix: adjust invoice item limit in tests and update translations for total excluding tax

* Reduced the maximum number of invoice items in the test from 20 to 15 to better align with URL limits.
* Updated translations in the PDF i18n schema and related files to include total excluding tax in multiple languages.
* Modified the invoice PDF template to display the total excluding tax using localized text.
* fix qr code race condition

* fix: update URL variable names and enhance sharing logic for better clarity

* Renamed variables for generated URLs to improve code readability.
* Updated sharing logic to ensure consistent use of the new variable names across mobile and desktop sharing methods.
* Enhanced toast notifications to dismiss previous messages and track share events more effectively.

* fix: update tax label helper message for clarity in invoice items

* readme upd

* fix: adjust idle time and minimum interactions for CTA toast display

* Increased idle time from 3 seconds to 5 seconds to improve user engagement.
* Updated minimum interactions required for showing the CTA toast from 2 to 3 to enhance user experience.

* feat: implement cooldown logic for CTA toast display

* Added functionality to track the last shown timestamp of the CTA toast using localStorage.
* Introduced a 7-day cooldown period to prevent the toast from being shown multiple times within a week.
* Updated context to reflect whether the CTA toast was shown recently, enhancing user experience.

* chore: update dependencies and add GitHub workflows for linting and type checking

* Updated package versions in package.json and pnpm-lock.yaml for better compatibility and performance.
* Added GitHub Actions workflows for ESLint and TypeScript type checking to ensure code quality and consistency.
* Enhanced buyer and seller management components with improved state management and type safety.

* feat: enhance invoice sharing and download tracking

* Added functionality to track the number of times invoices are shared via link and downloaded as PDF.
* Updated the app metadata structure to include  and .
* Implemented logic to increment these counts upon sharing and downloading invoices, improving analytics and user engagement.

* refactor: update README and TODO for clarity and consistency
2026-02-24 19:53:24 +01:00
VladSez
b88ae5309c chore: update package version to 1.0.1 in package.json 2026-01-12 01:04:23 +01:00
Vlad Sazonau
66cc63bb8b
Change demo video link in README.md
Updated demo video link in README.
2026-01-11 22:25:43 +01:00