Showing 36 of 36 releases
Updated clinical directories with real-time 1-hour prescriber availability matching, clinical specialty filtering for partner clinics, peer-reviewed patient health guides, stabilized filter popovers, and an interactive changelog explorer.
- Prescriber Directory Real-Time Availability: Implemented multi-window slot analysis dynamically matching prescribers with start times within the next 1 to 2 hours today, eliminating false zero-state responses.
- Clinic Specialty and Services Matching: Added clinical specialty filtering across ADHD Assessment, Mental Health, Private GP, Weight Management, and Dermatology, paired with verified specialty badges on clinic cards.
- Peer-Reviewed Clinical Health Library: Replaced placeholder content with high-yield clinical guides covering ADHD Assessment Timelines, Private GP Prescribing in England, Medical Weight Management, and NHS/NICE guidance citations.
- Interactive Changelog Explorer: Added client-side search across release notes, category filtering (Added, Fixed, Changed), direct release anchor sharing, and quick version jump navigation.
- Filters Popover Header Collision: Forced prescriber filter popovers to anchor downward (side="bottom"), auto-hide when detached on scroll (hideWhenDetached={true}), and contained stacking context (z-30) so filters never overlap or pierce through the sticky site header.
- Experience Badge Typography Glitch: Replaced defective "UNDEFINED YRS" chips on prescriber cards with verified clinical experience years or clean "VERIFIED" practice badges.
- Clinic Listing Proximity Header: Guarded the distance header against NaN latitude/longitude coordinates from unpopulated geo headers.
- Backend Specialty Search and Availability Bucketing: Resolved backend logic skipping prescribers in availability bucketing and expanded clinic search queryset to include about, specialties, and address lines.
- Changelog Public Route Accessibility: Added /changelog to proxy public bypass routes, ensuring unauthenticated visitors and logged-in patients alike can review release notes without redirects.
- Design System Refinement: Upgraded About Us page, navigation headers, and directory cards to GoWello's calm clinical palette, improving contrast, responsiveness, and typography.
- Specialty Pills UX: Enabled one-click toggle off for active filter pills, instantly resetting to All Clinics.
Synchronized delivery options with local pharmacy collection, resolved Aida clinician match screen rendering crashes, hardened session token refresh against race conditions, and enforced UK defaults across checkout.
- Worldpay Settlement Auto-Verification: Added automated background retry polling to instantly verify payment settlement and capture when returning from the Worldpay hosted payment gateway.
- Safe Credential Formatter in Aida Matches: Implemented dynamic parsing for structured prescriber qualification payloads, displaying academic degrees and GMC/GPhC registration numbers cleanly.
- Local Pharmacy Collection & Delivery Isolation: Strictly isolated Click & Collect from postal delivery options when Local Collection is active, dynamically displaying the selected pharmacy name and postcode on the collection card with point-of-sale validation.
- Delivery Options Counter & Toggle Synchronization: Synchronized available delivery options count with active visible options when toggling between home delivery and pharmacy collection.
- Session Cross-Contamination & Race Conditions: Isolated NextAuth token refresh promises per user ID, ensuring concurrent API requests never swap or corrupt authentication tokens.
- Aida Doctor Matches React Error #31: Safely unpacked clinician credential objects in MatchesView to prevent Next.js client component crashes.
- Active Medications Dashboard Sync: Recognized AUTHORISED and PROCESSING payment and order statuses, accurately syncing verified prescriptions into dashboard medication previews.
- Password Reset Query Parameter Sanitization: Removed sensitive reset codes from URL redirects and client actions in compliance with Astra security pentest findings (#09).
- NextAuth Session Role Protection: Hardened session mutation callbacks against client-side role privilege escalation in compliance with Astra security pentest findings (#25).
- Order Details Endpoint Routing: Ensured canonical trailing slash on order details API fetch to prevent redirect authentication header stripping.
- Checkout UK Default Country: Enforced United Kingdom (GB) as the default country across Stripe Elements address groups, payment options, and onReady events.
- Phone Input UI & Active Flag Badges: Refined country picker styling and active flags to maintain clean contrast and eliminate greyout appearance.
Integrated Gophr same-day courier service into patient checkout with live multi-vehicle quoting, dynamic price holding, and vehicle selection.
- Gophr Same-Day Delivery Option: Added Gophr same-day courier delivery selection to the checkout invoice, offering live vehicle quoting for eligible delivery addresses.
- Interactive Vehicle Selection Modal: Implemented vehicle selection dialog showing available options (Bicycle, Motorcycle, Car, Van) with live price, vehicle icon, and estimated delivery ETA.
- Live Pricing & Guaranteed Hold Timer: Displays real-time quotes from Gophr with price validity countdown and automatic refresh prompt upon expiration before payment.
- Seamless Address Change Protection: Automatically detects delivery address changes, prompting patients to re-quote to ensure accurate courier pricing and prevent quote mismatch.
- Delivery Option Selection UX: Replaced the standard dropdown selector with interactive delivery method tiles, providing clear visibility of Click & Collect (Free), postal delivery, and Gophr same-day courier with instant quote actions.
Launched dedicated Aida clinical matches page (/patient/aida/matches/<id>) with GP highlighting, guest triage preservation, smooth 2s hand-off card, and prescriber directory escape hatch.
- Dedicated Matches Page (/patient/aida/matches/<id>): Implemented full outcome view displaying top curated clinicians from Aida, clinical match rationale ("Why Aida matched"), consultation and follow-up fees, and live availability.
- Directory Escape Hatch: Added prominent directory link card at the bottom of matches page ("Browse All Prescribers in Directory") with matched condition filters pre-applied, preserving user agency.
- GP Prioritization & Visual Distinction: Highlighted General Practitioners with sky-blue "GP · First Point of Contact" badge and prioritized them for first-line clinical assessment.
- Guest Triage & Seamless Account Claim: Allowed unauthenticated visitors to triage with Aida and view their matches; guest tokens persist securely and automatically claim into the patient profile upon login/registration.
- Smooth Chatbot Hand-Off: Added "Opening your matches page..." animated transition card in Chatbot.tsx upon MATCHES_READY socket event before gracefully navigating.
- Inline Chat Booking: Supported OPEN_BOOKING socket event with inline clinician booking card inside the chatbot window.
Implemented enterprise standard root rem scaling (font-size: 90%) and compact executive layout hierarchy for pixel-perfect portal alignment and optimal information density.
- Standard Root Rem Scaling: Switched desktop scaling (>= 1024px) from CSS zoom to standard root rem scaling (html { font-size: 90%; }), ensuring 100% mathematical precision for Radix UI popovers, dropdowns, tooltips, and floating menus with zero coordinate offset.
- Sleek Header Height: Compacted the top navigation bar from min-h-[72px] to min-h-[64px] with refined vertical padding (py-2.5 sm:py-3), creating an ultra-clean executive top bar.
- Proportional Dashboard Spacing: Tightened dashboard container padding, metric bento cards, live tracking stepper, and right sidebar calendar, allowing Active Medications and Upcoming Appointments to sit comfortably above the fold on all standard laptop displays.
Adopted executive 90% desktop scaling to fit more high-value content above the fold and deliver the ideal information density.
- Desktop Viewport Scaling: Configured desktop viewports (>= 1024px) with native 90% scaling (zoom: 0.9), matching the user-preferred 90% browser zoom level. Enables Active Medications, Upcoming Appointments, Tracking, and summary metrics to fit cleanly above the fold without manual browser zooming or excessive vertical scrolling, while keeping mobile and tablet touch targets at 100% full scale.
Mathematically centered navigation tabs across all viewports, eliminated layout shift on page transitions, and replaced text CTA with a sleek Book Consultation squircle icon button.
- Absolute Navigation Centering: Positioned desktop header navigation links at the exact 50% midpoint (absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2), ensuring tabs (Home, Consultations, Prescriptions, Orders, Letters) are mathematically centered on the page at all times regardless of asymmetrical left/right header widths.
- Layout Shift Elimination: Resolved the jarring header jump where navigating between Dashboard (hidden Book CTA) and other pages (visible Book CTA) moved the center navigation ~80px horizontally.
- Sleek Book Consultation Icon Button: Transformed the bulky Book Consultation text button into a cohesive squircle icon button (CalendarPlus) matching the notification bell with tooltip and active route states, saving ~120px of header space and completely eliminating laptop screen collisions.
- Responsive User Profile Sizing: Adjusted UserInfo container to display as a matching compact squircle avatar on tablet and small laptop screens (< 1280px), expanding with name and role on desktop (xl+).
Resolved manifest.webmanifest syntax error caused by middleware redirect, and eliminated mobile layout clipping across Orders and dashboard views.
- Web Manifest Middleware Bypass: Added manifest.webmanifest and manifest.json to static asset bypass rules, public routes, and matcher patterns in proxy.ts, eliminating the "Manifest: Line: 1, column: 1, Syntax error" caused by redirects returning HTML.
- Mobile Horizontal Clipping Fix: Added max-w-full and min-w-0 flex constraints across dashboard layouts, page containers, and tables, preventing wide tables from expanding parent containers beyond the mobile viewport (e.g. Pixel 9 412px).
- Adaptive Mobile View Default: Configured Orders, Prescriptions, Consultations, and Letters views to prioritize touch-friendly Card Grid layouts on mobile devices (< 768px), preventing truncated headers, search filters, and tracking cards.
Resolved table header vertical displacement and row overlap across Orders, Prescriptions, Consultations, Letters, and Address tables.
- Table Header Row Displacement: Removed sticky top-[72px] offsets from table headers inside scrollable containers. Fixed the issue where headers were pushed 72px down into the table body, overlapping data rows and obscuring top order/prescription details.
- Consistent Table Layout: Standardized table headers across OrdersTable, PrescriptionsTable, ConsultationTable, LettersTable, AddressList, and skeleton loaders to sit cleanly at y = 0 with pristine alignment across all devices.
Fixed Orders and Prescriptions table Action columns being clipped on desktop and laptop screens, and resolved mobile dashboard header and action button overflow.
- Orders Table Actions Column Visibility: Removed desktop overflow suppression (lg:overflow-x-visible and xl:overflow-x-visible) across Orders, Prescriptions, and Consultations tables, ensuring the Actions column (View Invoice, Pay Now, Check Status) is fully visible, reachable, and properly aligned on all screen sizes.
- Table Spacing Optimization: Streamlined Orders table column padding from px-6 py-4 to px-4 py-3.5, allowing all 9 columns to fit cleanly across standard 1280px–1440px laptop displays without horizontal clipping.
- Mobile Welcome Header Overflow: Replaced fixed single-line button container with responsive wrapping (flex-wrap) so "Refresh", "Prescriptions", and "Book Consultation" buttons no longer overflow the screen on mobile devices.
- Mobile Header Avatar Alignment: Streamlined the mobile user avatar button and removed flex-grow conflicts so top navigation elements fit seamlessly on small 375px–412px viewports without right-edge clipping.
Upgraded app typography to Plus Jakarta Sans for enhanced medical data legibility and clinical aesthetics, and implemented full cross-device support across mobile, tablet, and desktop devices.
- Plus Jakarta Sans Typography: Integrated Google Font Plus Jakarta Sans with tailored weights (400 to 800) and zero layout shift, significantly improving clarity for medication dosages, units, and dates.
- Comprehensive Cross-Device Support: Implemented Next.js Viewport API with viewport-fit=cover, dynamic status bar theming, safe-area padding for mobile notches and home indicators, and 100dvh dynamic viewport height.
- Mobile Input Zoom Fix: Prevented iOS Safari from auto-zooming on input focus by setting mobile font size to 16px minimum.
- Adaptive Mobile Card Views: Orders and Prescriptions tables now automatically default to touch-optimized Card Grid views on mobile screens (< 768px), eliminating horizontal scrolling on small viewports.
- PWA Web App Manifest: Added native app/manifest.ts enabling "Add to Home Screen" installation on iOS and Android devices with standalone display mode.
- Responsive Modals: Enforced automatic max-height, scrolling, and safe gutter constraints on all DialogContent and Prescription viewer modals.
Resolved erroneous "Pay Now" actions and "Payment Due" statuses on refunded and cancelled orders across the dashboard, orders table, and prescription detail modals, and suppressed spurious Worldpay gateway verification alerts.
- Refund Status Recognition in Dashboard Active Medications: Added dedicated "Refund Initiated" and "Refunded" badges (in purple with RotateCcw icon) and "Cancelled" badges on the Active Medications preview card, clearly identifying refunded treatments without claiming payment is due.
- Dashboard "Pay Now" on Refunded Orders: Fixed an issue where refunded prescriptions/orders defaulted to "Payment Due" with an active "Pay Now" button on the dashboard home, switching the button to "View Order" and disabling payment initiation.
- Orders Table & Detail Modal "Pay Now" Guards: Prevented "Pay Now" buttons from rendering on orders that have initiated or processed refunds across both desktop tables, mobile cards, and the prescription detail slide-out drawer.
- Spurious Worldpay Payment Verified Toasts: Prevented automated background verification from treating SENT_FOR_REFUND gateway events as payment authorizations, and suppressed automatic background toast popups on the dashboard.
- Toast Dismissal Fix: Bound explicit dismiss handlers to the ToastClose icon, reduced remove delay from 1000ms to 150ms, and added Tailwind opacity and scale exit transitions, ensuring notification toasts close immediately upon clicking the close button.
- Unpaid Prescriptions Modal Cleanup: Excluded refunded and cancelled prescriptions from the consultation completion unpaid prescription prompt dialog.
Pagination fixes across Prescriptions, Orders, and Consultations tables, streamlined medication dosage and quantity presentation, and table alignment and badge styling polish.
- Explicit Medication Dosage Label: Added an explicit "Dosage: " prefix before dosage numbers and instructions across both Table and Card views of Prescriptions and Orders, making medication details and quantities instantly clear.
- Compact Repeat Refill Pill: Introduced a compact "Repeat Refill" badge with native tooltip hover previewing the linked parent prescription ID, eliminating multi-line text wrapping and maintaining perfectly uniform table row heights.
- Table Pagination "Next" Button Disabled: Resolved an issue where pagination controls greyed out the "Next" button when more than 10 records existed, by extracting totalItems from the DRF response envelope and attaching pagination parameters to query strings.
- Stray Blue Table Line: Removed an orphaned vertical border artifact on the first row of the Prescriptions table caused by row-level border collapse behavior.
- Rx ID Badge Color Consistency: Standardized Rx ID badges to neutral slate across all prescriptions and repeat refills, ensuring visual consistency across all rows.
- Prescription Viewer Polish & Cross-Platform Unlocking: Removed the diagonal text watermark overlay and window blur pause overlay across prescription documents for clean, unobscured viewing across all operating systems, and updated the modal warnings and footer notices to accurately state that direct downloads are restricted.
Sticky table headers across all patient portal tables, and complete Repeat Prescription UI overhaul with unmistakable recognition of Original Prescriptions versus Repeat Refills.
- Original vs Repeat Refill Visual Recognition: Added distinct badges, background accents, and card ribbons distinguishing primary/master prescriptions from repeat refills. Repeat items clearly display their cycle number and parent link (↳ Refill of Original Rx #X).
- Original Prescriptions & Repeat Refills Filter Tabs: Added dedicated filter pills allowing patients to view exclusively original prescriptions or repeat refill orders with custom empty states.
- Master Prescription Context in Repeat Dialog: The repeat request modal now explicitly identifies the master prescription source, shows the remaining repeat allocation, and clearly explains how issuing a repeat generates a linked refill.
- Dynamic Repeat Status Tracking: Enhanced the repeat status modal with state-tailored themes (Amber for Doctor Review, Emerald for Approved & Ready to Pay, Blue for Dispensing, Rose for Consultation Recommended).
- Sticky Table Headers: Added fixed sticky headers across all portal tables (Prescriptions, Orders, Consultations, Letters, Addresses, Activity Timeline, and Prescription Detail) ensuring column headings remain pinned while scrolling.
- Repeat Identification Confusion: Solved the issue where patients could not recognize which prescription was the original master script and which was a repeat refill.
Order-scoped delivery options API integration using session bearer tokens, and empty state handling for controlled drug orders without eligible shipping methods.
- Delivery Options Empty State: Added an amber advisory callout on the checkout invoice screen when a clinic has no eligible delivery methods enabled for a prescription (such as controlled drugs when only standard TPN24 is configured), disabling "Proceed to Pay" with a clear "Delivery Unavailable" status.
- Order-Scoped Delivery Options: Updated fetchDeliveryOptionsAction to query GET /orders/{orderId}/delivery-options/ with the session bearer token instead of generic enums, dynamically returning clinic-agreed rates and allowed delivery methods.
- Invoice Delivery Options Lifecycle: Bound orderId into the Invoice useEffect dependencies and cleared invalid selected shipping modes when options change or come back empty.
Auto-refresh after Worldpay payment return, removed duplicate View Prescription button in order details, CD Rx viewer fit-to-screen with screenshot-deterrent watermark overlay, upcoming consultations widget on dashboard sidebar, and bouncing animation for the active order tracking step.
- Dashboard Upcoming Consultations Widget: Added a dedicated Upcoming Consultations panel to the right sidebar on the patient dashboard, showing the next 3 future appointments sorted chronologically with online/clinic type icon, service name, and formatted date-time. Includes a friendly empty state with a booking CTA.
- CD Rx Screenshot Watermark: Added a pointer-events:none diagonal watermark overlay over the controlled drug prescription iframe that renders invisibly on-screen but stamps "GOWELLO PROTECTED • READ-ONLY CLINICAL COPY" across any screenshot or screen capture attempt.
- Auto-Refresh After Payment: Resolved the issue where the consultations page and dashboard required a manual refresh after returning from Worldpay gateway. A second router.refresh() now fires 2 seconds after payment verification succeeds, revalidating all parent layout segments.
- Duplicate View Prescription Button: Removed the redundant "Original Doctor Prescription" banner button that appeared below the toolbar in order details, leaving only the single action button in the controls row.
- CD Rx Viewer Fit-to-Screen: Fixed the controlled drug prescription iframe not filling the modal height. The iframe now uses absolute positioning to fill its container and appends #view=FitH to the PDF URL for proper horizontal fit.
- PDF Document Viewer Plugin Support: Removed the restrictive iframe sandbox attribute on the prescription viewer modal that caused Brave and Chromium-based browsers to block the native PDF rendering plugin ("This page has been blocked by Brave").
- Bouncing Order Tracker: The active (current) step node in the order tracking timeline now animates with a continuous bounce (animate-bounce) in both horizontal and vertical orientations, making in-progress status immediately visible.
- Connected Tracking Line: Eliminated the floating gap between horizontal order tracking nodes by extending connecting lines directly to the circle perimeters (-mx-12 sm:-mx-14 with z-0 background stacking), creating a seamless connected progress line across all order stages.
- Codebase Hygiene: Resolved all TS6133 unused-local TypeScript errors across the entire codebase (noUnusedLocals), including stale imports, unused variables, dead computed values, and redundant destructured bindings across 10+ components.
Comprehensive ADHD-friendly UI overhaul across Profile, Address Book, Audit Log, and Change Password sections with a unified Slate design system, zero-layout-shift loading skeletons, and an instant Worldpay payment status sync fix eliminating the post-payment "Pending" flash.
- Profile Section Redesign: Rebuilt Personal Details & Records page with a calm Slate design system — ambient glow container, profile completion progress bar, 4-column personal details grid, GP surgery one-click address copy, and Sage Green (#78A083) upload dropzones for Photo ID and Medical Documents.
- Allergy Management Card: New Known Allergies & Adverse Reactions card with severity-coded pills (rose for severe, amber for moderate, emerald for mild) and an inline Add Allergy modal form with slate inputs.
- UK GDPR Compliance Cards: Added dedicated Data Portability card (Article 20 — export medical records) and redesigned Danger Zone card (Article 17 — account erasure) with a multi-step safety confirmation dialog.
- Change Password Security Flow: Upgraded password change modal and standalone page with real-time NHS/GDPR password complexity checklist (8+ characters, letter, number, special character, passwords-match confirmation) rendered with live visual checkmarks as the user types.
- Address Book Redesign: Modernised Address Book with breadcrumb navigation, live address count pill, Sage Green Add Address CTA, soft emerald Primary / slate Secondary address badges, monospace postcode pills, and a low-anxiety delete confirmation dialog.
- Activity & Audit Log: Enhanced Security Log page with breadcrumb navigation, live "Audit Logging Active" pulse indicator, colour-coded event type pills (Auth indigo, Model emerald, Activity sky, Modified amber), IP address badges, and a modal diff inspector for record changes.
- Zero-Layout-Shift Loading Skeletons: Created pixel-accurate loading.tsx skeletons for all refactored routes — Personal Details, Change Password, Address Book, and Activity Log — ensuring no cumulative layout shift during network requests.
- Instant Worldpay Payment Status Sync: Resolved a race condition where orders returned from Worldpay showed "Pending" until the user manually clicked "Pay Now" again. The OrdersTable verifiedMap initializer now runs synchronously before first render, reading both localStorage and URL params (?payment_success=1&order_id=XXX) to eagerly mark the just-paid order as Authorised with zero flash.
- Unified Design System Tokens: Standardised all border, background, and text colours across account routes from ad-hoc gray-* utilities to the Slate palette (slate-100, slate-200/80, slate-900), with Calm Indigo Blue (bg-indigo-600) for all primary action buttons replacing the previous Sage Green (#78A083) overrides on form submits.
- Change Password Page Layout: Replaced the legacy image + plain form layout with a modern two-column grid featuring a credential update card on the left and NHS DTAC compliance advisory and security best practices panel on the right.
Integrated clinic-level custom delivery pricing into the invoice and checkout flows, ensuring patients are quoted and charged their clinic’s agreed delivery rates, and supported automated per-patient fee waiver reflections.
- Clinic-Specific Delivery Pricing: Integrated order-scoped delivery options on the prescription invoice screen, dynamically retrieving the clinic’s allowed delivery methods (e.g. SD1, Track 24, and Click & Collect) and exact agreed pricing (e.g. £5.00 for SD1 rather than global £10.00).
- Automated Fee Waiver Breakdown: Enhanced invoice breakdown and summary calculations to automatically reflect clinic and prescriber fee controls (prescription fee, clinic offline fee, and service fee), dynamically excluding waived £0.00 items from invoice line items and order totals.
- Checkout Delivery Rate Discrepancy: Resolved an issue where patients were displayed global platform delivery rates on the invoice screen but charged custom clinic-negotiated rates at Worldpay gateway initiation; invoice display and gateway checkout now use identical clinic-negotiated delivery prices.
Updated consultation reschedule modal to grey out unavailable and booked time slots matching consultation booking styling, and removed redundant fee breakdown and pricing badges.
- Consultation Reschedule Slots & Fee Layout: Greyed out unavailable and booked time slots in the reschedule consultation dialog with disabled state and neutral styling matching the booking flow, updated available slot count to accurately reflect unbooked slots, and removed redundant fee breakdown and badges since consultations are already paid.
Enabled Click & Collect pharmacy collection for all orders including controlled drugs, fixed consultation fee resolution in appointment booking to respect exact clinician treatment pricing without arbitrary minimum clamps, removed consent checkboxes across payment flows, and corrected fulfillment badge placement for repeat prescriptions.
- Click & Collect for Controlled Drugs: Updated delivery options filtering on the prescription invoice screen so that physical collection in person from the pharmacy (identified via backend `is_physical_collection` flag) is offered for all orders, including controlled drug prescriptions.
- Repeat Prescription Fulfillment Badge Placement: Fixed an issue in the prescriptions table where paid, approved repeat refill prescriptions did not display an in-progress fulfillment badge; the active repeat prescription row now accurately displays "Refill In Progress" next to "Paid", while the parent prescription indicates active refill progress and locks repeat requests until delivery.
- Preserved Clinician Consultation Pricing: Removed arbitrary minimum fee clamp in appointment booking that was forcing £20 clinician consultations to £45 during Stripe PaymentIntent initiation. Appointments now initiate and charge the exact treatment fee set by the clinician.
- Removed Payment Flow Consent Checkboxes: Removed redundant consent checkboxes across consultation booking, Stripe checkout, prescription payments, and Worldpay invoice payment, keeping explicit patient consent focused strictly on initial patient registration.
Added explicit patient consent and T&C compliance during patient registration and checkout flows, resolved consultation fee calculation, and hardened post-payment back-navigation across Stripe and Worldpay.
- Patient Registration Consent & T&C: Added explicit Patient Consent declaration alongside Terms & Conditions and Privacy Policy checkboxes during patient signup, ensuring mandatory consent under UK healthcare and GDPR compliance prior to account creation.
- Checkout Patient Consent: Integrated Patient Consent & T&C acceptance across consultation checkout, appointment booking, and prescription payment screens.
- Consultation Checkout Fee Resolution: Fixed an issue where the consultation checkout screen showed £0.00 instead of the consultation fee when paying via Stripe; checkout now accurately resolves and prioritizes verified Stripe PaymentIntent amounts and clinician treatment fees, ensuring £0.00 is never displayed as a valid fee.
- Post-Payment Navigation Protection: Prevented returning to the payment screen once a consultation payment has been completed; checkout now verifies payment status and automatically redirects completed sessions to booking confirmation, and post-payment history handling prevents the browser back button from returning to the payment screen.
- Worldpay Invoice Payment Protection: Verified and hardened Worldpay prescription checkout so that paid orders render the settlement proof card and unmount the payment form, fee calculations fallback to line-item medication totals, and browser back navigation is intercepted to prevent returning to expired gateway sessions.
- Automated Worldpay Settlement Synchronization: Resolved an issue where successful Worldpay payments showed as Pending or Initiated on the orders page until navigating into the prescription details; added automatic background verification on mount across the Orders Table, Live Order Tracking banner, Prescriptions Table, and Payment Success views, automatically advancing status to "Authorised" / "Order Processing" and completing the timeline step immediately upon returning to the dashboard or orders list.
- Dispatched Order Action Optimization: Hidden redundant "Verify Payment" buttons once an order has been dispatched, out for delivery, delivered, or settled, keeping order controls clean and showing only "View Invoice".
- Preserved Checkout Parameters Across Sign-In: Retained all consultation details (service, fee, date, time slot, duration) in redirect URLs if a patient signs in during checkout.
Preserved custom formulary pricing and metadata across repeat prescription requests and prescriber review flows.
- Custom Formulary Repeat Pricing: Resolved an issue where requesting a repeat prescription for custom formulary medications fell back to base catalogue prices; repeat refills now correctly preserve custom formulary selling prices and pack pricing.
Refined payment verification, dynamic settlement badge status, and streamlined payment action controls across order listing and prescription detail views.
- Strict Settlement Verification: Enforced strict settlement verification where green "Verified" badge with tick is strictly reserved for confirmed SETTLED gateway transactions, while authorized payments awaiting clearing display an amber "Authorised" badge.
- Synchronized Listing & Details Badges: Aligned payment status badges across both orders table listing and order details views, including distinct indicators for Verified, Authorised, Cancelled, Refunded, Refund Initiated, and Pending.
- Silent In-Place Verification: Verification updates status badges immediately and silently without intrusive toast popups.
- Streamlined Payment Actions: Removed redundant "Verify Payment" buttons when "Pay Now" is present; unpaid orders now show only "Pay Now", and "Verify Payment" appears strictly on paid orders.
- Payment Reference Display: Positioned Payment Reference cleanly below action buttons with quick one-click copy support, removing bulky cards.
Refined refill supply calculations to strictly begin upon medication delivery, added "Refill In Progress" status during fulfillment, and updated prescription expiry calculation based on medication duration.
- Refill In Progress Status: Prescriptions with paid repeat refills awaiting delivery now display a dedicated "Refill In Progress" status pill, preventing early countdown display while medication is being dispensed and shipped.
- Order In Progress Tracking: Initial prescriptions pending delivery display "Order In Progress" and prevent repeat requests until medication delivery has completed.
- Premature Countdown Prior to Delivery: Fixed an issue where refill active countdowns began immediately upon payment before the physical medication had been delivered.
- Delivery-Anchored Supply Countdown: Medication supply duration and refill unlocks strictly begin only after order delivery (order.delivered_at), eliminating premature countdowns while orders are in transit.
- Medication Duration Expiry: Prescription expiry date is now accurately calculated from the maximum prescribed medication duration (e.g. 28 days) rather than standard 180-day document validity.
Added active repeat refill locking, real-time supply tracking anchored to active repeats, and Refill Active status pill indicators.
- Active Refill Status Indicator: Original prescriptions with an active, paid repeat refill now clearly display a non-clickable "Refill Active" status badge in place of the repeat button, preventing premature duplicate refill orders.
- Refill Cycle Counter & Status Tag: Prescriptions with active repeats display updated tags showing active supply status alongside remaining authorized repeats (e.g. "Refill Active • 2 Left").
- Premature Repeat Button Visibility: Resolved an issue where paying for a repeat refill did not lock the original prescription action button, ensuring repeat ordering unlocks strictly within 7 days of the active supply ending.
- Anchored Medication Supply Tracking: Medication supply duration and the 7-day refill countdown are now automatically anchored to the latest completed repeat refill rather than the initial prescription date.
Enhanced repeat prescription management with clear "In Review" UI tracking, dedicated refill status timeline modal, 7-day medication supply window, and single monthly cycle dispensing for pharmacy stock control.
- Repeat Refill In-Review Tracking: Prescriptions table and detail views now display clear "Repeat In Review" badges and replace action buttons with an informative review indicator so patients always know when a repeat request has been submitted and is awaiting prescriber approval.
- Dedicated Repeat Request Status Modal: Interactive status dialog providing a real-time 3-step progress tracker (Submitted → Doctor Review → Payment & Dispense), medication breakdown, reviewing prescriber, and next steps.
- 7-Day Supply Expiry Refill Lock: To align with pharmacy stock control guidelines, repeat refill ordering is unlocked strictly within 7 days of the patient's current medication supply ending, showing a countdown badge ("Refill in Xd") when outside the window.
- Duplicate Repeat Submissions & UI Clarity: Eliminated patient confusion by preventing re-clicks while a repeat is under review, providing instant confirmation toasts and direct "Pay Repeat Refill" navigation upon prescriber approval.
- Single Monthly Cycle Dispensing: Streamlined repeat refill ordering to single monthly cycles, removing multi-cycle bundling to maintain strict pharmacy stock control and safety.
Introduced dedicated patient medical letters inbox and document viewer, with search filtering, navigation bar access, and direct login dashboard navigation.
- Patient Medical Letters Inbox: Added a dedicated letters section (/patient/letters and /inbox) allowing patients to view and review clinical correspondence and medical letters from prescribers in one central place.
- Letter Viewer & Details Modal: Interactive letter preview modal enabling patients to view full letter contents, issuing clinician details, and download letters as documents.
- Header & Navigation Integration: Quick access to Letters directly from the patient portal top navigation bar and mobile drawer.
- Patient Login Home Navigation: Resolved an issue where logging in as a patient redirected to the legacy /patient/dash route instead of the main patient home dashboard (/).
Enforced clinic-level repeat prescription request permissions across prescription list, detail views, and request modal.
- Unauthorized Repeat Request Prevention: Guarded the repeat request dialog and submissions from executing for clinics that have patient repeat requests disabled.
- Deployment Session Resilience: Eliminated unexpected logouts during backend deployments by preserving session tokens through temporary 502/503 service transitions, strictly signing out only upon genuine 401/400 token expiration or the 7-day session timeout.
- Clinic Repeat Permission Controls: The "Request Repeat" button is now automatically hidden from both the prescriptions table and prescription details view when a clinic has disabled patient repeat prescription requests.
Dual-tier repeat prescriptions with pre-authorized instant checkout or doctor review fallback, flexible multi-cycle refill payments, and dynamic clinic-configured refill reminders.
- Two-Tier Repeat Prescription Workflow: Pre-authorized repeats are auto-approved for instant invoice checkout. If pre-authorized repeats are exhausted or unset, patients can submit a repeat request directly to their prescribing clinician for clinical review without upfront payment.
- Flexible Refill Payment Options: Patients with multiple authorized repeats can choose between ordering 1 Refill Cycle or bundling all remaining cycles upfront in a single invoice.
- Dynamic Clinic-Configured Refill Reminders: Real-time "Refill Due" alerts and supply countdown badges automatically calculate remaining days of medication based on each clinic’s configured reminder policy.
- Repeat Confirmation Notifications: Contextual confirmation toasts clearly distinguish between instant payment redirection and clinician review submissions.
- Universal Repeat Access: The Repeat Prescription button is now available on all fulfilled prescriptions, intelligently switching between Instant Checkout and Clinician Approval modes based on prescriber authorizations.
Authorized repeat prescription direct payment checkout, remaining repeat allowance tracking, and automated dedicated order generation.
- Direct Repeat Prescription Checkout: Patients requesting pre-authorized repeat prescriptions are now instantly directed to secure checkout upon submission without waiting for secondary prescriber approval.
- Remaining Repeat Allowance Tracker: Real-time badges and counters show exactly how many authorized repeat dispenses remain on each prescription.
- Dedicated Repeat Orders: Ensured every approved repeat prescription automatically generates an independent order and invoice for immediate payment and pharmacy dispatch.
- Repeat Action Eligibility: The repeat prescription button and action are now strictly displayed only when repeat dispenses were authorized by the prescriber and the remaining count has not been exhausted.
Mandatory password change for prescriber-onboarded patients upon initial portal login, on-demand clinic search, and repeat prescription pricing alignment.
- Prescriber-Added Patient First-Login Password Change: Patients added by prescribers or clinics with auto-generated temporary credentials are now prompted to choose a permanent, secure password upon logging into the patient portal.
- Repeat Prescription Confirmation Toast: Updated confirmation notification to clarify that the request is routed directly to the prescriber for clinical approval.
- Repeat Prescription Pricing Breakdown: Resolved fee mismatch on repeat prescription orders by preventing repeat orders from inheriting the initial consultation additional fee, ensuring the itemized breakdown aligns exactly with the total amount charged.
- On-Demand Prescriber Onboarding Clinic Search: Removed redundant clinic API fetch on initial page load. Clinics are now fetched on-demand with debounced server-side search directly within the Stage 3 clinic selector.
Platform live auto-refresh deployment sync, stale chunk crash recovery, and seamless in-app release notifications.
- Live Deployment Watcher: Seamlessly alerts active users when new platform features or hotfixes go live without interrupting in-progress tasks.
- Intelligent Background Sync: Automatically updates inactive background tabs so users always return to the fresh release.
- One-Click What's New Access: Quick link directly from update prompts to review release notes and changes.
- Stale Chunk Recovery: Automatically intercepts and reloads if cached asset hashes are refreshed on Vercel edge CDN, preventing navigation errors.
PDF invoice layout alignment improvements, official GoWello brand logo integration on consultation invoices, and status badge centering.
- Invoice & PDF Download Alignment: Fixed vertical text offset in status badges ("✓ PAID IN FULL", "PAYMENT PENDING") and settlement cards ("PAID", "DUE") during PDF export and in-app views in consultation and order invoices.
- Official Brand Logo on Consultation Invoices: Replaced placeholder icon with the official high-resolution GoWello brand logo.
Major clinical profile upgrade with structured GP address fields, auto-fill capabilities, repeat prescription form validation enhancements, and branded error experiences.
- Structured GP Surgery Address: Replaced free-text address with structured House Name/No, Address Line 1, Address Line 2, City, Postcode, and Country fields.
- One-Click "Same as personal address" Auto-Fill: Easily populate registered GP surgery address from your primary verified personal address.
- Branded 404 Disconnected Experience: Custom 3D illustration and seamless navigation back to home.
- Interactive Table Refresh Controls: One-click refresh buttons across orders, prescriptions, and consultations tables.
- Repeat Prescription Modal Validation: Resolved stale form state initialization on modal open, preventing cryptic "Required" validation errors on repeat requests.
- SSR Hydration Mismatches: Fixed sessionStorage and timestamp state initialization causing client/server mismatch warnings.
- Invoice Multi-Rx Approvals: Enhanced API envelope extraction to accurately evaluate all prescriptions in combined orders.
- Postcode Typography Consistency: Standardized font family across all postcode inputs and badges to match form aesthetics.
- Strict Numeric OTP Validation: Enforced 6-digit numeric input validation to prevent invalid character inputs.
- Compact Patient Portal Footer: Minimized footer inside authenticated patient portal routes to a streamlined regulatory bar, maximizing screen real-estate.
Prescription workflow polish, patient activity logs, and consultations performance improvements.
- Repeat prescription count indicators and status tracking.
- Document viewer for signed medical prescriptions.
- Prescriber display fallback for multi-specialist consultations.
- Star rating visual flickering on completed consultation cards.
- Refined avatar cropping and instantaneous navbar profile picture synchronization.
Initial release of the GoWello Patient Web Portal featuring consultations booking, digital prescriptions, and personal health record management.
- Secure NHS & Private patient onboarding.
- Telehealth video consultations integration.
- Digital prescription fulfillment and delivery tracking.
- Secure Stripe card payment gateway.