diff --git a/Archive/cloudscribeTemplate_8.4_net80_bs5_vs2022.vsix b/Archive/cloudscribeTemplate_8.4_net80_bs5_vs2022.vsix
new file mode 100644
index 0000000..87a6103
Binary files /dev/null and b/Archive/cloudscribeTemplate_8.4_net80_bs5_vs2022.vsix differ
diff --git a/Content/WebApp/WebApp.csproj b/Content/WebApp/WebApp.csproj
index 295674d..651426c 100644
--- a/Content/WebApp/WebApp.csproj
+++ b/Content/WebApp/WebApp.csproj
@@ -1,357 +1,357 @@
-
-
-
- net8.0
- WebApp-4BC5DF1F-B155-4A69-9719-0AB349B1ACB2
-
- true
- Latest
-
-
-
-
- InProcess
-
-
-
- 1701;1702;0436
-
-
- 1701;1702;0436
-
-
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ net8.0
+ WebApp-4BC5DF1F-B155-4A69-9719-0AB349B1ACB2
+
+ true
+ Latest
+
+
+
+
+ InProcess
+
+
+
+ 1701;1702;0436
+
+
+ 1701;1702;0436
+
+
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index b9fd3c1..03cd7a4 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -1,5 +1,37 @@
## Release Notes
+### version 8.4.0 - November 2025
+
+#### **Breaking Changes**
+- **[#748](https://github.com/cloudscribe/cloudscribe/issues/748)**: Enhanced Cookie Consent System - implemented a more sophisticated cookie consent system allowing users to dismiss cookie banners without fully accepting cookies. **Breaking change** for sites with local view overrides - two key files were modified in the Bootstrap5 template. See the [documentation](https://www.cloudscribe.com/managing-cookie-consent).
+
+#### **Security Improvements**
+- **[#1054](https://github.com/cloudscribe/cloudscribe/issues/1054)**: EntityFramework Dependencies - updated Microsoft.EntityFrameworkCore dependencies to address security vulnerabilities in transitive dependencies.
+- **[#1113](https://github.com/cloudscribe/cloudscribe/issues/1113)**: jQuery Validate Update - updated jQuery.validate library to address security vulnerability discovered during penetration testing.
+- **[#1125](https://github.com/cloudscribe/cloudscribe/issues/1125)**: Cookie Security - improved cookie security configuration by addressing SameSite cookie settings for better protection.
+
+#### **Bug Fixes**
+- **[#1150](https://github.com/cloudscribe/cloudscribe/issues/1150)**: Summernote Editor - fixed issue where HTML code entered in raw HTML view was not retained when saving unless user switched back to WYSIWYG mode first.
+- **[#1177](https://github.com/cloudscribe/cloudscribe/issues/1177)**: API Authentication - fixed EnforceSiteRulesMiddleware bug that incorrectly started HTTP responses for Terms & Conditions violations on API routes, causing authentication errors.
+- **[#1169](https://github.com/cloudscribe/cloudscribe/issues/1169)**: IP Address Blocking - re-wrote IP address blocking/permitting logic to ensure "Permitted" rules consistently take precedence over "Blocked" rules when dealing with IP address ranges.
+- **[#500](https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/500)**: Page Manager UI - fixed scrolling issue in SimpleContent Page Manager where selecting a page would auto-scroll to top with misplaced context menu.
+
+#### **UI/UX Improvements**
+- **[#1157](https://github.com/cloudscribe/cloudscribe/issues/1157)**: Summernote Theme Consistency - added CSS override to ensure Summernote editor maintains consistent black-on-white appearance across different themes.
+- **[#639](https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/639)**: SimpleContent Layout - moved page metadata below child page menu for improved layout and user experience.
+- **[#501](https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/501)**: Access Control - improved unauthorized access handling in SimpleContent with proper redirects to login/access denied pages instead of generic 404 errors.
+- **[#1134](https://github.com/cloudscribe/cloudscribe/issues/1134)**: Registration Settings - modified user interface to clarify the purpose of a confusing checkbox on "/siteadmin/registerpageinfo" page which has no backing database field.
+
+#### **Developer Tools & Features**
+- **[#482](https://github.com/cloudscribe/cloudscribe.SimpleContent/issues/482)**: CSP-Compliant Scripts - added mechanism in Developer Tools to allow adding JavaScript directly to pages with Content Security Policy compliance through tag helpers.
+- **[#1182](https://github.com/cloudscribe/cloudscribe/issues/1182)**: Localization Improvements - rationalized ResX string references throughout core views, standardizing localization with consistent snake_case resource keys.
+- **[#1194](https://github.com/cloudscribe/cloudscribe/issues/1194)** & **[#45](https://github.com/cloudscribe/cloudscribe.UserProperties.Kvp/issues/45)**: User Data Cleanup - added event handler for post-user deletion to clean up remaining Key-Value Pair (KVP) data from deleted users.
+- **[#55](https://github.com/cloudscribe/cloudscribe.UserProperties.Kvp/issues/55)**: User Export Compatibility - added conditional UserExportPartial to KVP views to ensure compatibility with different versions of cloudscribe.Core.CompiledViews.Bootstrap5 by using view engine checks.
+
+#### **Code Cleanup**
+- **[#1138](https://github.com/cloudscribe/cloudscribe/issues/1138)** & **[#1160](https://github.com/cloudscribe/cloudscribe/issues/1160)**: Legacy Removal - removed outdated Bootstrap3 and deprecated .pgsql libraries across cloudscribe solutions to improve maintainability.
+- **[#1163](https://github.com/cloudscribe/cloudscribe/issues/1163)**: Test Infrastructure - fixed and reorganized unit test infrastructure with new working tests.
+
### version 8.3.0 - July 2025
#### **@cloudscribe/cloudscribe**
diff --git a/cloudscribe.templates.nuspec b/cloudscribe.templates.nuspec
index 256ba7e..76dcd53 100644
--- a/cloudscribe.templates.nuspec
+++ b/cloudscribe.templates.nuspec
@@ -1,28 +1,28 @@
-
-
-
- cloudscribe.templates
- 8.3.0
- cloudscribe Project Templates
- Joe Audette
- Project template for starting new web application projects with cloudscribe library components
- ASP.NET Core cloudscribe
- Copyright © Exegesis Spatial Data Management
- en-US
- https://github.com/cloudscribe/cloudscribe.templates
- Apache-2.0
- false
-
-
-
-
- NUGET_README.md
-
-
-
-
-
-
-
+
+
+
+ cloudscribe.templates
+ 8.4.0
+ cloudscribe Project Templates
+ Joe Audette
+ Project template for starting new web application projects with cloudscribe library components
+ ASP.NET Core cloudscribe
+ Copyright © Exegesis Spatial Data Management
+ en-US
+ https://github.com/cloudscribe/cloudscribe.templates
+ Apache-2.0
+ false
+
+
+
+
+ NUGET_README.md
+
+
+
+
+
+
+
diff --git a/cloudscribeTemplate/source.extension.vsixmanifest b/cloudscribeTemplate/source.extension.vsixmanifest
index 4b6433e..6255158 100644
--- a/cloudscribeTemplate/source.extension.vsixmanifest
+++ b/cloudscribeTemplate/source.extension.vsixmanifest
@@ -1,35 +1,35 @@
-
-
-
-
- cloudscribe Project Template
- A Visual Studio extension that makes it easy to start new web application projects using cloudscribe libraries
- https://www.cloudscribe.com/docs/introduction
- License.txt
- VS2022 extension - .NET 8.0 and BS5
- Properties\project-icon.png
- asp.net core cloudscribe
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ cloudscribe Project Template
+ A Visual Studio extension that makes it easy to start new web application projects using cloudscribe libraries
+ https://www.cloudscribe.com/docs/introduction
+ License.txt
+ VS2022 extension - .NET 8.0 and BS5
+ Properties\project-icon.png
+ asp.net core cloudscribe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testtemplates.sh b/testtemplates.sh
index 35b5f7e..87fbbdb 100755
--- a/testtemplates.sh
+++ b/testtemplates.sh
@@ -16,8 +16,10 @@ nuget pack cloudscribe.templates.nuspec -OutputDirectory "nupkgs"
#Uninstall any existing local version of the template
dotnet new uninstall cloudscribe.templates
+
#Install the new version of the template we've just compiled
dotnet new install ./nupkgs/*.nupkg
+[ $? -ne 0 ] && echo "dotnet new install failed" && exit 1
# now we need to create a new project from the template and try and build it
# we'll use various options to test the different template options
@@ -31,6 +33,7 @@ dotnet new install ./nupkgs/*.nupkg
DBOPTIONS="NoDb MSSQL MySql SQLite pgsql AllStorage"
S=0
+FAILED=""
echo "---------------------------------------------------------------------------------------------"
@@ -58,12 +61,12 @@ for DB in $DBOPTIONS; do
if [ -d "$SCRIPT_DIR/$TESTPROJECTDIR" ]; then
cd $SCRIPT_DIR/$TESTPROJECTDIR
dotnet new cloudscribe -Da $DB $MODULEOPTIONS
- [ $? -ne 0 ] && echo "dotnet new failed" && break
+ [ $? -ne 0 ] && echo "dotnet new failed" && FAILED="$FAILED $DB" && break
dotnet restore --force --no-cache --force-evaluate
- [ $? -ne 0 ] && echo "dotnet restore failed" && break
+ [ $? -ne 0 ] && echo "dotnet restore failed" && FAILED="$FAILED $DB" && break
dotnet list package
dotnet build
- [ $? -ne 0 ] && echo "dotnet build failed" && break
+ [ $? -ne 0 ] && echo "dotnet build failed" && FAILED="$FAILED $DB" && break
cd $SCRIPT_DIR
S=$((S+1))
fi
@@ -73,6 +76,14 @@ for DB in $DBOPTIONS; do
done
rm -Rf $SCRIPT_DIR/$TESTPROJECTDIR 2>/dev/null
+if [ $S -ne 6 ]; then
+ echo "------------------------------------------------------"
+ echo "Failed to build all 6 projects, only built $S"
+ echo "Failed DB options: $FAILED"
+ echo "------------------------------------------------------"
+ exit 1
+fi
+
echo "------------------------------------------------------"
echo "Successfully built $S/6 projects with various options!"
echo "------------------------------------------------------"