Portal Version History

Current version: v1.27.1

----------------------------------------------------------------
EP_Portal Version History
----------------------------------------------------------------

v1.27.1
Date: 05 Oct 2026
	Schema: The portal now applies its own schema patches at startup; do not run them by hand. The first start creates a SchemaPatches table and records 001-005 as already applied, and changes nothing else
	EnvVars: No new environment variables
Changes->
	New: the portal applies its own database schema patches when it starts
	- Each SQL patch in _Database.PortalDB/Patches that the database has not had yet is run in name order at startup and recorded in the new SchemaPatches table, so a release no longer needs anyone to run its SQL by hand
	- Patches already run by hand are recognised from what they created and recorded without being run. 005-RemoveUploads.sql is never run on an existing database: the old Uploads table it would drop is kept, and Admin > Settings says so for as long as it is there
	- If a patch fails, the portal does not start against a schema it does not expect: every page names the patch, the error and what the database account may do. Fix the cause and restart
	- Admin > Settings: new "Database patches" panel showing the patches recorded, what this start applied, the database server version and the database account's grants, with the account's name and credentials left out

----------------------------------------------------------------

v1.27.0
Date: 21 Aug 2026
	Schema: No new schema
	EnvVars: No new environment variables
Changes->
	Relinked to EP Services 2.6.7 (the portal was on 2.6.4)
	- ep_data, ep_models, ep_service and QR4 all move 2.6.4 -> 2.6.7. Nothing on the portal behaves differently and no enabled engine changes: 2.6.5 altered only how the test harnesses sample reference packs, and 2.6.6 and 2.6.7 changed only QCancer, which has been parked since 2.6.0 and is not offered anywhere on the site
	- 2.6.6 validated the QCancer 10-year (Q86) model against ClinRisk's own 2,000,000-row scored reference pack. That was the last open blocker to un-parking the engine
	- 2.6.7 withdrew two figures the published ClinRisk calculator does not itself produce: the EP-derived "anyCancer" score on the 10-year model, and the whole-patient refusal to score anyone with an existing cancer diagnosis. Per-cancer suppression, which is reference behaviour, is unchanged

----------------------------------------------------------------

v1.26.0
Date: 06 Aug 2026
	Schema: No new schema
	EnvVars: Added optional "DataProtectionKeysPath" - directory holding the Data Protection key ring; must survive a deploy (default /var/lib/ep_portal/dataprotection-keys)
