Added (2026) year tag to remaining public pages missed in earlier passes: 16 Guides pages with DynamicSeoHead titles (including & entities that the earlier sed pattern skipped) — DoBracesHurt, LifeWithBraces, OrthodontistVsDentist, TeethWhiteningAfterBraces, AreYouTooOldForBraces, NhsOrthodonticWaitingList, DoYouNeedBraces, HowLongDoBracesTake, BracesForAdults, BracesForCrossbite, BracesForTeenagers, ClearAlignersForCrossbite, OrthodonticCostEstimator, OrthodonticGlossary, OrthodonticQuoteOnline, OrthodontistVsDentist, RetainersAfterBraces. Also updated GuidesHub, SupportHub, SupportRequest, SmileVisualisation, and Find.
Change Log
2026-05-20
Development
Development
Added NhsHub FAQ section (7 questions with FAQPage JSON-LD schema) covering IOTN scoring, who qualifies, waiting times, NHS braces cost (Band 3 charge), whether NHS covers clear aligners, going private while on the waiting list, and what to do when not qualifying. NhsHub previously had no FAQs.
Development
Expanded FAQ answers across three hub pages to support featured snippets: (1) CostsHub — all 8 FAQ answers expanded from ~35 words to 100–150 words each, with specific UK price ranges, APR guidance, and quote comparison checklists. (2) GuidesHub — all 7 FAQ answers expanded from ~30 words to 100–140 words each, covering when to use guides vs clinical assessment, adult eligibility, NHS rules, and remote quote process. (3) TreatmentHub — all 8 FAQ answers expanded from 1–2 sentences to 100–150 words each, covering appliance types, adult treatment, remote assessment limits, cost factors, and oral health impact. Also added FAQ section (6 questions with FAQPage schema) and (2026) year tag to CompareHub, which previously had no FAQs.
Development
Added (2026) year tag to page titles across remaining public sections: Homepage, Brands hub + 4 brand pages (Invisalign, ClearCorrect, Spark, SureSmile), NHS hub, Patient pages (Locations, Locations A-Z, IOTN Checker, About Patients), and 3 Clinician landing pages (About, Dental Monitoring, Remote Assessment). Completes year-tag coverage across all static-title public pages.
Development
SEO improvements across multiple public pages: (1) Fixed typo "typica pricing" → "typical pricing" in CostsHub hero. (2) Fixed GuidesHub using wrong OgImage constant (was TreatmentHub, now GuidesHub) — added Og.GuidesHub constant to Constants.Routes.cs. (3) Expanded ProblemHub FAQs from 3 to 7, with detailed answers covering treatment duration, adult suitability, NHS eligibility, risks of untreated problems, and treatment selection — matching the depth of other hubs. (4) Improved Locations hub meta description from 69 chars to a keyword-rich 140-char description. (5) Added Speakable() method to SeoCanonical.cs generating SpeakableSpecification schema; wired into CostsHub with .seo-speakable CSS class on hero text. (6) Expanded all 8 Compare pages from ~600-word stubs to 1,200+ word pages — each section body expanded to 100–150 words and FAQ answers expanded from 1–2 sentences to 75–150 words each, covering suitability, cost, clinical risk, and who each option suits.
Development
Two new public pages: (1) Orthodontic Glossary (/guides/orthodontic-glossary) — plain-English definitions for 50+ orthodontic terms (archwire, IOTN, overbite, retainer, etc.) with FAQPage schema and internal links. (2) Cost Estimator (/guides/orthodontic-cost-estimator) — interactive Blazor tool that calculates a UK price range based on treatment type (metal/ceramic/lingual/aligners), case complexity (mild/moderate/complex), and location (London vs rest of UK). Both pages added to the Guides Hub index and the public search index.
Development
Type="article" applied to 49 content detail pages across Treatments, CostsHub, Problems, Brands, Aligners, Support, Guides, and Nhs directories — unlocking og:type="article", article:published_time, and article:modified_time meta tags. HighIntentSeoPage component also updated (covers ~40 guide pages via the shared template): now passes ArticlePublishedUtc and ArticleModifiedUtc defaulting to June 2024 / May 2026.
Development
Content depth improvements on three high-traffic pages: (1) Braces.razor — added full comparison table (metal/ceramic/self-ligating/lingual with brands, costs, best-suited-for), step-by-step treatment journey section, and dietary/oral-hygiene guidance with safe/avoid food lists. (2) ClearAligners.razor — added major brand comparison table (Invisalign/ClearCorrect/Spark/lab systems) and daily-life guide covering eating, cleaning, tray progression, and lost aligner handling. (3) CostBracesCostUk.razor — added regional cost variation section (London vs rest of UK) and a quote-comparison checklist.
Development
XML sitemap now excludes thin location pages — all three location queries in SitemapEndpoint.cs (cache-key count, main sitemap recent-150, paginated locations sub-sitemap) now filter to only include locations that have FAQs or Neighbourhood data. This aligns the sitemap with the runtime noindex guard added to GeographicalLocation.razor, so Googlebot is no longer invited to crawl stub pages.
Development
Two high-impact SEO improvements: (1) Location pages with no FAQs, no nearby locations, and no neighbourhood data are now automatically marked noindex — prevents thin stub pages from being crawled and diluting the site's content quality signal. (2) E-E-A-T reviewer infrastructure added: DynamicSeoHead now accepts Reviewer, ReviewerUrl, ReviewerJobTitle, and ReviewedDateUtc parameters; when set, injects a reviewedBy Person node and dateModified into the page's WebPage JSON-LD (SeoCanonical.InjectReviewerJsonLd). A shared _ArticleReviewer component displays "Medically reviewed by [Name], [Title] · Last reviewed [Month Year]" on any guide or treatment page.
Development
Five further SEO fixes: (1) Removed redundant x-default hreflang tag — it duplicated en-gb and sent a confusing region signal. (2) BlogPosting mainEntityOfPage @id now uses the /#webpage fragment to correctly reference the WebPage graph node. (3) LocalBusiness on all geographical location pages now includes areaServed (location name + county) to strengthen local SEO signals. (4) Organization schema now includes areaServed: "GB" at the top level. (5) Page title max length raised from 60 to 65 chars, giving longer titles room to include the brand name without truncation.
Development
Three SEO fixes: (1) Description padding no longer appends "Explore options in " — which produced nonsensical phrases like "Explore options in How Long Do Braces Take" — replaced with a clean "Start online in minutes with Virtual Consultant" CTA. (2) ProcessHowToTakePhotos OgImage changed from the generic home image to user-journey.png. (3) Invisalign page OgImage corrected from problem-hub.png to treatment-hub.png.
Development
Fixed duplicate WebSite JSON-LD node across all public pages. BuildWebPage was emitting a redundant WebSite graph node on every page alongside the always-present WebSiteJsonLd script block. Removed the inline WebSite node from BuildWebPage; the definitive definition with potentialAction (SearchAction) in WebSiteJsonLd is now the sole source.
2026-05-19
Development
Added NHS Hub (/nhs) — a new content cluster consolidating all NHS orthodontic content: waiting list guide, NHS vs private comparison, eligibility checker, IOTN score checker, NHS braces cost, and geographical finder. Hub includes urgency CTA (2–5 year wait messaging) driving to private assessment. Cross-links added from NhsOrthodonticWaitingList and NhsVsPrivateBraces pages.
Development
Added Brands Hub (/brands) and four brand deep-dive pages: Invisalign (/brands/invisalign), Spark Aligners (/brands/spark-aligners), SureSmile (/brands/suresmile), and ClearCorrect (/brands/clearcorrect). Each brand page includes comparison tables, sidebar cost cards, FAQ schema, JSON-LD, and varied CTA styles for conversion testing. InvisalignAlternatives guide updated with links to all brand pages.
Development
Added three new guide pages targeting high-intent UK orthodontic keyword gaps: Braces for Crossbite (/guides/braces-for-crossbite), Clear Aligners for Crossbite (/guides/clear-aligners-for-crossbite), and Are You Too Old for Braces? (/guides/are-you-too-old-for-braces). All three pages include FAQ schema, JSON-LD, canonical URLs, sitemap entries, public search index entries, and internal links. Crossbite problem page updated with guide links.
Development
Added .elig-sidebar-stack CSS class — sticky sidebar cards now stack sequentially on scroll instead of overlapping. Applied to all 10 existing guide pages with sidebars. New guide pages use the pattern by default.
Development
Added WebSite + SearchAction JSON-LD node to home page for Google Sitelinks Searchbox eligibility. Node includes potentialAction pointing to /find?q={search_term_string}.
Development
GuidesHub CollectionPage bug fixed — was passing a plain object as about on a default WebPage node; corrected to pageType: "CollectionPage" to match the other hub pages.
Development
Added HowTo JSON-LD schema to all four support pages (BrokenBrace, LooseBracket, OrthodonticPain, WireStickingOut) — step-by-step "what to do" content now surfaced as HowTo nodes in @graph for rich result eligibility.
Development
Added TreatmentsTeethStraightening and GuideOnlineOrthodontistUk to IndexableUrlCollector static URL list to keep Google Indexing API submissions in sync with sitemap.
Development
Social channel pages (Facebook, Instagram, LinkedIn, TikTok, YouTube, SocialHub) set to noindex — thin redirect pages should not be crawled. Removed from sitemap static list. Added NoIndex parameter to HighIntentSeoPage template so any page using the template can opt out of indexing.
Development
Added two missing routes to sitemap static list: TreatmentsTeethStraightening and GuideOnlineOrthodontistUk.
Development
Five hub pages corrected to emit CollectionPage JSON-LD type instead of default WebPage: TreatmentHub, ProblemHub, CostsHub, GeographicalLocations, BlogHub. GuidesHub was already correct.
Development
Blog post JSON-LD corrected: BlogPosting node now emits as a top-level @graph entry (was incorrectly nested as about inside WebPage), @context removed from the node (redundant inside @graph), and page type changed from WebPage to Article for Google article rich results eligibility.
Development
Extended HighIntentSeoPage with HowTo schema type (uses Sections as ordered steps). Applied to CompareOrthodontists and OnlineOrthodonticConsultation for step-list rich result eligibility.
Development
Added SchemaType parameter to HighIntentSeoPage template, enabling per-page MedicalProcedure or MedicalCondition JSON-LD schema injection alongside existing WebPage + FAQ + BreadcrumbList. Applied MedicalProcedure to 7 treatment pages (BracesNearMe, ClearBracesNearMe, AdultBracesNearMe, RetainersNearMe, ReplacementRetainers, TeethStraightening, EmergencyOrthodontistNearMe) and MedicalCondition to 7 problem pages (CrossbiteTreatmentOptions, UnderbiteTreatmentOptions, OverbiteTreatmentCost, CrowdedTeethTreatmentCost, GapsInTeethTreatmentCost, RetainerDoesNotFit, ClearAlignerNotFitting).
Development
Footer and navigation improvements: footer background now adapts to light/dark theme using CSS surface variables; removed forced white-text overrides so colours inherit correctly in both modes; slimmed footer links down to hub pages and key actions; email address in "Get in Touch" no longer wraps awkwardly; Log In button in the desktop nav bar no longer wraps on intermediate screen sizes; Log In link added to the mobile nav menu below the Virtual Consultant home link.
Development
Public hub page visual polish: section headings (h5/h6 on Treatments, Problems, Costs) and FAQ headings now render in the primary colour. The three category browse cards on the Problems hub are consolidated into a single grouped card with dividers. Inline body text on Treatments and Costs pages gains cross-links to related hub pages. The explore-glow radial gradient is boosted for stronger visual pop across all showcase cards.
2026-05-18
Development
Postcode location pages temporarily removed from the UI: /postcodes and /postcodes/{slug} routes deleted, all nav links and cross-page buttons removed (NavMenu, desktop menu, home page, Find hub, Orthodontist Near Me, Braces Cost Near Me), and postcode data-loading sections removed from geographical location and county pages to prevent queries against the now-empty PostcodeLocations table.
Development
High-intent SEO content expansion: added reusable high-intent public page support and new pages across guides, treatment, problem, and cost clusters, including online orthodontic consultation, private orthodontist costs, NHS vs private braces, braces payment plans, clear aligners vs Invisalign, braces near me, treatment-cost problem pages, and near-me cost pages. Hubs, related-pages components, search index routes, and sitemap static URLs were updated so the new content is discoverable and internally linked.
Development
Robots.txt tightened for public SEO crawling while reducing crawl waste from private, account, checkout, quote, consultation, evaluation, support, framework, PWA, and tracking URLs. The quote evaluation entry point (/evaluations/quote) is now explicitly allowed so search crawlers can reach the public quote flow without opening the wider evaluations area.
Development
Cost and location SEO improvements: added further UK cost, guide, treatment, and problem pages; expanded guide/treatment/problem/cost route coverage in sitemap generation; cached hot location, postcode, county, eligibility-filter, and sitemap lookup paths; added geolocation indexes; extended public HTML caching to key public routes with a short browser cache window; added EF compiled queries to postcode and geo service hot paths; cached all postcode browse methods (all/by-letter/by-county); tightened memory cache compaction to reduce GC pressure under crawler load; and increased postcode/geolocation page cache TTL to 24 h (individual pages) and 6 h (browse/county lists) since page content is static and only varies by slug.
2026-05-17
Feature
Education gamification: three new patient achievements added — Graduate (🎓 complete your first course, 150 XP), Knowledge Seeker (📚 complete 5 lessons, 100 XP), and Dedicated Learner (🔥 maintain a 3-day learning streak, 125 XP). When a patient finishes the last lesson of a course, a celebration dialog pops up with an animated 🎓 emoji, course title, streak chip, courses-completed count, and an "Achievement Unlocked!" banner when a threshold is crossed. Buttons navigate back to learning or directly to the Achievements profile view. Unlocked education achievements now appear as gold chips at the top of the Education Center dashboard.
Feature
Patient Education System launched. Practices can create course libraries (Course → Module → Lesson) and assign them to patients or staff. Includes multi-tenant templates (parent → child inheritance), progress tracking (status, time, acknowledgement), and assignment states (Assigned, In Progress, Completed, Overdue). Supports due dates, notifications, and course versioning. New Education Manager role added. Education Activity Centre (/education/activity) provides filtered views, stats (assigned, completed, overdue, avg %), and CSV export. Gamification via daily streaks applies to all users. Three starter courses included. Patients access via /patient/education; staff via /my-learning. Controlled by EducationEnabled flag (off by default).
Feature
Education Center updates: renamed from “My Learning” to “Education Center” (/education-center). Moved access to avatar dropdown (patients and staff). Added to Manage Profile under “My Achievements” when enabled. Course editor now includes Actions drawer with “Send to All” to assign to all users (patients or staff) and trigger email/push notifications. New SmsEducationAssignment setting adds optional SMS on assignment, with billing tracking.
Feature
Education Center updates: assignment emails now use non-expiring magic login links (one-click access, no password). Activity filter panel now scrolls correctly on small screens. Added Help Centre article “Education Module Guide” covering structure, creation, assignment, reporting, learner view, templates, and roles.
Feature
Education Center updates: navigation restructured — Library under Organisation, Activity moved to Activity Center, Education group removed. Education Center added to patient sidebar (with incomplete badge) and Organisation for staff; removed from avatar menu. Profile now embeds Education Center inline. Activity stats redesigned. Course rows now include Clone and Deactivate actions. TreatmentStage removed — replaced by Audience (Patient/Internal/Both). Editor improvements: dual-audience selection, simplified layout, single Save, improved actions, confirmations, helper text, real-time title updates, company picker, and separate “Assign to All” / “Send to All” options.
Development
Postcode SEO/UX updates: /postcodes now paginates (10 per page) using GetOutwardBrowsePaged, replacing large initial loads. Added Prev/Next navigation, counts, and prefix filter with debounce. Outward pages now paginate full postcode grids (24 per page). GetFullChildren supports paging. SeoCanonical.LocalBusiness() now includes areaServed, and pages emit enriched schema data. Added “Browse Postcode Pages” internal links across key content pages.
Development
Postcode SEO/internal linking updates: NearbyAreas chips now link to /find?q={area} for crawlable links. Added “Find Orthodontists Near [Postcode]” CTA. County link added to sidebar (/locations/county/{slug}). New GetOutwardBrowseByCounty powers county pages with postcode grids. Internal link builder now injects /find?q={postcode} as primary CTA. Outward pages show “Showing X of Y” when capped; GetFullChildCount added.
Development
Introduced trading name for improved visibility in search engine results when searching for the business name.
Development
Playwright tests now fully work as part of the CI/CD pipelines.
2026-05-15
Improvement
Public page performance improved by removing eager script preloads. PWA and push scripts now load only for authenticated users. WebAuthn scripts limited to auth routes. Public pages remain prerendered without unnecessary overhead.
Improvement
Location page section styling refined.
Improvement
Reminder jobs hardened to handle missing or stale data. All reminder types now validate related records before sending notifications or writing logs.
Development
Postcode crawlability, performance, and discovery improvements: sitemap generation now uses offset pagination (5,000 rows per page via OrderBy(Id)) instead of loading 1M+ slugs into memory, removing OOM risk. Added three composite covering indexes for browse, child lookup, and location queries. Optimised GetOutwardBrowse count query by replacing the 300-item IN clause with a single correlated subquery. New GetOutwardBrowseByLetter method enables filtering by first letter. /postcodes now includes an A–Z filter so all ~3,000 outward codes are internally linked. Added “Browse Postcodes” links to homepage, desktop menu, and mobile nav.
Development
New public page /dental-monitoring targeting the dental monitoring keyword cluster. Covers overview, benefits, workflow on VCO, and includes full FAQ with JSON-LD (FAQPage, BreadcrumbList). Added “Dental Monitoring” quick-link to clinician explore section.
Development
Help Center updates: added “General Guides” with two Scribe walkthroughs (Admin: Create Patient & Evaluation, Patient Journey). Added missing Guidde guide for sending evaluation feedback. Renamed “Create a patient” to “Add and Configure Patients”. Introduced “Feature Guides” section divider.
Development
SEO and load performance improvements: sitemap now emits content-specific changefreq/priority. Moved all public page stylesheets into HeadContent. DynamicSeoHead now supports author meta (used on blog posts). Blog thumbnails include width/height to prevent CLS. Added sitemap autodiscovery and GA dns-prefetch. Cleaned redundant robots.txt rules. Added HowTo JSON-LD to braces duration guide. Blog hub now emits rel=prev/next. Breadcrumbs added across key public pages.
Development
Completed breadcrumb coverage for remaining public pages (guides, NHS eligibility, smile visualisation, comparisons, support pages). Added guide cross-linking so all treatment and problem pages link to relevant guides.
Development
Breadcrumbs added across all remaining public content (guides, costs, hubs, treatments). Homepage schema enhanced with MedicalOrganization, sameAs, contactPoint, description, foundingDate, and structured logo to strengthen E-E-A-T.
Development
Improved null-safe DTO/entity mapping across core domains. Added targeted tests for mapping resilience and paid-plan access behaviour.
Development
Improved OG image fallback: pages without a specific image now use the homepage OG image instead of the default logo for better link previews.
2026-05-14
Development
Comprehensive on-site SEO improvements for domain authority signals: (1) Visual breadcrumbs (<Breadcrumbs> component) added to all 7 treatment pages and all 12 problem pages. (2) Cross-category internal linking expanded — treatment related-pages now include 7 specific problem links; problem related-pages now include 6 specific treatment links. (3) Author profile pages (/blog/author/{slug}) added with Person JSON-LD and E-E-A-T signals; author sitemap sub-group (/sitemaps/authors/*.xml) added so crawlers can discover author pages. (4) Hero image LCP preload (<link rel="preload" as="image">) added to DynamicSeoHead for article-type pages. (5) MedicalProcedure / MedicalCondition JSON-LD added to treatment and problem pages. (6) IndexNow switched from batch POST (10,000 URLs) to per-URL GET streaming with 500ms delay. noindex audit confirmed clean — only admin/checkout pages carry noindex.
Development
Added _ProblemCostGuidance reusable component to the problems hub. Each of the four primary problem pages (crooked teeth, crowded teeth, gaps in teeth, overbite) now includes a "Treatment Costs — What to Expect in the UK" section with rough private cost ranges for clear aligners and braces, links to the relevant cost pages, and NHS eligibility context including a link to the IOTN checker.
Development
New SEO content pages targeting high-volume UK orthodontic keyword gaps: Braces for Teenagers (/guides/braces-for-teenagers), Do Braces Hurt (/guides/do-braces-hurt), Life With Braces (/guides/life-with-braces), Orthodontist vs Dentist (/guides/orthodontist-vs-dentist), Teeth Whitening After Braces (/guides/teeth-whitening-after-braces), NHS Braces Cost (/costs/nhs-braces-cost), and Fixed Retainers (/treatments/fixed-retainers). All pages include full-length content, FAQ sections with FAQPage JSON-LD, breadcrumbs, internal cross-links, and sitemap entries. GuidesHub, CostsHub, and treatments related-pages component updated to surface new content.
2026-05-09
Feature
Smile visualisation introduced at /tools/smile-visualisation: allows patients to upload a photo and preview how their teeth may look at the end of orthodontic treatment, with AI-generated illustrative results.
Feature
Biometric sign-in (passkeys/WebAuthn) is now available for patients and clinicians, enabling secure login with Face ID, fingerprint, or Windows Hello instead of passwords or magic links. Users can register and manage passkeys from their security settings, with the option automatically hidden on unsupported browsers for a smooth fallback experience 🔐
Improvement
Smile Preview enhancements: rotating tips during AI generation, inline face and lighting advisory on image upload, browser navigation guard while generating and a patient history page at /my-smile-previews. Logged-in patients see a Smile Previews card on their home dashboard and a nav link. The admin dashboard now shows a Smile Previews Generated stats card (gated by feature flag).
Improvement
Smile visualisation with public lead capture before generation, provider-swappable OpenAI/stub tooling, billable usage tracking, secure patient links, company settings, admin patient history, sitemap/search integration, and clear illustrative-preview disclaimers.
Improvement
Smile Preview — reCAPTCHA v3 protection on the public generation form, patient regeneration (up to a company-configured limit per preview, each billable), shared panel UI across secure and patient detail views, and company settings for enabling regeneration and configuring the maximum number of regenerations allowed.
Development
New content pages targeting keyword gaps: Ceramic Braces (/treatments/ceramic-braces), Lingual Braces (/treatments/lingual-braces), Invisalign Cost (/costs/invisalign-cost), and Retainers After Braces guide (/guides/retainers-after-braces). All cross-linked, sitemap-listed, and footer-linked.
Development
Guides hub added at /guides with two new SEO-focused patient guides (remote orthodontic quotes + NHS waiting lists), both schema-enabled, cross-linked, and integrated into nav/footer.
Development
SEO improvements: noindexed and removed 37K thin location pages from sitemap, improved location metadata for CTR, and fixed redirect bug causing 5xx errors on paginated URLs.
2026-05-08
Feature
Stock take feature added for material products: enable in company settings, assign Stock Taker role, perform and save draft counts, complete stock takes with adjustments, view stock history, and trigger low stock alerts when thresholds are met.
Feature
Staff achievements system added: users earn XP across activity, view tiers and progress on /my-achievements, see role-aware achievements and tier badges, while admins get a filtered, printable leaderboard report ranking users by XP.
Bug
Patient email updates now enforce uniqueness against linked user accounts, and API upserts return a structured 409 Conflict when the email is already in use, enabling reliable duplicate handling.
2026-05-07
Feature
Quotes can now trigger an SMS notification to patients. When the new "SMS - Send Quote" company setting is enabled, sending a quote also sends the patient an SMS with a short link to review it. Disabled by default; requires a valid patient phone number.
Improvement
Automated usage invoicing now runs daily and aligns with each company’s Stripe billing cycle, with invoices finalized immediately, a 14-day grace period enforced via webhooks, automatic access control on non-payment, and support for re-invoicing voided usage 🔄
2026-05-05
Improvement
SEO improvements across public pages: FAQ JSON-LD schema added to key patient-facing pages (home, treatment hub, costs hub, Invisalign, guides), hreflang en-GB tags added site-wide, og:image:type now derived dynamically from image format, WebSite schema with SearchAction added for sitelinks searchbox eligibility. Three new patient guide pages published: "How Long Do Braces Take?", "Do You Need Braces?", and "Braces for Adults". Invisalign sub-pages expanded with detailed UK-specific content and keywords. Internal links improved for orphan pages.
Improvement
Patient triage category and sub-category selection has been restyled with clearer selected states, hover treatment, and a more contained card layout.
Bug
Patient updates now preserve the existing linked user account when the submitted patient payload does not include a user ID. Changing a patient's email also updates the linked user record consistently and prevents duplicate patient or user emails within the practice.
Bug
Scheduled evaluation request reminders now persist correctly when reminder settings are updated, including creating the expected reminder rows for enabled weekly reminder schedules.
2026-05-04
Feature
Introduction of the Engagement Report that provides clear visibility into user activity and engagement trends across the platform. The report surfaces key metrics including active users, action completion rates, average response times, and workflow usage. Data can be filtered by date range and exported, enabling deeper analysis and reporting.
2026-05-03
Feature
Practice Details Page. Practices can enable a patient-facing “My Practice” page from Company Settings → Features. Enabling this introduces a Practice Profile section allowing configuration of public contact details (phone, email, website), parking info, reception instructions, directions notes, assigned Treatment Coordinator, and team members (including job title, bio, and display order).
Feature
“My Practice” patient page. Displays practice information via a clean public page including an interactive OpenStreetMap embed with directions, current weather (Open-Meteo), and team profile cards. The navigation link appears automatically when enabled and minimum data requirements are met (address + at least one contact method).
Improvement
Dashboard now only displays active items — excluding anything deactivated directly or via a deactivated parent (e.g. an evaluation request linked to a deactivated patient).
Improvement
Restyled the patient quote approval pages; quote overview, quote extras and quote acceptance, making the content more engaging and easier to understand and consistently styled.
Improvement
Updated the default quote product image presented to patients.
Improvement
Company settings help text now displayed via a mini modal.
Improvement
When linking a quote to an evaluation request, the list of options give more information such as date and status of evaluation request.
Improvement
Dashboard no longer counts quotes without an order as an actionable item.
Improvement
Change log and help center background gradient fix applied for both light and dark theme.
2026-05-01
Feature
News Bulletins are now available. Practices can create announcements targeted at specific audiences (all staff, all patients, everyone, or specific roles), pin important bulletins, set expiry dates, and optionally share bulletins with child practices. Bulletins appear on the admin dashboard and patient portal.
Improvement
News Bulletins now support Draft, Published, and Archived statuses. Bulletins must be explicitly published before they appear on the dashboard or patient portal. Publishing shows a confirmation dialog with an optional push notification. The bulletin body now uses a rich text editor. Staff and patients can click through to a dedicated article view page, and admin lists now show a read count per bulletin along with a status filter bar.
Improvement
Menu will show an unread bulletin count badge for each relevant audience segment, so staff and patients can easily see when new information is available.
Improvement
When a patient has a single outstanding evaluation request, a banner is displayed with a clear link to help them quickly complete the required action.
Improvement
Video consultations links are now only shown when the company has the feature enabled and configured.
2026-04-30
Improvement
Scheduled evaluation requests now display indicator chips in the heading: child requests show a "Scheduled Follow-Up" chip linking back to the parent, and parent requests show whether they have pending or completed scheduled reminders. Users can now cancel individual or multiple unsent scheduled reminders directly from the evaluation request page.
Improvement
Mailbox triage now gives practices more control over post-processing behaviour. Each mailbox connection can be independently configured to mark processed emails as read (on by default) and optionally move them to a named folder after triage. Email-to-category matching has also been improved: subject line matches are now weighted more heavily than body text, and the engine now identifies the best matching sub-category within a matched category.
Improvement
Public SEO coverage has been improved. Invisalign pages are now included in public prerendering, key public content sections receive cache-friendly HTML headers, the locations hub is included in the sitemap, and aligner/Invisalign pages are available in public site search.
Bug
Usage report date range filters now correctly include items created on the "date to" day rather than excluding them.
2026-04-29
Feature
Supplier management is now available for practices, including supplier records, product supplier assignments, and product list filters for supplier-specific products or products with any supplier assigned.
Bug
Issue with footer logo dynamic resizing resolved.
2026-04-28
Improvement
The address auto-complete component has been updated, improving address suggestions and formatting.
2026-04-27
Feature
Reminders and automations are now fully configurable per practice. Replace the fixed set of on/off reminder flags with flexible schedules — set any number of reminders at custom offsets (minutes, hours, days) before or after key events such as evaluation requests, quotes, consultations, and issue replies. Each schedule can independently enable or disable push notifications. A global 24-hour cooldown across all patient comms is enforced automatically. ⏱
Feature
A new Automations section is available in practice settings, replacing the previous hardcoded reminder checkboxes. Add, toggle, and delete reminder schedules per topic with immediate effect. ⚙️
Feature
The dashboard Stats tab now shows an Upcoming Comms grid — all automated reminders expected to send within the next 24 hours, with patient name, type, schedule description, expected send time, and push notification indicator. 📊
Feature
Evaluations can now be marked as the treatment-start evaluation for a practice. Sending that evaluation sets the patient's treatment start date when it has not already been recorded. 🦷
Feature
You can now download all evaluation request photos relating to a patient record from the patient actions sidebar. 📸
Feature
Patient records now include a photo export action that downloads all available evaluation request and issue photos for the patient. Owners can also navigate from transferred patient copies back to the original patient record. 📁
Feature
Webhook list page added to Activity Center. This means users can now view both the webhook results and webhooks for all their associated practices. 🔗
Improvement
Evaluation requests now complete against the DateAdminCompleted rule consistently. Practices without treatment-plan requirements automatically complete requests when every photo is valid, while treatment-plan-required practices continue to route valid-photo requests to admin completion unless force completed.
Improvement
Parent practice users and owners can now view, set, save, and regenerate API credentials for child practices. Child practice users no longer receive those credential values in the practice API panel.
Improvement
Dashboard todo cards now match the stats card treatment with a bottom action bar, direct section navigation, quote and order cards restored, and improved spacing around the reporting period.
Improvement
Admin list pages now show contextual descriptions under their headings so users can understand what data each page contains and how it fits into the wider workflow.
Improvement
Practice theme defaults are now honoured for users until they set their own theme preference.
Improvement
Quotes and orders list pages now show key stat cards above their data grids for faster operational review.
Improvement
Overhaul of the practice management area with helpful info to better describe the different configuration settings.
Improvement
Practice settings have been reorganised into clearly defined categories for better usability and consistency, making it easier to customise your Virtual Consultant experience. Sections include: API, Automations, Branding, Configuration, Features, Site Customisation, Reminders, Video Consultation Settings, Usage, and System. 🧩
Improvement
Practice settings page will prompt when user makes change without saving and tries to navigate away.
Improvement
When a new child practice is created, it now inherits the parent practice's settings by default, saving time on configuration and ensuring consistency across locations.
Improvement
You can now manage team members, products, evaluations and vouchers directly within the practice management area.
Improvement
Dashboard data now excludes data associated with patients where their associated practice has been deactivated.
Improvement
Activity centre pages where the feature is not enabled will now alert the user and prevent further actions.
Improvement
Renamed dashboard 'TODO' tab to 'Actions'.
Improvement
Dashboard shows reporting period on every tab location for consistency.
Improvement
The public change log header now has mobile horizontal padding so the title and menu affordance do not sit against the viewport edge.
Bug
Deactivated patients now have their linked user account deactivated with a refreshed security stamp, and dashboard counts/lists avoid returning actions, reminders, issues, quotes, orders, and patient rows for deactivated patient records.
Bug
Issue preventing roles assigned to user from showing in the team member list has been resolved.
Development
Seed data now utilises static data for seeding rather than hardcoded values, improving maintainability and readability of the seed scripts.
2026-04-26
Feature
Feature toggles have been introduced, allowing practices to enable or disable functionality at a practice level, helping reduce interface clutter and tailor the experience for their users. 🎛️
Improvement
Patient list can now be filtered by outstanding issues.
Improvement
Patient list now shows the postcode beneath the patient name, improving readability and mobile layout.
Improvement
Evaluation requests list can now filter records where photos have been uploaded. Further additional filters based on pending action type.
Improvement
Significant changes made to the main navigation menu including link renaming for clarity, better grouping and improved styling.
Improvement
Marketing data now shows key stat information and each record now links directly to patient. You can also expand the row to display all marketing details at a glance.
Improvement
Company has been renamed and relinked across the site to 'Practice'. 📛
Improvement
Dashboard key stats values now centered with improved styling for dark theme.
2026-04-25
Feature
Added a new App Notifications admin list page, giving users a dedicated view to browse in-app notifications with search, read/unread filtering, export, and direct navigation from each notification. 🔔
Improvement
Patient sidebar navigation updated: Support Hub renamed to Support, Blog icon changed to an article icon, and four smaller quick-links added below the divider — About, Clear Aligners, Prices, Treatments, and Problems.
Improvement
Dashboard Communications tab now shows emails, SMS and push notifications sent to team members as well as patients.
Improvement
The Emails list now shows the recipient address, making it easier to identify who each email was sent to at a glance.
Improvement
All tab header bars across the app are now swipeable on touch devices — swipe left or right on any tab bar to scroll through tabs without needing the arrow buttons. Applies site-wide to every tab group.
Bug
Issue preventing photo export has been resolved.
2026-04-24
Feature
Blog management now includes JSON-based create and update workflows. ✍️📰
Improvement
Analytics loader extracted into a dedicated analytics.js file and moved out of the inline HTML; service worker registration, logout helper, and consent-gating logic consolidated into the JS bundle. Blazor framework scripts and the JS bundle now use <link rel="preload"> hints so browsers fetch them earlier in the load waterfall.
Improvement
Homepage CSS is now loaded asynchronously via a preload hint rather than being bundled into the shared CSS bundle, so returning visitors on other pages don't download it unnecessarily. Blog and footer images have loading="lazy" to defer off-screen image fetches.
Improvement
Page speed and Core Web Vitals improvements on the public homepage: critical layout CSS is now inlined to eliminate flash of unstyled content, the LCP hero heading renders immediately without an opacity animation delay, footer logo has explicit dimensions to prevent layout shift (CLS), and MudBlazor button transitions are overridden to GPU-composited properties only to reduce main-thread style recalculations.
Improvement
Versioned CSS and JS bundles, fonts, and images now receive appropriate long-lived cache headers — bundles are immutable (1 year), fonts and icons 30 days, images 7 days.
Improvement
Heading hierarchy on the public homepage corrected throughout — section headings and card titles now render with semantically correct h2/h3 tags while preserving their visual Typo styles, fixing the heading-order accessibility audit failure.
Improvement
A thin primary-coloured progress bar now appears at the top of the screen during page navigation, giving a clear visual signal that a new page is loading without blocking the existing content.
Improvement
Improved blog hub paging navigation.
2026-04-21
Feature
Admins viewing an evaluation request can now upload photos and use the camera directly on behalf of a patient. Each photo slot gains an upload icon button that opens the full photo capture UI — file upload (including HEIC/HEIF), live camera capture with pose overlay, countdown timer, face detection, and brightness validation — identical to the patient-facing experience. The page refreshes automatically after a successful upload.
2026-04-19
Feature
New Help Center guide added for Scheduled Evaluation Requests, covering setup, scheduling options, and how to interpret the generated reminder list.
Feature
Monthly usage invoicing introduced. Billable usage rows can now be grouped into Stripe usage invoices, tracked by Stripe invoice ID, and processed safely by the scheduled monthly job with idempotent usage stamping.
Feature
Mailbox triage now supports per-category assignees, category-specific minimum confidence thresholds, exclusion patterns for false positives, a richer triage audit view, and re-triage of individual processed messages.
Feature
New Help Center guide added for Mailbox Triage, explaining category setup, exclusion patterns, confidence thresholds, and triage audit review.
Feature
Oral health analysis now captures four dimensions — Healthy, Plaque, Gum Disease, and Decay — and presents them as a multi-metric result panel with dominant finding, confidence threshold handling, and a manual run option when automation is disabled.
Feature
New Help Center guide added for Oral Health Analysis, covering setup, confidence threshold behaviour, result interpretation, and billing implications.
Improvement
The floating per-page drawer action is now fixed to the bottom-right of supported admin pages, so the contextual action menu remains reachable while scrolling instead of disappearing with the page header.
Improvement
Admin evaluation request pages now use a more consistent header style. Patient name is shown prominently above the email address, and the chip summary row better matches the newer patient record layout.
Improvement
"Automated Reminders" has been renamed to "Scheduled Evaluation Requests" across the admin interface for clarity. The evaluation request page now also includes a how-it-works link, clearer scheduled-send status chips, formatted send dates, and a more persistent summary after saving reminder settings.
Improvement
Company evaluation request lists have been restyled into a card-based layout with clearer status chips, photo counts, created dates, and direct access to the request detail screen.
Improvement
Billing → Usage now surfaces pending usage summary cards, grouped usage chips, a manual usage invoice action for a selected month, and a 12-month usage invoice history table to make revenue and billing support work more transparent.
Improvement
Stripe invoice webhook handling now updates usage invoice rows when payment succeeds or fails, and sends a billing failure alert to the company alert mailbox when a Stripe invoice payment fails.
Improvement
Billable SMS sending and oral health analysis are now blocked when a company is in an inactive billing state such as Payment Due or Lapsed, preventing new usage from being generated while billing is unresolved.
Development
Added the OnboardingWizardCompletedAt company-config field and migration as a forward-compatible schema prerequisite for future onboarding and first-run guidance work.
2026-04-18
Improvement
Floating actions sidebar menu icon, responsive on all device sizes.
Improvement
The Treatment Planning Suite now defaults to the current evaluation request in the patient photos filter, so only photos from the active evaluation are shown on load. A banner is displayed when the current evaluation has no uploaded photos, and other patient photos are still accessible by clearing the filter. A pose filter has also been added alongside the evaluation filter.
Improvement
When marking an evaluation request as complete in the Treatment Planning Suite, a confirmation dialog is now shown before saving. Once complete, the treatment plan is read-only; a "Revert to In Progress" button in the suite's menu restores edit access. A "Go to Evaluation Request" link has also been added to the menu.
Improvement
The treatment plan text field now auto-grows as content is entered rather than using a fixed large height. The complete/incomplete toggle now shows a caption explaining that marking complete will finalise the evaluation request.
Improvement
The photo annotator pan/move tool is now the default selected tool and appears first in the toolbar. After zooming in or out the tool automatically switches to pan so the image can be repositioned without accidentally drawing. Panning is now constrained so the image cannot be dragged beyond its edges. Zoom step increased from 10% to 25% per click, a reset button shows the current zoom percentage and resets to 100% on click.
Improvement
Audit entries for evaluation request status changes now use human-readable descriptions (e.g. "Pending Admin Completion") rather than raw enum names (e.g. "PendingAdminCompletion").
Improvement
The treatment plan timeline in the Treatment Planning Suite now orders entries by completion date descending, strips legacy HTML markup from plan text, and only shows the timeline when at least one completed evaluation with a plan exists.
Improvement
Dashboard evaluation request tabs updated: "Pending Feedback" renamed to "Requires Feedback Sending". A new "Awaiting Patient" tab shows requests where feedback has been sent and the patient has not yet re-uploaded. "Pending Review" now only counts requests that have at least one photo.
Improvement
When a patient completes their photo upload the admin team (owners and treatment prescribers) now receive a "photos ready for review" push/email notification. When an admin marks all photos as valid and treatment planning is enabled, treatment prescribers receive a "ready for treatment plan" notification instead of a generic review alert. The incorrect "ready for review" notification that was previously firing when admins validated photos has been removed.
Improvement
Sending photo feedback now automatically advances the evaluation request status to "Awaiting Patient" (PendingFeedbackCompletion) so it surfaces on the new dashboard tab.
Improvement
When all photos are marked as valid and treatment planning is disabled, the mark-as-complete dialog opens automatically.
Improvement
Marking a single photo as invalid now prompts for feedback immediately. Cancelling the prompt leaves the photo status unchanged.
Improvement
Evaluation requests can now be marked as complete directly from the sidebar, covering all workflow scenarios without requiring a treatment plan. The button adapts its confirmation message based on context: if treatment planning is enabled and a plan has been saved it confirms standard completion; if treatment planning is disabled and all photos are valid it confirms photo-based completion; otherwise it presents a force-complete option for cases such as an appointment already being booked. An optional completion note can be entered at the point of marking complete and is recorded in the patient audit trail. A "Revert to In Progress" option is also available in the sidebar when a request is already marked complete.
Improvement
Saving a treatment plan in the Treatment Planning Suite and marking the evaluation complete in one step now automatically marks the evaluation request as Complete. If the treatment plan is saved without marking complete, the owning company's admin users (Owners) receive a push/email notification that the plan is ready and the evaluation awaits final completion.
Improvement
The Treatment Planning Suite text editor has been replaced with a standard multi-line text field. This eliminates a slow load delay that previously made it appear as though the saved plan had not persisted.
Improvement
The admin summary panel on the evaluation request page now displays key details (status, photo count, created date, assessment progress, completion date, treatment plan) as compact chips, consistent with the patient record style.
Improvement
Creating a patient (manually or via the API) now checks for an existing active patient with the same email address within the same company and returns a clear error rather than creating a duplicate record.
Improvement
Dashboard todo items (evaluation requests, patient issues, quotes, orders, and company tasks) no longer show records belonging to deactivated or transferred patients.
Improvement
Additional details (custom fields) can now be added when creating a patient manually, not just when editing an existing record.
Improvement
Transferring a patient now hides the original patient record and all related actions (evaluation requests, issues, quotes, orders, and tasks) from the originating company. Only the transferred patient's details in the receiving company remain visible.
Improvement
The usage report page now shows a date range filter in the sidebar, defaulting to the current billing month. Dates can be changed and applied independently, and a reset button returns to the current month.
Bug
The evaluation request complete/incomplete toggle in the Treatment Planning Suite now correctly reflects the saved state. Previously toggling complete and saving could leave the status as "Pending Admin Completion" due to photo validity checks overriding the admin-completed date.
Bug
Reverting an evaluation request to "In Progress" no longer clears a saved treatment plan. Previously the treatment plan text was lost when toggling completion off.
Bug
Treatment plans that were previously saved as HTML (from the rich-text editor) are now automatically stripped of markup tags when re-saved, ensuring clean plain-text storage going forward.
Bug
On tall portrait photos the Annotate and Compare buttons were pushed below the visible area of the photo carousel. The image frame now flexes to fill available space and the buttons are always visible at the bottom of the card.
2026-04-17
Improvement
All card headings on the patient record (Evaluations, Quotes, Orders, Issues, Tasks) now use a consistent style.
Improvement
The patient edit form now includes an optional Date of Birth field.
Improvement
Staff can now store custom label/value pairs against a patient record — for example a practice's own patient ID, referral source, or any other internal reference. Fields are managed via an "Additional Details" option in the patient sidebar menu, which opens a modal where rows can be added, edited, and removed (with confirmation before deleting a saved entry). When any fields have been saved, a summary card appears on the patient record showing all values at a glance, with a button to open the same modal. All values are searchable from the patients list.
Improvement
Evaluation request list now includes a "Feedback Ready to Send" filter, showing all requests where feedback has been written for invalid photos but not yet dispatched to the patient.
Improvement
The Manage Billing button now surfaces the specific Stripe error when the billing portal cannot be opened, rather than showing a generic failure message. The most common cause — the Customer Portal not yet activated in the Stripe Dashboard — is now clearly indicated.
Improvement
When an owner records a manual subscription via the admin Manual Subscriptions page, a confirmation prompt now asks whether to notify the company. If confirmed, a push notification is dispatched to all Admin-role users in that company who have push subscriptions registered. If no admin push subscribers are found, the notification falls back to an email sent to the company's configured alert mailbox only. The push path uses a new SendToCompanyAdmins method that filters recipients to Admin-role users, keeping internal billing activity out of the broader staff feed.
Improvement
Photo capture flow improved. Clicking "Use photo" in the camera dialog now closes the modal immediately rather than waiting for image processing to complete. A loading spinner is shown in the photo slot while the image is being prepared, giving clear feedback without blocking the interface.
Improvement
Light theme is now the default for new users or any device without a saved theme preference. Users who have previously chosen Dark or System mode are unaffected.
Bug
Photo validity can now be toggled (valid/invalid) without being forced to enter feedback immediately. Feedback is entered separately and only dispatched to the patient when the Send Feedback button is explicitly clicked. The bulk "mark all" action also no longer errors on pose name parsing.
Bug
Saving a treatment plan now shows a success or error notification and refreshes the data. Previously the save button appeared to do nothing.
Bug
The patient profile header no longer shows a stray | separator when no postcode has been entered.
Bug
Entering a treatment plan in the Treatment Planning Suite no longer leaves an evaluation request stuck on "Pending Feedback" status.
Bug
The side navigation menu no longer auto-opens on mobile when logging in. It now only opens automatically on screens 960px wide or larger, matching the responsive drawer breakpoint. On mobile the menu remains closed until the user taps the hamburger icon.
Bug
Manual subscription access windows now expire correctly. Previously, granting a manual subscription stored the company status as Active, meaning access was never revoked when the window lapsed — the company remained permanently Active. The stored status is now set to a distinct Manual value. While the window is in the future the access resolver returns Active as before; once it lapses and no live Stripe subscription exists, the company is automatically downgraded to Lapsed. Existing manual grants will be re-evaluated at the next access check.
Bug
Manual subscription notifications now correctly fall back to the company alert mailbox email when no admin push subscribers are found. Previously the alert mailbox was not being read due to the company config not being loaded alongside the subscription record, causing the fallback to silently skip even when an alert mailbox was configured.
Bug
Push and email notifications for evaluation requests ready for review were only firing for companies with Treatment Plan Required enabled. Notifications now fire for all companies when a patient completes their submission, regardless of whether treatment planning is configured.
Development
All transactional service methods and background jobs now execute inside an EF Core CreateExecutionStrategy, making database operations resilient to transient connection failures and SQL Azure retry scenarios. Affected services include quote approval and upsert, patient upsert and import, product import, evaluation request create and update, consultation booking create and reschedule, blog and help guide upsert, company upsert and registration, and the automated evaluation request reminder job.
2026-04-16
Feature
New Owner-only Help Center guide "Stripe Subscription Operations" added at /help-center/stripe-subscriptions. Covers tier setup via Stripe product metadata, promotion code discounts, manual off-Stripe subscription windows, webhook events and activation flow, the company_id metadata contract, access status meanings, ops playbooks for common customer scenarios, and safety rails. Linked from the Help Center landing page and the Manual Subscriptions admin page — visible only to Owners.
Improvement
Stripe webhook handling hardened. A unique database index has been added to the webhook event log so retries from Stripe can no longer be double-applied, and idempotency is now race-safe. Company lookup during webhook processing now reads company_id metadata directly from the Stripe customer or subscription before falling back to legacy client reference id parsing, removing the brittle string-parsing path for new checkouts.
Improvement
Subscription activation is now driven by customer.subscription.created and customer.subscription.updated events rather than depending solely on the invoice-paid signal. Companies move to Active as soon as a Stripe subscription reaches active or trialing, with invoice-paid acting as a confirming backstop. Status mapping is centralised, so past_due, canceled and unpaid all resolve correctly without gaps.
Improvement
New product.* and price.* webhook handlers invalidate the in-process Stripe product catalog cache. Pricing, feature copy, or tier changes made in the Stripe Dashboard are now reflected in the app within seconds — no restart and no cache TTL wait required.
Improvement
Billing flow and UI consistency improved across billing pages.
Bug
Fixed outlined input label rendering issue caused by CSS overrides. Labels now float and position correctly without overlap or spacing glitches.
Bug
Resolved company settings update save error.
Development
New admin-triggered Quartz job StripeCustomerCompanyMetadataBackfillJob introduced. The job iterates every company that already has a StripeCustomerId, stamps metadata["company_id"] on the matching Stripe customer, and emails a summary to the internal notifications inbox. Safe to re-run; already-stamped customers are skipped, and customers with a conflicting metadata value are flagged for manual reconciliation rather than overwritten. Intended as a one-shot migration step to retire the legacy client-reference-id fallback.
Development
Refactored theme.css to remove unused/commented code and simplify overrides. Cleaned up input, table, and navigation styles to reduce conflicts and improve maintainability.
2026-04-15
Feature
Subscription tiers are now discovered from Stripe product metadata (tier, sort_order, feature_list, display_name, description) instead of being hardcoded. Price and feature copy can be updated in the Stripe dashboard without a redeploy. Active products are fetched once and cached in-process for ten minutes.
Feature
Checkout consolidated behind a single tier-driven flow. The service now resolves the Stripe price from the requested tier at request time, supports re-using an existing Stripe Customer when the company already has one, accepts an optional pre-applied promotion code, and stamps company_id on subscription metadata so webhooks can recover the mapping even if the client reference id is stripped.
Feature
Owners can now record off-Stripe payments (e.g. bank transfer) against a company from a new Manual Subscriptions page in the admin navigation. Each entry grants an Active window of N whole months (minimum 1), stacks on top of any existing window, and transparently takes precedence over expired or past-due Stripe state. All changes are audited and bump the company access version so access is re-evaluated.
Feature
Patient import tooling introduced for admins. Company settings now include a patient import wizard with drag-and-drop CSV upload, auto column mapping, preview, and result reporting. Imports create linked patient user accounts, validate email format and date of birth across UK/US/ISO formats, reject duplicate emails within the file or against existing accounts, and roll back cleanly on any row-level error.
Feature
Product import tooling introduced alongside the patient import flow. Admins can now bulk import products with drag-and-drop CSV upload, auto column mapping, preview, per-row validation for categories, types, cost and sale price, and structured result feedback before data is committed.
Improvement
Company access resolver now honours the manual-subscription window ahead of all other states, so a manually-paid company remains Active even if its Stripe subscription is marked expired or past-due. Stripe and manual windows stack — the later end date wins.
Improvement
Company admin pages now expose dedicated import actions for both patients and products, making large data onboarding easier to access directly from company management.
Improvement
Patient journey pages and public API endpoints received null-safety and resilience improvements, including safer busy-state cleanup on assessment and quote flows, environment-aware cookie auth behaviour, and sitemap and search optimisations to reduce unnecessary processing.
Improvement
Public Find page performance improved by reducing repeated filter and sort work during rendering, helping search results stay more responsive as content grows.
Improvement
Sitemap generation received additional guard rails and URL normalisation fixes to prevent invalid or incomplete entries from being emitted.
Development
Automated test coverage expanded with a new Playwright end-to-end test project for the patient complete page flow and additional unit tests covering public find, quote requests, sitemap generation, and the patient and product import services.
Development
Development-only authentication helpers and seed endpoints were added to better support automated browser testing and repeatable test setup.
Development
Google URL reporting tool updated to output submitted URLs directly to the console, making indexing runs easier to audit and troubleshoot.
2026-04-12
Feature
Treatment Planning Coordinator video consultations introduced. Existing patients can now book 30-minute Jitsi consultations from their dashboard, while admins can send a secure single-use booking link directly to a patient. Consultation availability is controlled by company business hours, reminder emails are supported by default, optional SMS reminders can be enabled in company settings, and child companies inherit the parent consultation business hours when created.
Feature
Rota Management Phase 1 introduced. Staff schedules can now be planned and tracked across day, week, and month views. Rota Coordinators, Admins, and Owners can create and manage rota entries for working shifts, annual leave, sickness, and general unavailability.
Feature
Help Center introduced for non-patient users. Staff can now browse role-relevant help guides, contact technical support from the help area, and find help content through global search using guide titles, content, and tags. Owners also have a dedicated Help Center CMS to create, edit, tag, and manage articles separately from the public blog.
Improvement
Treatment Planning Coordinators can be marked unavailable for holiday, sickness, or other leave periods, patients are prevented from selecting unavailable slots, and reschedules keep the assigned coordinator unless an admin explicitly reassigns the booking.
Improvement
Admin consultations include booking stats, consultation notes, completion actions, and clearer availability states. Patient and admin booking actions also now show loading states to prevent duplicate clicks during cancel, reschedule, reassign, note-save, and booking operations.
Improvement
Assignment types added to rota entries, including reception, nursing, orthodontic therapy, treatment prescribing, and admin support, allowing clearer role-based scheduling.
Improvement
Role-based filtering introduced to quickly narrow the rota view to specific staff groups.
Improvement
Week copy functionality added, enabling schedules to be duplicated forward to reduce repetitive data entry.
Improvement
Print-friendly rota view introduced for easy display within the practice.
Improvement
Multi-practice users can now switch between locations directly within the rota view without leaving the page.
Bug
Issue with encoded links to specific pages with token failing intermittently resolved by preserving text casing on URL and token.
Bug
Fixed issue preventing users from adding multiple roles for an existing team member.
Development
Introduced an overhauled cookie consent banner allowing specific permissions to be given for tracking analytics purposes.
Development
Platform highlights page introduced to showcase the key new features and benefits of the Virtual Consultant platform.
Development
Fixes to theme selection to ensure public facing pages are excluded.
Development
Option to install as PWA always available within the avatar menu unless already installed.
Development
Dashboard sections now grouped as cards for consistent styling and better visual separation.
Development
Introduced an informative clear aligners hub making it easier to find information about clear aligners and what systems are available.
Development
New sitemaps introduced for the new clear aligners pages including location based slug variant pages.
2026-04-10
Feature
PWA push notifications are now active. When installed as an app, staff and patients receive native OS notifications for key events � new patients, trial sign-ups, evaluation requests, and pose feedback. Notifications are delivered even when the browser tab is closed. Notifications still fallback to email if not available.
Feature
In-app notification centre introduced. A bell icon in the app bar shows a live unread count badge. Clicking opens a panel listing recent notifications with title, summary, and relative timestamp. Individual notifications can be marked as read by clicking them; a "Mark all read" shortcut clears the badge instantly. Notifications are always saved to the inbox regardless of whether push delivery succeeded.
2026-04-08
Feature
Theme toggle added to the avatar menu. Users can switch between Light, Dark, and Auto (follows the OS setting) � preference is saved per device. The dark theme derives its accent colours directly from the company's brand palette, using HSL lightness adjustment to ensure readability on dark surfaces while preserving the brand identity.
Feature
PWA install prompt and update notifications are now active. Authenticated users are encouraged to install the app via a banner and a shortcut in the profile menu, with dismissal resetting after 7 days. An update banner appears automatically when a new version of the app is deployed.
Feature
Treatment tracking added to patient records. Staff can now record a treatment start date (suggested automatically from quote acceptance date or patient creation date) and close a case with a treatment end date. The patient summary displays an open/closed treatment length chip for at-a-glance visibility.
Feature
New Treatment Length report under Reports. Filterable by company and date range (presets include this year, last year, last 3 months). Key stats include average, shortest and longest treatment durations, with a full per-patient breakdown table.
Development
Public API patient create/update endpoint now accepts DateTreatmentStarted and DateTreatmentEnded fields, supporting future integration with practice management systems such as OrthoTrak.
Development
Patient actions menu now split into categories.
2026-04-07
Feature
Site-wide search with intelligent autocomplete, enabling instant access to patients, quotes, tasks, and key records - significantly reducing navigation time and improving day-to-day efficiency ??
Feature
Public facing site-wide search to navigate to key public content such as locations, treatment information and blog posts.
Bug
Fix applied to resolve the intermittent circuit disconnection issue on the blog hub.
Development
Expanded deterministic location content builder with richer, slug-stable variation across SEO fields and page sections.
Development
Updated robots.txt to disallow crawling of parameter URLs to prevent crawl waste and potential duplicate content issues.
Development
Page headers slightly condensed to make better use of screen real estate.
Development
Admin pages now feature concise summaries of key information, presented in a consistent, cleaner chip-and-caption layout for improved readability and visual clarity.
2026-04-05
Feature
Multi-site company based users can now filter their actions to a specific company from the avatar dropdown. This allows users to focus on the relevant actions for a specific company when they have access to multiple companies.
Development
Major dashboard overhaul. Dashboard now splits stats from actions ensuring important todo items aren't missed.
Development
Introduced the blog reader achievement.
Development
Evaluation request page now better uses screen real estate on mobile devices.
2026-04-04
Feature
Introduction of the public Orthodontic Support triage engine. Patients can now report issues � broken braces, wire problems, pain, loose appliances, and more � without needing to log in. The guided multi-step flow captures patient details, issue category, sub-category, photos, and a description before automatically creating a patient record and raising an issue for the clinician.
Feature
Pre-treatment triage pathway added. Prospective patients not yet in treatment can be triaged to relevant treatment information and recommended next steps. A patient lead record is created automatically and tagged for clinician follow-up.
Feature
Triage categories, sub-categories, and photo requirements are now seeded with a standard set of in-treatment and pre-treatment categories for every new company. Existing companies can manage their own triage setup from the Triage Categories admin page.
Improvement
Patient record header now displays tags as chips for quick identification of patient origin and issue type.
Development
Triage categories now support a Pre-Treatment flag to split the in-treatment and pre-treatment support journeys. An optional recommended treatment URL can be set per category for the pre-treatment recommendation screen.
Development
Four new orthodontic support content pages introduced � Broken Brace, Wire Sticking Out, Orthodontic Pain, and Loose Bracket � providing SEO-optimised information and linking directly into the triage engine.
2026-04-02
Development
Introduction of an orthodontic software page, invisible braces page and a braces v clear aligners page.
Development
Costs pages now have expanded and more specific content.
Development
Various changes to page keywords.
2026-04-01
Development
Minor performance enhancements made to the background services.
2026-03-31
Improvement
Further work completed to improve the photo upload experience for Safari mobile users.
Improvement
Treatment plan no longer visible unless the evaluation request is ready for treatment planning or company config allows it.
2026-03-21
Improvement
Blog hub page refactored for easier readability and filtering and various SEO improvements.
2026-03-20
Improvement
Further work completed to solidify the user flow on the photo upload page.
Improvement
After a photo is taken or uploaded the user is now scrolled to the next required pose.
Improvement
After captured photo is confirmed we now display a loader whilst the image is being processed preventing the image canvas showing as a black square.
Improvement
Further work undertaken to improve the treatment planning suite with better handling of edge cases and improved UI for viewing annotated photos.
Improvement
Blog editor improvements including FAQs section and improved cited reference capture.
Improvement
Blog post page shows the new FAQs and the improved cited references.
Improvement
The reason why the treatment plan cannot be set or updated is now displayed within the TPS.
Improvement
Count of uploaded photos shown as a badge for each evaluation request listed on the Evaluation Requests page and within the patient record.
Development
Various SEO improvements made including html tag property added for accessibility headings, content enriched with FAQs
2026-03-19
Improvement
Camera permissions dialog now falls back to upload function when camera permission is denied.
Bug
Issue reported on Safari mobile addressed to fix issue with camera permissions and file upload.
2026-03-13
Improvement
Geolocation page now has a more engaging and informative layout with improved styling to make it easier to read and understand the information provided.
Improvement
New informational CTA sections added to hub pages.
Development
Redirects, forcing https and canonical fallback now handled in a centralised way for improved maintainability and consistency.
Development
Implemented Identity security stamp validation changes with an internal admin endpoint to invalidate user sessions and force logout.
Development
Sitemap generation has been optimised with caching to prevent performance issues as the site scales.
Development
Reordered sitemap index to prioritise recently updated and SEO based content.
Development
Refined robots.txt rules to prevent crawl waste from parameter URLs.
Development
Centralised JSON-LD generation to ensure consistent and valid structured data across pages.
2026-03-12
Improvement
Reduced database load by throttling login validation checks.
Improvement
Quote request page now has internal links for better SEO and ensuring the user is fully informed.
Improvement
The Orthodontist near me page, how treatment works page and the individual treatment & problems pages are now more informative and the styling has been improved to be more engaging and easier to read.
Development
Pre-render paths now generated dynamically based on content, with fallback for non-existent paths.
Development
Canonical URL handling improved with dynamic generation based on request path and query parameters.
Development
Trailing slash now removed for consistent sitemap URLs and matching canonical URLs.
Development
Open new tab URLs now have noopener noreferrer tags.
Development
Robots metatag fully utilized with dynamic SEO component rather than separate tags.
Development
SEO 'Unparsable structured data' fix applied to the geolocation page.
2026-03-10
Improvement
Patients list now displays postcode for easier location identification.
Bug
Patient transfer now includes a copy of the address details.
Development
Improved shared seo component with dynamic breadcrumb builder and standardised canonical url handling.
2026-02-28
Improvement
When a clinician tries to login via the patient login page rather than failing log in they will now be redirected to the clinician log in page along with the email they entered for quick and convenient log in.
Improvement
Overhaul of the trial company flow. Previously account password was set at the time of registering but now a separate email will be sent to set password. This allows sign ups to be performed on behalf of others.
Improvement
Refactored look and feel of the account password management pages such as forgot password.
Improvement
Reset and Set password pages will now pre-populate user email based on the request.
Improvement
Default theme values now set for email theming and email footer text.
Improvement
Theme page on company settings now display color picker text in the color selected rather than in a separate color swatch which was misleading users into thinking the swatch was clickable.
Bug
Updating a company logo then updating it a second time with no other page change caused an error which has now been resolved by clearing the previous cached custom logo.
2026-02-27
Development
Stripe integration coupled tighter so immediately after successful payment the user is able to access the site.
2026-02-26
Development
Introduction of a stylised offline page to be used during maintenance periods or downtime.
Development
Update to system architecture with slot based deployment strategy to allow for reduced downtime deployments and improved reliability.
Development
API now resolves on custom domain; api.virtualconsultant.online
2026-02-25
Improvement
Refactored look and feel of the evaluation request completion pages with useful quick links and next steps details.
Development
Dynamic white label logo optimisation for LCP.
Development
Added missing image alt tags.
Development
Delayed non-critical JS loading until later in the page load lifecycle.
Development
Added aria-labels to key icon button elements for improved accessibility.
2026-02-23
Improvement
Quote request and Register pages superfluous content removed and buttons better aligned on mobile.
Development
Development
Improved embedded back button function.
Other
Major web optimisation and asset bundling improvements, including build-based bundle versioning for cache busting.
2026-02-15
Feature
Introduced the patient transfer function which transfers majority of the original patient information to the target company excluding data which has company specific information such as quotes and orders.
Feature
Once a patient is transferred, a notification will also be sent to the company alert mailbox to support prompt follow-up.
Feature
Once a patient is transferred they will be automatically logged out of their session.
Improvement
Introduction of the eligibility hub where users can evaluate their eligibility based on the specific circumstance categorised by treatment required, problem and any specific detail.
Improvement
Removed UK wording from cost pages.
Development
Improved log out functionality.
2026-02-12
Improvement
Clear aligner systems now have consistent naming rather than specific brand names.
Improvement
Geographical location hub page created to list all locations we partner in.
2026-02-07
Improvement
Introduction of the IOTN Severity Score checker page to give patients a rough understanding of their personal IOTN.
Improvement
Checker pages now logically grouped in navigational menus.
Improvement
Unauthorised home menu standardised font across links and link groups.
2026-02-06
Improvement
Upgraded to .Net 10.
Improvement
Public-facing blog posts and the blog hub have been updated to better align with SEO best practices, with improved structure and styling.
Improvement
Location page SEO overhaul with pre-render.
Improvement
Introduction of the location browse by county page. Sitemap generation endpoint now also includes the county hub and related pages.
Improvement
Improvement to HTML structure to meet SEO requirements on public pages; integrations and change log.
2026-01-23
Improvement
Styling refactor of the problem, costs and treatment pages with standardised menus. Also applied a styling refactor to the 'how to take ortho photos' page.
Improvement
Introduction of the Remote Orthodontic Assessment informational page for clinicians.
2026-01-18
Improvement
Major overhaul of the unauthorised/lander homepage. Content focuses on providing information and CTAs to patients. The styling has been vastly improved to build on the Virtual Consultant flat design brand guidelines.
Improvement
Complete overhaul of the clinician and patient about pages with improved content and styling.
Improvement
Introduced contextual links and information to the treatment, cost and problem hub pages.
Improvement
Using new research papers we have been able to prove an increase of chair time saved minutes, travel time saved minutes and CO2 per remote appointment.
2026-01-16
Improvement
Updated pricing scheme where Premium plan users now able to create an unlimited amount of companies. Was previously limited to 2 companies only.
Improvement
Improved billing management UI for better performance and clarity on current plan and next billing date.
Improvement
Updated default quote product image. This image is served when the appliance product on the quote doesn't have an image uploaded.
Improvement
Nav menu updated to link to the relevant anonymous access patient/clinician about page.
Bug
Issue preventing new patients from access evaluations resolved. Was due to the auth role check also checking for subscription status.
Development
Bimi logo support added to email headers for improved brand recognition in supported email clients.
Development
Added extra error logging to Sentry.
2026-01-15
Feature
Plan upgrades and downgrades are now supported, with any pro-rata difference automatically applied as credit toward your next invoice.
Improvement
Admin login now encourages saving login information upon successful log in.
Improvement
Register CTAs added to home and about clinician pages.
Improvement
Company billing view invoices now redirects you to a private Stripe portal URL where you can manage your payment information and view historical invoices.
Bug
Newly registered demo accounts no longer redirect straight to the package upgrade page.
Development
Complete overhaul of side bar menu with desktop specific unauhorised user home menu component.
2026-01-11
Improvement
Updated company settings UI for better usability and clarity with pricing per unit values for optional extras.
Development
Metadata keywords truncated to meet recommended keywords character limits for SEO optimisation.
Development
Public pages improved layouts and standardised button types and styling for consistency.
Development
Location autocomplete extracted to partial and used in public hub pages.
Development
Further SEO improvements made to the Geolocation template served across all locations.
2026-01-10
Development
Basic usage report added to show users billable/free items that are chareable outside of their subscription plan.
Development
Problem hub and related pages introduced to help leads/patients understand common issues preventing a straight smile.
Development
Treatment hub and related pages introduced to help leads/patients understand what treatment options are available.
Development
Costs & Pricing hub and related pages introduced to help leads/patients understand the potential costs involved with treatment.
Development
Footer links updated to follow logical grouping categories.
Development
Standardised header tags across all public pages for improved SEO performance.
Development
Optimised geolocation OG image generation endpoint with caching.
2026-01-08
Development
Trial sign-up and renewal flow introduced, including a 14-day demo and updated registration journey.
Development
New public SEO pages added, including About, Locations, Pricing Plans, and Orthodontic Treatment Near Me, with improved metadata and search visibility.
Development
Authorization updated to use policy-based access control, supporting trial enforcement and clearer upgrade paths.
Development
Public routes extracted into a dedicated routing structure and internal navigation updated.
2026-01-06
Improvement
Location page loading and browsing improved.
Improvement
On both photo upload and camera capture the image quality has been significantly improved whilst maintaining as low as possible upload times.
Development
Note capture now auto saves automatically when added to an existing entity record.
Development
App Insights integration now captures verbose logs.
2026-01-05
Improvement
Dashboard now shows badges to quickly and easily identify the number of outstanding actions for the various categories shown.
Bug
Dashboard no longer filters out actionable items depending on which reporting filter period is selected.
Bug
Patient address data no longer cleared on log in.
Development
Timeline component now conditionally renders as a card for UI standardisation.
Development
Pre-Render now disabled to speed up data loading performance. Will take longer to load HTML onto the screen but will prevent data double loading in the background.
Development
Patient address postcode populated from quote request form now surfaced on the patient record.
2025-12-16
Bug
Issue that was preventing sending of automated reminders resolved. Was due to transaction scope.
2025-12-15
Feature
Introduction of the Treatment Planning Suite (TPS).
The TPS allows users with required role to compare all photos for a patient. Photos can be filtered by evaluation request. Each photo can be annotated and each annotated version can be viewed to give a full history.
The treatment plan itself now allows markup making complicated plans to be more legible and easier to follow.
When adding a treatment plan you can now mark as complete which will then complete the treatment planning activity and allow non-prescribing users a read only view.
Feature
You can now easily view the patients treatment plan history from within the patient management screen as well as within TPS.
Feature
Treatment plan required workflow is now conditional based on company settings.
Improvement
Photos that open image gallery now show helpful image information such as status and related pose details.
2025-12-12
Improvement
Date and time of when a patient uploads a photo is now captured.
2025-12-02
Feature
A new role has been introduced for 'Treatment Prescriber' ensuring only users with this role can add/set treatment plan.
Improvement
Evaluation request page for admins now shows a chip button indicating if treatment plan has been set allowing a click to view.
2025-12-01
Improvement
'Customer' has been renamed to 'Patient' throughout the admin interface for clarity.
2025-11-30
Improvement
Major revamp of the Evaluation Request page presented to patients. Fully redesigned UI and a more stable camera integration.
2025-11-25
Feature
You can now choose which mailbox connection to use when sending an email. Standard email elements such logo, title, and styling are still applied automatically to maintain consistent branding recognition.
Improvement
You can now send an email from a task. This will create a note against the task for tracebility of work completed to avoid duplicating work.
Improvement
You can directly view emails associated with a task from the task page.
Improvement
Users can now be deactivated. After deactivation the user will be automtaically kicked out of any active sessions after a page refresh.
2025-11-24
Feature
Added Gmail & Outlook mailbox connection management for secure automated email triage. While the app is going through Google and Microsoft verification (6�12 weeks), you may see temporary warnings such as:
Gmail: �Google hasn�t verified this app.� Outlook: �This app isn�t published by Microsoft.�
These appear only because verification is in progress. It is safe to select �Continue� to complete the connection.
Feature
Implemented an initial mailbox triage engine, retrieving unread messages, automatically matching senders to existing patients by email or name, and creating company-wide tasks based on incoming messages. If a patient match is found, tasks are linked directly to the patient; otherwise, a general company task is created. ????
Feature
Development
Other
New report introduced to view the result of each email processed as part of the triage engine.
Other
All emails processed by the triage engine are fully logged for auditing and troubleshooting purposes ensuring quick resolution of any issues. Dev dashboard extended to quickly view any errors.
2025-11-23
Improvement
Improved change log readability and formatting. Change log records are now tagged and you are able to filter by tag(s).
Bug
Certain CSS and JS bundling optimisations were causing slower page loads and visible content shifting during render. Asset prioritisation and optimisation logic have now been improved, resulting in faster load times and significantly reduced layout shift.
2025-11-22
Feature
Introduced company-wide tasks. Tasks can be assigned to users for accountability. Tasks can also be assigned to patients. Dashboard will now track and display stats around task resolutions. Resolution rules can be configured in the company settings. ???
2025-11-20
Improvement
Company audit record is now created when a user logs in.
Development
Custom logo now scales to size of app header and vertically aligns.
Development
Company creation only allowed for users with appropriate role.
2025-11-12
Improvement
To prevent email overload - reminders are only ever sent for the specified overdue days configured in company settings.
2025-11-09
Improvement
Audits now capture when users sign in using a magic link.
2025-11-08
Improvement
Font change making the site as a whole much easier to read.
Improvement
Home page layout geared towards conversion with clear CTAs for clinicians.
Improvement
Book demo form simplified with fewer required fields.
Bug
Authenticated user sliding refresh persists required claims which should prevent users getting stuck on a blank page loading screen.
2025-11-05
Feature
Unsubscribe requests are now captured internally and surfaced in the patient details page.
2025-11-01
Feature
First iteration of the Oral Health Analysis module introduced and can be configured to run manually or automatically. OH score is then surfaced within the Evaluation Request.
2025-10-27
Feature
Webhook functionality introduced! ?? You are now able to manage webhooks from the company settings area. Webhook requests have a retry strategy to avoid transient errors with full result logging accessed within the webhook management section or within the Webhooks report.
2025-10-18
Feature
Ability to customise text shown on the quote request page from the company settings section.
Feature
Added the marketing information report.
2025-10-14
Development
Platform highlights page introduced.
Development
Footer wording changes.
2025-10-13
Improvement
Evaluation request action renamed from �Mark as Treatment Planned� to �Mark as Complete�, reflecting that quotes now manage treatment planning for new patients. Additionally, clinicians can now directly add a treatment plan within the evaluation request.
Development
Canonical URL SEO warning fixed for Geographical Location slug page.
2025-10-12
Feature
Patient gamification introduced to incentivise engagement, reducing sales delays and chair-side time. ??
Improvement
Refined styling on the patient facing quote page to focus patients on viewing estimate details to gently encourage acceptance.
Improvement
Side navigation grouped more intuitively for better usability.
Bug
Issue preventing export to CSV resolved.
2025-10-11
Bug
SMS list filters now actually filter the data.
2025-10-09
Feature
Introduction of more company configuration values giving you the ability to toggle: Finance Enabled, SMS for Evaluation Requests, Evaluation Request Feedback and Patient Issue Replies. ??
Feature
Right-click / long press actions added to Evaluation Request rows for quick actions depending on state.
Improvement
Patient manager now allows expansion of Evaluation Requests row to show associated automated reminders.
Improvement
Patient manager now conditionally shows editable profile fields to clean the interface.
Improvement
Admin Quote page improved layout and easier form submission.
Improvement
SMS URL shortening now applied to all SMS messages sent.
2025-10-05
Improvement
Complete overhaul of the dashboard. Data is more logically grouped and styling more consistent. Data queries optimised.
Development
Geographical location browse page introduced to prevent orphaned links.
Development
Dynamic SEO content now has more null fallback values.
2025-10-04
Bug
Evaluation requests with generic images but no photo are removed to prevent them being stuck in pending state.
Bug
Automated evaluation requests were incorrectly generated based on weekly interval minus 1 day.
Bug
Resolved error when admin user was redirected from unauthorised home to dashboard.
Development
Evaluation manager now excludes Generic pose type.
Development
When patient raises an issue they are instantly presented with reply/compose functions.
Development
Patient quote now shows most recent primary product image with fallback behaviour.
Development
Autocomplete address lookup wildcard improved.
Development
API now exposes internal address controller with autocomplete endpoint.
Development
API docs now ignore internal endpoints.
Development
Improved unauthorised user home page menu styling and responsiveness.
2025-10-03
Development
Further security work for data protection and cross-application architecture access.
Development
Job endpoint added to allow manual triggering of scheduled tasks (internal only).
2025-09-20
Bug
Blog image deletion issue resolved.
2025-09-19
Improvement
Automated communications now send between 9am and 7pm to avoid unsocial hours.
Development
Sitemap generation endpoint performance improved.
Development
Geographical location lookup performance improved with enhanced SEO functionality.
Development
Enforced single canonical path to improve SEO efficiency.
2025-08-28
Development
Updated icons.
Development
Unauthorised user home page desktop menu shifted left.
Development
Sitemap endpoint performance improved.
2025-08-18
Development
Location pages introduced for SEO-friendly URLs. 36,099 locations created.
Development
Dynamic sitemap generation.
Development
Dynamic location page SEO content generation.
Development
Dynamic location page OG image generation minimal endpoint.
2025-08-16
Bug
Blog filter-by-tag fix.
Development
Various SEO header content introduced.
2025-08-14
Development
Site-wide blog function introduced.
2025-08-07
Improvement
Caching applied to most web assets including CSS, JS, icons and specific image directories.
2025-08-06
Improvement
Quotes now generate unique references to make them easier to identify.
2025-08-05
Improvement
App bar now occupies full width, improving sidebar space usage.
Bug
Sidebar now consistently closes on mobile after link click.
Development
Bundling and minification of CSS and JS files. ??
2025-08-01
Feature
Major overhaul of email functionality. Custom logo, colours and footer text now configurable.
Improvement
Automated emails with URLs now use shorter, cleaner links.
2025-07-29
Improvement
Prompt appears when creating an evaluation request asking whether to notify the patient immediately. ??
Improvement
Unauthorised home page now has a content menu.
Bug
Dashboard overview now filters correctly based on selected company.
2025-07-28
Feature
Introduction of �address� on patient and company objects with autocomplete lookup.
Improvement
Conditional dismissible prompt prompting users to install as PWA.
2025-07-27
Feature
?? Added PWA Support with Auto-Silent Updates including network-first strategy, offline fallback and full Lighthouse compliance.
Feature
Patient login now supports 6-digit authentication code via SMS.
Feature
Companies can now enable login codes via SMS (chargable).
Feature
Patients can upload optional extra photos.
Improvement
Sidebar auto-closes on mobile after navigation.
Development
Service worker enhancements with cache versioning and cleanup.
Development
Home page sections created with SEO in mind.
Development
Demo booking form introduced.
Development
Footer links added.
Development
Clinician and Patient about pages added.
2025-07-26
Feature
Admins can now raise patient issues from the management screen.
Improvement
Invalid photos now highlighted with a clearer red border.
2025-07-25
Feature
Evaluation requests are no longer marked complete until �Treatment Planned�.
Improvement
Introduced new �generic� pose type.
Improvement
Evaluation request list can now filter items pending Treatment Planned.
Improvement
Adding estimate now scrolls to new item.
Improvement
Company theme colour picker improved.
Improvement
Global culture info set.
2025-07-24
Improvement
Clearer camera-blocked / permission-denied messaging.
2025-07-23
Feature
Manual emails can now include attachments directly from company file store. ??
2025-07-22
Feature
Remote Assessments Impact: calculates key environmental factors based on completed remote assessments. ??
Improvement
Dashboard layout modularised into 3 tabbed sections.
2025-07-21
Improvement
Major overhaul of patient quote acceptance journey (3-step flow). ??
2025-07-20
Feature
Automated reminders now include full logging.
Feature
Automatic resolution of patient issues after 10 days inactivity.
Improvement
Patient issue replies now contain resolution information.
Improvement
Issues can now be re-opened by patient (within 7 days).
Improvement
Admins can recall unread patient issue messages.
Improvement
New automated issue-reply reminder.
2025-07-19
Bug
Duplicate filenames fixed for multi-file uploads.
Development
Centralised route management introduced.
2025-07-18
Feature
Admins can log in as a patient for troubleshooting. ??
2025-07-17
Feature
Appliances now company-specific.
Feature
SMS sending introduced. ???
Improvement
Appliances can be managed and marked as base group.
Improvement
Email+SMS list pages introduced.
2025-07-16
Improvement
New list component with consistent UI, pagination and search. ??
Improvement
Inactive evaluation requests now clean up related reminders.
Development
IdentityRole replaced with ApplicationRole. ??