Changelog
[0.14.3] - 2025-12-10
Fixed
- Performance Optimization Across All Pages: Eliminated request loops and excessive API calls throughout the entire application, resulting in significantly faster page loads and reduced server load:
- User-Facing Pages: Fixed infinite request loops in "My Holds" and "My EOIs" pages by properly memoizing data fetching functions
- Admin Pages: Optimized all admin pages (Projects, Regions, Companies, Allocations, Holds, Settings, Project Types, Sale Statuses) to prevent unnecessary re-renders and API calls
- EOI Eligibility Optimization: Pre-computed EOI eligibility server-side in the "My Holds" API route, eliminating individual API calls for each hold when checking if users can submit expressions of interest
- Header Component: Optimized company logo fetching in the header to prevent repeated requests on every page load
Changed
- Code Quality: Applied consistent
useCallback memoization pattern across all pages using usePersistentData hook, ensuring stable function references and preventing unnecessary re-renders
[0.14.2] - 2025-12-10
Fixed
- Critical Security Update: Updated Next.js framework to address security vulnerability CVE-2025-66478. This update ensures the application is protected against potential remote code execution risks. The update also includes React and React-DOM version updates for compatibility and additional security improvements. All users should update immediately to ensure their deployments are secure.
[0.14.1] - 2025-12-10
Fixed
- Excessive API Requests: Fixed performance issues that were causing hundreds of unnecessary API calls when loading project pages. The application now makes significantly fewer requests, resulting in faster page loads and reduced server load:
- Eliminated N+1 Query Problem: EOI eligibility checks are now pre-computed server-side and included in the main API response, eliminating individual API calls for each dwelling or hold
- Fixed Request Loops: Resolved infinite request loops in the user stats system that were causing repeated background API calls
- Optimized Caching Strategy: Improved caching configuration to allow browser caching for static project data (project info, galleries, region info) while keeping live data (stock list, holds, EOIs) always fresh
Changed
- Data Caching Documentation: Updated development guidelines to include best practices for preventing infinite request loops and N+1 query problems, ensuring future development follows optimal patterns
[0.14.0] - 2025-12-10
Added
- Comprehensive Loading States: Added visual loading feedback across the entire site to improve user experience during navigation and interactions. Users now see clear indicators when actions are processing, eliminating confusion during delays:
- Navigation Loading States: All navigation links (header menu, project cards, table actions, map markers) now show loading spinners and change the cursor to "wait" during navigation, providing immediate visual feedback that something is happening
- Modal Loading States: Confirmation modals and action buttons now display loading spinners during async operations, preventing multiple clicks and clearly indicating when actions are processing
- Project Page Loading States: Project detail pages now show loading states for PDF generation, extension requests, and hold releases, making it clear when these operations are in progress
- Gallery Selection Loading: The gallery selection modal now shows loading feedback when attaching galleries to projects
Changed
- Navigation Component: Created a new reusable NavigationLink component that automatically handles loading states for all navigation throughout the site, ensuring consistent user experience
- Confirmation Modal Enhancement: Enhanced confirmation modals to support async operations with built-in loading states, making it easier to provide feedback during longer operations
- Project Navigation: Improved project navigation from the projects list page - clicking project cards, table view buttons, or map markers now shows immediate loading feedback before navigation occurs
[0.13.2] - 2025-12-04
Fixed
- App Config Settings Page Input Focus - Fixed a critical issue where typing in text input fields caused focus loss after every keystroke, making it impossible to enter values continuously. Users can now type normally in any configuration field without interruption.
Changed
- App Config Settings Interface - Completely redesigned the settings page for better usability and reliability:
- All configuration values are now directly editable without needing to click an "Edit" button first
- Replaced individual save/cancel buttons on each row with a single "Save All Changes" button at the bottom that processes all modifications in one batch operation
- Added "Reset Changes" button to quickly discard all unsaved modifications and return to original values
- Added visual feedback indicators: "Modified" badges appear on changed fields, modified rows are highlighted with a subtle yellow background, and an "Unsaved Changes" badge displays in the page header when there are pending modifications
- Settings are now saved in bulk, improving efficiency when updating multiple values at once
[0.13.1] - 2025-12-03
Added
- Loading States for Navigation: Added visual feedback when clicking Hold or EOI buttons. The buttons now show a loading spinner and the cursor changes to "wait" during navigation, providing clear indication that something is happening during the brief pause before the form loads. This improves the user experience by eliminating confusion during navigation delays.
- Automatic Data Refresh: Project detail pages now automatically refresh data when returning from Hold or EOI submissions. Users no longer need to manually refresh the page to see their newly submitted holds or EOIs - the page updates automatically, making the workflow smoother and more intuitive.
Changed
- EOI Status Badge Colors: Updated EOI status badges to use color-coded indicators that clearly distinguish between different statuses. Pending EOIs now display in orange/yellow (warning), approved EOIs show in green (success), rejected EOIs appear in red (error), and cancelled EOIs display in gray (ghost). This makes it easier to quickly identify the status of EOIs at a glance.
- EOI Form Button Layout: Improved the EOI form button layout by swapping the positions (Submit EOI now appears first, Cancel second) and changing buttons from full-width (50% each) to regular size. This creates a more intuitive button hierarchy and better visual balance.
- Form Loading Performance: Optimized the EOI and Hold submission forms to fetch project and dwelling data in parallel instead of sequentially. This reduces form loading time by approximately 50%, making the forms feel more responsive.
Fixed
- Blank EOIs on Project Pages: Fixed an issue where blank EOI entries were appearing on project detail pages. The API now properly filters EOIs to only show those belonging to dwellings in the current project, preventing confusion and ensuring data accuracy.
- Auto-save Alert Clutter: Removed the auto-save alert message from the EOI form while keeping the auto-save feature functional. The form still automatically saves your progress in the background, but without the visual notification that was adding unnecessary clutter to the form interface.
[0.13.0] - 2025-12-02
Added
- My Holds Page: Added a new "My Holds" page accessible from the main navigation menu that displays all active holds across all projects in a single view. The page shows project name, dwelling details (number, beds, baths, cars, price), time to expiry, status, and actions (release, request extension, submit EOI). This provides users with a centralized location to manage all their holds without navigating to individual project pages.
- My EOIs Page: Added a new "My EOIs" page accessible from the main navigation menu that displays all active Expressions of Interest across all projects. The page shows project name, lot number, street, purchaser name, price, status, submission date, and a link to view full EOI details. This gives users a comprehensive overview of all their EOI submissions in one place.
- Dynamic Navigation Menu: The main navigation menu now dynamically shows "My Holds" and "My EOIs" links only when the user has active holds or EOIs. This keeps the navigation clean and relevant, showing these options only when they're useful to the user.
- User Stats Hook: Created a new
useUserStats hook that efficiently checks whether users have active holds or EOIs, enabling the dynamic menu display and ensuring optimal performance with smart caching.
Changed
- Menu Item Visibility: Navigation menu items for "My Holds" and "My EOIs" now appear automatically when users create their first hold or EOI, and disappear when they no longer have any active items. The menu updates immediately after creating, releasing, or submitting items thanks to intelligent cache invalidation.
- Cache Performance: Optimized cache timing for user stats to ensure menu updates are responsive (30-second stale time) while maintaining efficient API usage.
Fixed
- Loading State Flash: Fixed an issue where the "You don't have any active EOIs" message would briefly flash before data loaded. The pages now properly show loading states until data is confirmed to be empty, providing a smoother user experience.
[0.12.1] - 2025-12-02
Added
- Project Overview Read More Functionality: Added "Read more / Show less" expandable text functionality to the Project Overview section on project detail pages. When the project description is long, it now collapses by default with a "Read more..." link, allowing users to expand to view the full content. This provides a cleaner initial view while keeping all information accessible.
- Dynamic Height Matching: Implemented dynamic height matching for Project Overview and Region Info text cards. When collapsed, the text description cards now automatically match the height of their adjacent images, creating a visually balanced and professional layout. The height adjusts dynamically based on the actual image dimensions, ensuring perfect alignment regardless of image size.
Changed
- Read More Button Alignment: Improved the visual alignment of "Read more" buttons in both Project Overview and Region Info sections. The buttons are now left-aligned for better readability and consistency with the text content above them.
- Region Info Height Matching: Enhanced the Region Info section to use dynamic height matching instead of fixed heights. The text card now automatically adjusts to match the featured image height when collapsed, providing a more polished and consistent visual experience across different projects and regions.
[0.12.0] - 2025-12-01
Added
- EOI Approval Workflow: Implemented a comprehensive approval workflow for Expressions of Interest (EOIs). EOIs are now submitted with a "Pending" status and require ARG staff verification before being processed. This ensures quality control and prevents invalid submissions from automatically creating HubSpot deals.
- Admin EOI Management: Added a new admin interface at
/admin/eoi where staff can view, edit, approve, and reject EOI submissions. The interface includes filtering, sorting, and detailed views for each EOI, making it easy to manage the approval process.
- My EOIs Section: Added a "My EOIs" section on project detail pages that displays all active EOIs submitted by the current user for that project. The section appears in the navigation sidebar and provides quick access to view EOI status and details, similar to the existing "My Holds" section.
- EOI Status System: Introduced a new
eoi_status table with standardized status values (Pending, Approved, Rejected, Cancelled) replacing hardcoded enum values. This provides better data integrity and makes it easier to track EOI lifecycle.
- EOI Approval Tracking: Added tracking for which admin user approved or rejected each EOI, providing an audit trail for accountability and transparency.
Changed
- EOI Submission Process: Modified the EOI submission workflow so that EOIs are no longer immediately created in HubSpot. Instead, they are saved with a "Pending" status and require admin approval before HubSpot deal creation. This prevents invalid or incomplete submissions from cluttering the CRM.
- EOI Notification Emails: Updated EOI notification emails to reflect the new approval workflow. Staff receive "Action Required" emails directing them to review pending EOIs, while users receive confirmation emails indicating their EOI is pending approval and will be notified once reviewed.
- HubSpot Integration: Enhanced HubSpot deal creation to use environment-aware portal IDs (sandbox for development/staging, production for production). HubSpot deal URLs are now correctly constructed based on the deployment environment, ensuring links work properly in all environments.
- EOI Form Styling: Improved the visual design of the EOI form with better section spacing, horizontal dividers between sections, and properly aligned icons and text headings. The form now has a cleaner, more professional appearance that's easier to read and navigate.
Fixed
- EOI Form Data Population: Fixed an issue where EOI form fields were not being populated when viewing existing EOIs in the admin interface. The form now correctly displays all EOI data including purchaser details, contract terms, solicitor information, and bank details.
- HubSpot Deal Link: Fixed the HubSpot deal link on EOI detail pages that was showing placeholder text. The link now correctly uses the appropriate HubSpot portal ID based on the environment and works properly in both development and production.
- EOI API Authentication: Updated the project EOIs API endpoint to use authenticated user IDs directly instead of requiring query parameters, improving security and aligning with the pattern used by other similar endpoints like "My Holds".
[0.11.5] - 2025-12-01
Fixed
- DataGrid Sticky Columns: Fixed z-index layering issues where sticky table columns were overlapping page navigation headers when scrolling. Table headers now properly stay below navigation menus, and sticky columns maintain correct visual hierarchy throughout the scrolling experience.
- Custom Actions Column Support: Added automatic sticky positioning support for custom actions columns in DataGrids. Columns with
id: 'actions' (like Hold and EOI buttons on project pages) now automatically stick to the right side when scrolling horizontally, matching the behavior of built-in action columns.
[0.11.4] - 2025-12-01
Fixed
- Browser Console Warnings: Removed redundant preload links for logo images that were causing browser warnings. Images now load efficiently using Next.js's built-in priority handling, resulting in a cleaner console output without affecting performance.
- Form Section Alignment: Fixed alignment issues in the Expression of Interest (EOI) form where section headings with icons were misaligned due to default browser margins. All form section headings (Property Details, Purchaser Details, Contract Details, Solicitor Details, and Bank Details) now align perfectly with their icons.
- Production Build Errors: Fixed multiple TypeScript errors that were preventing successful production builds, including incorrect error type constants, missing type annotations, and unused type directives. The application now builds successfully for deployment.
[0.11.3] - 2025-11-30
Changed
- Admin Dashboard Cleanup: Removed the placeholder "Dashboard Highlights Coming Soon" card and subtitle from the admin dashboard page, creating a cleaner and more focused interface that displays only active user activity information.
Fixed
- Code Quality: Resolved all linting warnings for unused variables across multiple files, improving code maintainability and ensuring strict linting standards are met.
- Test Compatibility: Updated unit tests to match the current session cache configuration (30-minute stale time), ensuring all tests pass reliably.
[0.11.2] - 2025-11-27
Changed
- Project Detail Page Performance: Significantly improved the loading speed of project detail pages by implementing intelligent caching for frequently accessed data. The page now caches user holds, expressions of interest (EOIs), points of interest (POIs), and geocoding results, eliminating duplicate API calls when navigating between pages. This means faster page loads and a smoother browsing experience when viewing multiple projects.
- EOI Button Optimization: Optimized the Expression of Interest (EOI) button component to use pre-computed eligibility data from the project API instead of making separate API calls for each dwelling. This eliminates 6+ unnecessary API calls per project page, resulting in faster page loads and reduced server load.
Fixed
- Duplicate API Calls: Fixed an issue where project detail pages were making duplicate API calls for holds, EOIs, and POIs on every page load. These are now cached and reused across page navigations, reducing unnecessary network traffic and improving performance.
[0.11.1] - 2025-11-27
Added
- Session-Level Caching: Added a new cache configuration specifically for session-stable data (user profiles, company information) that doesn't change during a user's session. This ensures header logos and user data load instantly from cache, eliminating the delay where the header logo was always the last element to appear on the page.
Changed
- Header Performance: Optimized the header component to reduce redundant API calls. The header now fetches user profile data only once and shares it with child components, reducing initial page load database queries.
- Company Data API Performance: Improved the
/api/user/company endpoint by using database joins to fetch company and logo information in a single query instead of multiple sequential queries. This reduces database round trips from 3-4 queries to just 2 queries, significantly improving response times.
- Response Caching: Added HTTP cache headers to the company data API endpoint, allowing browsers and CDNs to cache responses for 30 minutes. This means subsequent page loads will be even faster as the data is served from cache.
Fixed
- Session Expiration Handling: When a user's session expires, the application now automatically clears all cached session data and redirects to the login page with a clear message, instead of showing an error message indefinitely. This provides a better user experience and prevents confusion when sessions expire.
- Header Cache Stability: Fixed an issue where the header logo cache key would change when the user profile loaded, causing unnecessary cache misses and refetches. The header now uses a stable cache key that prevents this issue.
[0.11.0] - 2025-11-26
Added
- Ctrl+Click Support for DataGrids: View buttons in admin DataGrids now support standard browser link behaviors. Users can Ctrl+click (or Cmd+click on Mac) to open multiple items in new tabs, making it easier to compare records side-by-side. Middle-click and right-click "Open in new tab" also work as expected, providing a more familiar web browsing experience.
Changed
- Companies DataGrid Navigation: Removed the edit button from the Companies list page. Users now navigate to the company view page first, then click "Edit Company" if they want to make changes. This creates a more consistent workflow where users and allocations are only visible on the view page, encouraging users to review details before editing.
- DataGrid View Buttons: View buttons in DataGrids (Companies, Projects, Allocations, Holds, and Dwellings) are now implemented as proper links instead of buttons, enabling standard browser navigation behaviors while maintaining fast client-side navigation for regular clicks.
[0.10.0] - 2025-11-25
Added
- Project POI Map: Enhanced the Project Details page with a dynamic map showing the project location and nearby Points of Interest (POIs).
- Interactive Map Filters: Users can now toggle POI categories (Health, Education, Transport, etc.) using icon-based filter buttons.
- Custom Map Markers: Implemented custom, colored icons for different POI categories to improve map readability.
- Project Details Popup: Clicking the project marker on the map now displays key details including the featured image, address, and pricing.
- Admin POI Management: Added tools for administrators to manage POIs directly within the Project edit view, including AI-powered recommendations.
Changed
- POI Association: Refactored Points of Interest to be associated with Projects instead of Regions for more granular relevance.
- Map Styling: Improved map marker aesthetics by removing background containers and using clean SVG icons.
Fixed
- Build Stability: Resolved type errors in API routes and components to ensure compatibility with the latest Next.js version.
- Test Coverage: Updated and fixed unit tests for the Gemini AI service.
[0.9.0] - 2025-11-21
Added
- AI-powered region description generation: Administrators can now use an "AI Populate" button in the region form to automatically generate comprehensive, approximately 500-word descriptions for regions using Google Gemini AI. The AI creates factual, positive area briefs tailored for potential property buyers, formatted with HTML headings, paragraphs, and lists. This feature saves time while ensuring consistent, high-quality region descriptions that help buyers understand areas they're considering for property investment.
- Region description HTML formatting: Region descriptions now support rich HTML formatting using the same editor used for project descriptions. Administrators can add headings, bullet points, and formatted text to create more engaging and structured region information that better showcases each area's unique characteristics.
- Read more/show less expander for region descriptions: Region information cards on project detail pages now include a "Read more..." / "Show less" feature that intelligently truncates long descriptions. The truncation is designed to align with the featured image height on larger screens, providing a clean, balanced layout while allowing users to expand and view full descriptions when needed.
Changed
- Project detail page section naming: Updated section headings for better clarity - "Overview" is now "Project Overview" and "Gallery" is now "Project Gallery", making it clearer which content belongs to the project versus the region.
- Project detail page styling consistency: Improved visual consistency across all sections by removing icons from "My Holds" and "My EOIs" cards, updating the "Stock List" heading color to match other section headings, and enhancing the Product Type and Region labels with primary color styling for better visibility.
- Region info card visibility persistence: The visibility state of the Region Info card on project detail pages is now remembered across page loads using browser localStorage, so users' preferences for showing or hiding region information are preserved when they return to a project page.
Fixed
- TypeScript type compatibility: Fixed type errors in region form and Gemini service by properly using ErrorType enum values instead of string literals, ensuring full TypeScript compatibility and preventing build errors.
[0.8.0] - 2025-11-20
Added
- Region featured images and galleries: Administrators can now add featured images and galleries to regions, making it easier to showcase region information with visual content. This enhancement allows regions to have their own media library similar to projects, providing a consistent experience across the platform.
- Region information card on project pages: Project detail pages now display a collapsible "Region Info" card that shows the region's featured image, name, description, and gallery. Users can toggle this information on or off using a "Show region info" / "Hide region info" button, giving them control over what information they want to see while browsing projects.
[0.7.2] - 2025-11-19
Changed
- Moved Dropbox Integration from Testing page to Settings page for better organization. The Dropbox integration tools are now located in the Settings section alongside other system configuration options, making it easier for administrators to find and manage integration settings in one place. The breadcrumb navigation has been updated to reflect this change, showing "Admin > Settings > Dropbox" instead of "Admin > Testing > Dropbox".
[0.7.1] - 2025-11-19
Changed
- Restructured dwelling management to be nested under projects for better organization. Dwellings are now accessed and edited directly from within their parent project, making it easier to manage project-related dwellings in one place. The navigation breadcrumbs now clearly show the project context when working with dwellings.
Fixed
- Fixed 404 errors when clicking view or edit buttons for dwellings within project pages by correcting route parameter naming to match Next.js conventions
[0.7.0] - 2025-11-18
Added
- PDF stock list generation with ARG logo and styling
[0.6.1] - 2025-11-17
Changed
- Project detail page UI improvements: sticky header, collapsible cards, and menu updates
[0.6.0] - 2025-11-14
Added
- Attributes column always included in CSV template for bulk dwelling import
Fixed
- Dynamic CSV template header generation from configuration
- Empty and duplicate CSV header handling in bulk import
- Data grid overflow handling
[0.5.2] - 2025-11-13
Changed
[0.5.1] - 2025-11-13
Added
- 'Add to Attributes' option for bulk dwelling import
- Client-side image resizing before upload (by size or dimensions)
- Smooth scrolling anchor navigation
Changed
- Bulk import column mapping UI now shows CSV columns as primary list
- Gallery editor layout streamlined
- Image format preserved during client-side resize
[0.5.0] - 2025-11-13
Added
- Gallery viewer for project photos
Fixed
- TypeScript build errors and linting warnings
[0.4.1] - 2025-11-12
Added
- Text editor for project breakdowns
- Project images and breakdown display in admin project view
Changed
- Project card positioning improvements
[0.4.0] - 2025-11-11
Added
- Media library integration for project photos
- Internal API for media optimization
Changed
- Image optimization moved to internal API
[0.3.1] - 2025-11-07
Changed
- Improved dwelling import validation and custom mapping validation
[0.3.0] - 2025-11-05
Changed
[0.2.0] - 2025-11-05
Fixed
- Project view page loading and error handling improvements
- Faster changelog loading
[0.1.0] - 2025-11-04
Added
- Database-driven email fallback setting (
arg_email_fallback) to replace PARTNER_CONTACT_FALLBACK_EMAIL environment variable
getEmailFallback() function in partnerContactService for centralized fallback email retrieval
- Partner contact CC support to allocation emails when different from granted_by
- Unit tests for
getEmailFallback() and updated partner contact waterfall logic
Changed
- Enhanced partner contact lookup waterfall logic: now checks user's
profile.company_id when user's hubspot_owner_id is null
- All email notifications now use centralized
emailService test mode handling with consistent TO/CC/BCC recipient display
- Allocation emails now send single email with all recipients (TO/CC) instead of individual emails per recipient
- EOI notification emails now include requester in CC as documented
sendEmail() function in lib/mailgun.ts now supports cc, bcc, and replyTo parameters for backward compatibility
Removed
PARTNER_CONTACT_FALLBACK_EMAIL environment variable references (replaced by database setting)
- Manual test mode handling from allocation emails (now uses centralized emailService)
[0.0.1] - 2025-01-27
Added
- Initial version and changelog system
- Version display in footer
- Changelog page route
- Automated version bump scripts with git integration