Attach files to quotes and contracts, preview PDFs and images in a popup, and page through your lists — plus security hardening.
- File attachments for quotes & contracts. Upload files (allowed types and size cap set in Settings); they carry over to the contract automatically when a quote is accepted. Clients download them from the quote/contract page, and the links are embedded in the PDFs.
- In-browser file viewer. PDFs and images open in a lightbox preview — no download needed.
- Pagination on the Quotes, Contracts and Clients lists, with an on-page Rows per page control.
- Responsive admin layout and a Sign out button in the sidebar.
- "Commercial Summary" → "Investment Summary" on contract documents.
Fixed: attachment settings (allowed types / max size) now persist; dashboard and quotes layouts no longer overflow at narrow widths.
Security: the dev seeder is now CLI-only (no web trigger), and outbound webhooks use wp_safe_remote_post (SSRF hardening).
New installs start with empty libraries instead of starter data, with the original set kept as an importable snapshot.
- Fresh installs no longer seed the starter line-item and category libraries — both start empty on activation. The original starter set is preserved separately as an importable snapshot for optional loading.
Fixed: starter data could reappear if a library was emptied and a later database upgrade ran; with seeding removed, this no longer happens.