Changes->
	Fix: the PROD outage of 3 Aug 2026, and the two faults behind it (see INC-001)
	- Data Protection key ring is now persisted to an explicit directory under a fixed application name, instead of letting the framework choose. Left implicit it could land on an in-memory repository, in which case every restart and every deploy silently signed all users out and invalidated password reset links already sent
	- Admin > Settings shows the key ring directory and its live key count, so the state can be checked after a deploy rather than inferred from a crash
	- Portal now pre-loads the shared-framework assemblies that made that outage fatal. .NET loads assemblies lazily from the runtime directory present at startup, and a Linux package upgrade can delete that directory under a running process, so an assembly never yet touched becomes unloadable weeks later. Loading them up front closes that window (dotnet/runtime#81020)
	- The startup log now records which runtime directory each of those assemblies came from, so a mismatch is visible in the log rather than in a crash
	Fix: broken links on Engines > Test Data
	- Restored the two Townsend downloads (MySQL dump and CSV). Both files were removed by a test-data cleanup in April 2026 while their links were left in place, so both had returned 404 since
	Fix: the scoped stylesheet was never loading on the Identity pages
	- _Layout.cshtml referenced portal.web.styles.css; the bundle is named after the assembly (ep_portal), so the reference 404'd and the styles in _Layout.cshtml.css had never been applied
	Housekeeping:
	- Removed six unused theme template views (Views/Auth/*Basic, Views/Pages/AccountSettings*). No controller rendered them, nothing linked to them, and the links inside them pointed at routes that do not exist - they were the only 404s left on the site
	- Full link sweep of the site: every remaining href and src resolves

----------------------------------------------------------------

v1.25.0
Date: 07 Jul 2026
	Schema: No new schema
Changes->
	Fix: password reset / "set your password" emails pointed at localhost instead of the public host when running behind the UAT/PROD reverse proxy
	- Portal now honours the proxy's X-Forwarded-Host / X-Forwarded-Proto / X-Forwarded-For headers (ForwardedHeaders middleware), so absolute links use the real public host and scheme
	- Admin > Settings: added a "Request & link host" panel showing the effective scheme/host, a sample reset link, and the raw X-Forwarded-* headers, so the link host can be eyeballed straight after a deploy (warns if the host still looks internal)

----------------------------------------------------------------

v1.24.0
Date: 05 Jul 2026
	Schema: No new schema
	EnvVars: Added SMTP settings for outbound email: "SmtpHost", "SmtpPort", "SmtpUser", "SmtpPassword", "SmtpFromAddress", "SmtpFromName"
Changes->
	New: password reset / "set your password" links by email (uses ASP.NET Identity reset tokens, valid for 24 hours)
	- Admin > Users: added "Send password link" to the actions menu - emails the user a secure link to set a new password ("Set password" retained as a manual override)
	- Creating a user no longer requires typing a password: the account is created and the user is emailed a link to set their own (also stops storing the plaintext password in the phone number field)
	- Self-service "Forgot password?" flow wired up and themed to match the login page, with a link added to the login page
	- Email is sent via SMTP, configured through environment variables (Gmail app password used for testing); no email facility existed before
	Housekeeping:
	- Removed the abandoned Casdoor integration artifacts

----------------------------------------------------------------

v1.23.0
Date: 27 Jun 2026
	Schema: No new schema
Changes->
	Key Usage chart improvements (Admin > Key Usage > drill-down):
	- Added a date range filter with presets (Last 7/30/60/90 days, Last year, All) plus From/To date pickers; defaults to the last 30 days
	- Usage now aggregates into wider buckets (hour/day/week/month) based on the selected range, so long ranges no longer render thousands of hourly bars
	- Engine and Metric selectors are now multi-select dropdowns
	- Each engine has a stable colour; "Scored" renders as a solid fill and "Validation failures" as a hatched fill of the same colour
	Release Notes page:
	- Added an "Upcoming Versions" section that lists release notes for versions newer than the deployed one, separated from the previous versions list

----------------------------------------------------------------

v1.22.0
Date: 25 Jun 2026
	Schema: No new schema
Changes->
	New Admin feature: Key Usage visibility
	- Added an Admin > Key Usage page summarising API/Batch key usage for all organisations (usage to date, limit, % used)
	- Drill-down per organisation with a Chart tab (usage over time, broken down by engine, with engine and metric filters) and a Detail tab (hourly breakdown)
	- Reads the KeyUseSummary and KeyUseDetail tables from the logging database
	UI:
	- Replaced the old blocking alert() pop-ups with modern SweetAlert2 toasts (success/info) and error dialogs
	- Admin Organisations and Users tables are now sortable and searchable
	- Fixed Actions dropdown menus being clipped inside tables (Admin lists and Batch processor)
	Housekeeping:
	- Resolved build warnings: awaited a fire-and-forget logging call, removed dead code, suppressed nullable-reference warnings via NoWarn

----------------------------------------------------------------

v1.21.0
Date: 25 Jun 2026
	Schema: No new schema
Changes->
	UI bug fixes (found in review):
	- Keys area: expired Legacy keys are now listed (previously the expired EP keys were shown twice and Legacy expired keys never appeared)
	- Admin > Create Keys: the "Is a new organisation?" toggle on the EP Software Keys form now works
	- Admin forms: fixed label/input associations (First name, Last name, Organisation, Expiry Date) and removed a duplicate element id
	- Corrected spelling on the SDKs and Test Data pages
	Admin navigation fixes:
	- Fixed dead links in the Users and Organisations action menus (Edit, Set password, Delete, View users/keys) that broke when opened from within an Organisation
	- Cancel buttons and the Save/redirect actions on Create/Edit User, Create Organisation, Set Password and Delete pages now target the correct controller endpoints
	- Editing a user now saves correctly (previously posted to a non-existent endpoint)
	Batch Processor:
	- Cancelling a queued upload no longer re-opens the portal in a new browser tab
	- Download links no longer open a blank new tab

----------------------------------------------------------------

v1.20.0
Date: Late April 2026

Changes->	
	Switched Batch Processor Back on
	Added More Batch Details to slide out panel
	Fixed double entry on Drag and Drop click
	Linked to Services 2.4.0 with flexible input model
	Added new Test Packs with minimal Columns
	Portal can now see Uploads done in the API, and Vice Versa

----------------------------------------------------------------

v1.19.0
Date: Early April 2026

Changes->	
	Fix to Admin Listing Keys, the URL on the menu was sending to the wrong endpoint, it's now showing keys for other Orgs correctly
	Better reporting and robustness on Portal for Batch Upload (hide download unless it's success)
	Bucket Region Added to all S3 calls (services and portal)
	Added delete option for stuck Uploads
	Added Status (Success/Fail) flags on Portal UI and Any error messages bubbled up into Upload Status Panel

----------------------------------------------------------------

v1.18.1
Date: 21 Mar 2026	
Changes->	
	Patch release to hide the Online Batch Processor for now, as we are not ready to release it yet.

----------------------------------------------------------------

v1.18.0
Date: 11 Mar 2026
	Schema: See PR.
	Dependent on latest ep_services <Version>2.3.0</Version>
Changes->	
	Linked to NUGETS of services at 2.3.0 - added new ep_data NUGET for Queues and DB access
	CSV uploader, triggering SQS message to process files asynchronously
	Added Compliance page
	Re-organise of the menu, new content.
	Release notes for Services 2.3.0

----------------------------------------------------------------

v1.17.2
Date: 24 Nov 2025
	Schema: No new schema	
Changes->	
	Removed the System.Net.Mail dependency which was causing issues on Prod (we think)

----------------------------------------------------------------

v1.17.1
Date: 17 Nov 2025
	Schema: No new schema	
Changes->	
	Added Environemnt variable

----------------------------------------------------------------

v1.17.0
Date: 11 Nov 2025
	Schema: No new schema	
Changes->	
	Added logging reports from API logs.

----------------------------------------------------------------

v1.16.0
Date: 08 Sep 2025
	Schema: No new schema	
Changes->	
	Fixed the Env display for Rich bucket setup, and removed the non Env ones from display/ selection (help files and Zip)

----------------------------------------------------------------

v1.15.0
Date: 01 Sep 2025
	Schema: No new schema	
Changes->	
	Changed the AWS file caching logic to use timestamps as well as file names, to cater for when we want to rebuild on  the same ep services version number

----------------------------------------------------------------

v1.14.0
Date: 01 Sep 2025
	Schema: No new schema	
Changes->	
	New example files added which have the new PredictionYears mandatory field in them.
	Bump to Services 2.0.11

----------------------------------------------------------------

v1.13.0
Date: 14 Aug 2025
	Schema: No new schema	
Changes->	
	Removed the DLL stripping code.

----------------------------------------------------------------

v1.12.1
Date: 04 Aug 2025
	Schema: No new schema	
Changes->	
	Added usernames to the viewkeys tables, as the username is not always the same as the Org name (spaces are replaced by Underscores, and it was causing confusion)

----------------------------------------------------------------

v1.12.0
Date: 25 Jun 2025
	Schema: No new schema
	EnvVars: Added: "Environment" 
Changes->	
	"Environment" variable obeyed and used to select the correct bucket path for the deployment files

----------------------------------------------------------------

v1.11.0
Date: 18 Jun 2025
	Schema: 002.sql
Changes->	
	Deployments tracked in new table when user clicks on them
	Nothing wired up in the UI to show this yet

----------------------------------------------------------------

v1.10.0
Date: 16 Jun 2025
	Schema: No new schema
Changes->	
	Linked to v 2.0.0 of Services

----------------------------------------------------------------

v1.9.0
Date: 02 Jun 2025
	Schema: No new schema
	EnvVars: Added: "FileCachePath" & "FileProcessingPath"
Changes->	
	Legacy and New Keys types supported
	Made the help pages public (no login)
	Added Software release notes pages
	Deployments: Created single ZIP for all downloads. Add templated read me and Key files into ZIP

----------------------------------------------------------------

v1.8.0
Date: 20 May 2025
Schema: No new schema
Test packs re-done with Meta Model validation in.
Help pages wired up

----------------------------------------------------------------

v1.7.1
Date: 02 Apr 2025
Schema: No new schema
Added custom version number sorter to sort the legacy list of product versions on the deployments area

----------------------------------------------------------------

v1.7.0
Date: 31 Mar 2025
Schema: No new schema
Link to ep_services 1.23.0

----------------------------------------------------------------

v1.6.0
Date: 25 Mar 2025
Schema: No new schema
QFracture test data added. 
Link to ep_services 1.22.0

----------------------------------------------------------------

v1.5.0
Date: 13 Mar 2025
Schema: No new schema
QR4 and X05 test data added
Re-arrange of screens for better resource messages
Change deployments screen into two sections (current version, archive versions)
Link to ep_services 1.21.0
bump to kick off build x2
re- bump 17 Mar 2025

----------------------------------------------------------------

v1.4.1
10 Feb 2025
- NSwag support for self hosted API bundling

----------------------------------------------------------------

v1.4.0
04 Feb 2025
- Added Latest and Legacy options for downloads. Better messages. Support for API downloads

----------------------------------------------------------------

v1.3.0
20 Jan 2025
- Added CSV for townsend and 10k, 100k test packs

----------------------------------------------------------------

v1.2.0
19 Nov 2024
- Validation on Key Verify
- Default to login screen on first visit (no anon access)

----------------------------------------------------------------

v1.1.0
Date: 10 Dec 2024
Schema: No new schema
Notes: Line up with ep_services 1.9.0, create test deploments using the new Single Key system
Linked to SignerLib 1.1 which contains "QDiabetes"

----------------------------------------------------------------

v1.0.0
Date: 15 Oct 2024 
Schema: 001.sql
Notes: Initial Release

----------------------------------------------------------------