diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 6b7095305..4f487990c 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,10 +3,11 @@
"isRoot": true,
"tools": {
"dotnet-ef": {
- "version": "8.0.10",
+ "version": "9.0.0",
"commands": [
"dotnet-ef"
- ]
+ ],
+ "rollForward": false
}
}
-}
+}
\ No newline at end of file
diff --git a/.github/workflows/fw-lite.yaml b/.github/workflows/fw-lite.yaml
index 37043dfda..f36d825e6 100644
--- a/.github/workflows/fw-lite.yaml
+++ b/.github/workflows/fw-lite.yaml
@@ -35,10 +35,14 @@ jobs:
submodules: true
- uses: actions/setup-dotnet@v4
with:
- dotnet-version: '8.x'
+ dotnet-version: '9.x'
- uses: actions/setup-node@v4
with:
node-version-file: './frontend/package.json'
+
+ - name: Setup Maui
+ run: dotnet workload install maui-windows
+
- name: Set Version
id: setVersion
shell: bash
@@ -86,7 +90,7 @@ jobs:
path: frontend/viewer/dist
- uses: actions/setup-dotnet@v4
with:
- dotnet-version: '8.x'
+ dotnet-version: '9.x'
- name: Dotnet build
working-directory: backend/FwLite/LocalWebApp
@@ -123,7 +127,7 @@ jobs:
path: frontend/viewer/dist
- uses: actions/setup-dotnet@v4
with:
- dotnet-version: '8.x'
+ dotnet-version: '9.x'
- name: Dotnet build
working-directory: backend/FwLite/LocalWebApp
@@ -156,7 +160,7 @@ jobs:
path: frontend/viewer/dist
- uses: actions/setup-dotnet@v4
with:
- dotnet-version: '8.x'
+ dotnet-version: '9.x'
- name: Setup Maui
run: dotnet workload install maui-windows
diff --git a/.github/workflows/integration-test-gha.yaml b/.github/workflows/integration-test-gha.yaml
index a604eea41..1e2315e21 100644
--- a/.github/workflows/integration-test-gha.yaml
+++ b/.github/workflows/integration-test-gha.yaml
@@ -22,6 +22,9 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: true
+ - uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: '9.x'
- name: Install Task
uses: arduino/setup-task@v2
with:
diff --git a/.github/workflows/integration-test.yaml b/.github/workflows/integration-test.yaml
index d35311121..e39d17716 100644
--- a/.github/workflows/integration-test.yaml
+++ b/.github/workflows/integration-test.yaml
@@ -85,7 +85,7 @@ jobs:
env:
DOTNET_INSTALL_DIR: ${{ inputs.runs-on == 'self-hosted' && '/opt/hostedtoolcache/dotnet' || '' }} #poor man's conditional
with:
- dotnet-version: '8.x'
+ dotnet-version: '9.x'
- uses: MatteoH2O1999/setup-python@429b7dee8a48c31eb72ce0b420ea938ff51c2f11 # v3.2.1
id: python
if: ${{ inputs.runs-on != 'windows-latest' && !env.act && inputs.hg-version == '3' }}
diff --git a/.github/workflows/lexbox-api.yaml b/.github/workflows/lexbox-api.yaml
index d0774bcd0..135e5ae95 100644
--- a/.github/workflows/lexbox-api.yaml
+++ b/.github/workflows/lexbox-api.yaml
@@ -49,7 +49,7 @@ jobs:
submodules: true
- uses: actions/setup-dotnet@v4
with:
- dotnet-version: '8.x'
+ dotnet-version: '9.x'
- name: Install Task
uses: arduino/setup-task@v2
with:
diff --git a/Taskfile.yml b/Taskfile.yml
index 0306ea674..ec5513e7e 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -68,7 +68,12 @@ tasks:
cmds:
- tilt up
- # dev
+ prod-ui-up:
+ interactive: true
+ desc: 'Starts the cluster using the production build of UI, good for automated testing'
+ cmds:
+ - tilt up -- --prod-ui-build
+ # dev
infra-up:
desc: 'Starts infrastructure for our ui and api, does not forward ports for api, if you want port forwarding use k8s:infra-forward'
cmds:
diff --git a/Tiltfile b/Tiltfile
index 061bdb63d..224a00bcf 100644
--- a/Tiltfile
+++ b/Tiltfile
@@ -4,8 +4,10 @@
version_settings(constraint='>=0.33.20')
secret_settings(disable_scrub=True)
config.define_bool("lexbox-api-local")
+config.define_bool("prod-ui-build")
cfg = config.parse()
forward_lexbox = not cfg.get("lexbox-api-local", False)
+prod_ui_build = cfg.get("prod-ui-build", False)
docker_build(
'local-dev-init',
@@ -33,16 +35,23 @@ docker_build(
sync('backend', '/src/backend')
]
)
-
-docker_build(
- 'ghcr.io/sillsdev/lexbox-ui',
- context='frontend',
- dockerfile='./frontend/dev.Dockerfile',
- only=['.'],
- live_update=[
- sync('frontend', '/app'),
- ]
-)
+if prod_ui_build:
+ docker_build(
+ 'ghcr.io/sillsdev/lexbox-ui',
+ context='frontend',
+ dockerfile='./frontend/Dockerfile',
+ only=['.']
+ )
+else:
+ docker_build(
+ 'ghcr.io/sillsdev/lexbox-ui',
+ context='frontend',
+ dockerfile='./frontend/dev.Dockerfile',
+ only=['.'],
+ live_update=[
+ sync('frontend', '/app'),
+ ]
+ )
docker_build(
'ghcr.io/sillsdev/lexbox-hgweb',
diff --git a/backend/Directory.Build.props b/backend/Directory.Build.props
index e70320586..574e961ef 100644
--- a/backend/Directory.Build.props
+++ b/backend/Directory.Build.props
@@ -9,7 +9,10 @@
$(MSBuildProjectDirectory)/bin/container/
+ dev
+ net9.0
false
+ enable
enable
Nullable
diff --git a/backend/Dockerfile b/backend/Dockerfile
index 4c4630a7f..3a43c094f 100644
--- a/backend/Dockerfile
+++ b/backend/Dockerfile
@@ -1,10 +1,10 @@
# syntax=docker/dockerfile:1
-FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
+FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
-FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
+FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
COPY . .
# WORKDIR /src
diff --git a/backend/FixFwData/FixFwData.csproj b/backend/FixFwData/FixFwData.csproj
index 7c217f173..e96561fca 100644
--- a/backend/FixFwData/FixFwData.csproj
+++ b/backend/FixFwData/FixFwData.csproj
@@ -2,14 +2,17 @@
WinExe
- net8.0
- enable
- enable
+ FixFwData
+ FixFwData
+ SIL Global
+ SIL Global
+ LexBoxApi Testing
+ Copyright © 2024 SIL Global
-
-
+
+
diff --git a/backend/FwHeadless/FwHeadless.csproj b/backend/FwHeadless/FwHeadless.csproj
index 82dcf0521..a106c1fa5 100644
--- a/backend/FwHeadless/FwHeadless.csproj
+++ b/backend/FwHeadless/FwHeadless.csproj
@@ -1,17 +1,15 @@
- net9.0
- enable
- enable
$(MSBuildProjectDirectory)
-
+
+
diff --git a/backend/FwHeadless/dev.Dockerfile b/backend/FwHeadless/dev.Dockerfile
index db60a422c..38a83bf9d 100644
--- a/backend/FwHeadless/dev.Dockerfile
+++ b/backend/FwHeadless/dev.Dockerfile
@@ -11,13 +11,13 @@ WORKDIR /src/backend
# Uncomment line below if second COPY fails
# RUN mkdir -p FwLite && chown www-data:www-data FwLite
# Copy the main source project files
-COPY --chown=www-data:www-data *.sln FwHeadless/FwHeadless.csproj FixFwData/FixFwData.csproj LexCore/LexCore.csproj LexData/LexData.csproj ./
+COPY --chown=www-data:www-data *.sln FwHeadless/FwHeadless.csproj FixFwData/FixFwData.csproj LexCore/LexCore.csproj LexData/LexData.csproj Directory.Build.props ./
# move them into the proper sub folders, based on the name of the project
RUN for file in $(ls *.csproj); do dir=${file%.*}; mkdir -p ${dir}/ && mv -v $file ${dir}/; done
# Do the same for csproj files in slightly different hierarchies
COPY --chown=www-data:www-data harmony/src/*/*.csproj ./
RUN for file in $(ls *.csproj); do dir=${file%.*}; mkdir -p harmony/src/${dir}/ && mv -v $file harmony/src/${dir}/; done
-COPY --chown=www-data:www-data harmony/src/Directory.Build.props ./harmony/src/
+COPY --chown=www-data:www-data harmony/src/Directory.Build.props harmony/Directory.Packages.props ./harmony/src/
COPY --chown=www-data:www-data FwLite/FwDataMiniLcmBridge/FwDataMiniLcmBridge.csproj FwLite/LcmCrdt/LcmCrdt.csproj FwLite/MiniLcm/MiniLcm.csproj FwLite/FwLiteProjectSync/FwLiteProjectSync.csproj ./
RUN for file in $(ls *.csproj); do dir=${file%.*}; mkdir -p FwLite/${dir}/ && mv -v $file FwLite/${dir}/; done
diff --git a/backend/FwLite/FwDataMiniLcmBridge.Tests/Fixtures/MockFwProjectList.cs b/backend/FwLite/FwDataMiniLcmBridge.Tests/Fixtures/MockFwProjectList.cs
index 43e3a65b8..6463670c1 100644
--- a/backend/FwLite/FwDataMiniLcmBridge.Tests/Fixtures/MockFwProjectList.cs
+++ b/backend/FwLite/FwDataMiniLcmBridge.Tests/Fixtures/MockFwProjectList.cs
@@ -7,7 +7,7 @@ public class MockFwProjectList(IOptions config, MockFwProjec
{
public override IEnumerable EnumerateProjects()
{
- return loader.Projects.Keys.Select(k => new FwDataProject(k, config.Value.ProjectsFolder));
+ return loader.Projects.Keys.Select(k => new FwDataProject(k, _config.Value.ProjectsFolder));
}
public override FwDataProject? GetProject(string name)
diff --git a/backend/FwLite/FwDataMiniLcmBridge.Tests/FwDataMiniLcmBridge.Tests.csproj b/backend/FwLite/FwDataMiniLcmBridge.Tests/FwDataMiniLcmBridge.Tests.csproj
index f2ff05e5d..c7f4be0c0 100644
--- a/backend/FwLite/FwDataMiniLcmBridge.Tests/FwDataMiniLcmBridge.Tests.csproj
+++ b/backend/FwLite/FwDataMiniLcmBridge.Tests/FwDataMiniLcmBridge.Tests.csproj
@@ -1,9 +1,6 @@
- net8.0
- enable
- enable
false
true
@@ -18,16 +15,16 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
+
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/backend/FwLite/FwDataMiniLcmBridge/FieldWorksProjectList.cs b/backend/FwLite/FwDataMiniLcmBridge/FieldWorksProjectList.cs
index 47cb91b57..f77bf944c 100644
--- a/backend/FwLite/FwDataMiniLcmBridge/FieldWorksProjectList.cs
+++ b/backend/FwLite/FwDataMiniLcmBridge/FieldWorksProjectList.cs
@@ -6,15 +6,17 @@ namespace FwDataMiniLcmBridge;
public class FieldWorksProjectList(IOptions config)
{
+ protected readonly IOptions _config = config;
+
public virtual IEnumerable EnumerateProjects()
{
- if (!Directory.Exists(config.Value.ProjectsFolder)) Directory.CreateDirectory(config.Value.ProjectsFolder);
- foreach (var directory in Directory.EnumerateDirectories(config.Value.ProjectsFolder))
+ if (!Directory.Exists(_config.Value.ProjectsFolder)) Directory.CreateDirectory(_config.Value.ProjectsFolder);
+ foreach (var directory in Directory.EnumerateDirectories(_config.Value.ProjectsFolder))
{
var projectName = Path.GetFileName(directory);
if (string.IsNullOrEmpty(projectName)) continue;
if (!File.Exists(Path.Combine(directory, projectName + ".fwdata"))) continue;
- yield return new FwDataProject(projectName, config.Value.ProjectsFolder);
+ yield return new FwDataProject(projectName, _config.Value.ProjectsFolder);
}
}
diff --git a/backend/FwLite/FwDataMiniLcmBridge/FwDataMiniLcmBridge.csproj b/backend/FwLite/FwDataMiniLcmBridge/FwDataMiniLcmBridge.csproj
index 5ab11b140..dd6ae3743 100644
--- a/backend/FwLite/FwDataMiniLcmBridge/FwDataMiniLcmBridge.csproj
+++ b/backend/FwLite/FwDataMiniLcmBridge/FwDataMiniLcmBridge.csproj
@@ -1,25 +1,22 @@
- net8.0
- enable
- enable
$(ApplicationDisplayVersion)
$(ApplicationDisplayVersion)
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/backend/FwLite/FwLiteDesktop/FwLiteDesktop.csproj b/backend/FwLite/FwLiteDesktop/FwLiteDesktop.csproj
index 043dacd5d..71ce7fca5 100644
--- a/backend/FwLite/FwLiteDesktop/FwLiteDesktop.csproj
+++ b/backend/FwLite/FwLiteDesktop/FwLiteDesktop.csproj
@@ -2,7 +2,7 @@
- net8.0-windows10.0.19041.0
+ net9.0-windows10.0.19041.0
@@ -80,7 +80,7 @@
-
+
diff --git a/backend/FwLite/FwLiteProjectSync.Tests/FwLiteProjectSync.Tests.csproj b/backend/FwLite/FwLiteProjectSync.Tests/FwLiteProjectSync.Tests.csproj
index 0858009d0..abe85567f 100644
--- a/backend/FwLite/FwLiteProjectSync.Tests/FwLiteProjectSync.Tests.csproj
+++ b/backend/FwLite/FwLiteProjectSync.Tests/FwLiteProjectSync.Tests.csproj
@@ -1,10 +1,6 @@
- net8.0
- enable
- enable
-
false
true
$(MSBuildProjectDirectory)
@@ -19,16 +15,16 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
+
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/backend/FwLite/FwLiteProjectSync/FwLiteProjectSync.csproj b/backend/FwLite/FwLiteProjectSync/FwLiteProjectSync.csproj
index 2d0c452f0..8cbde01b8 100644
--- a/backend/FwLite/FwLiteProjectSync/FwLiteProjectSync.csproj
+++ b/backend/FwLite/FwLiteProjectSync/FwLiteProjectSync.csproj
@@ -1,9 +1,6 @@
- net8.0
- enable
- enable
$(ApplicationDisplayVersion)
$(ApplicationDisplayVersion)
@@ -14,8 +11,8 @@
-
-
+
+
diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt
index 129ee865c..5e1e13fe7 100644
--- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt
+++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt
@@ -335,4 +335,4 @@
Relational:ViewName:
Relational:ViewSchema:
Annotations:
- ProductVersion: 8.0.4
\ No newline at end of file
+ ProductVersion: 8.0.11
\ No newline at end of file
diff --git a/backend/FwLite/LcmCrdt.Tests/LcmCrdt.Tests.csproj b/backend/FwLite/LcmCrdt.Tests/LcmCrdt.Tests.csproj
index 9f03df743..82a3eb3d8 100644
--- a/backend/FwLite/LcmCrdt.Tests/LcmCrdt.Tests.csproj
+++ b/backend/FwLite/LcmCrdt.Tests/LcmCrdt.Tests.csproj
@@ -1,9 +1,6 @@
- net8.0
- enable
- enable
false
true
@@ -15,14 +12,14 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/backend/FwLite/LcmCrdt.Tests/OpenProjectTests.cs b/backend/FwLite/LcmCrdt.Tests/OpenProjectTests.cs
index cdaa72ab0..702431f66 100644
--- a/backend/FwLite/LcmCrdt.Tests/OpenProjectTests.cs
+++ b/backend/FwLite/LcmCrdt.Tests/OpenProjectTests.cs
@@ -10,6 +10,7 @@ public class OpenProjectTests
public async Task OpeningAProjectWorks()
{
var sqliteConnectionString = "OpeningAProjectWorks.sqlite";
+ if (File.Exists(sqliteConnectionString)) File.Delete(sqliteConnectionString);
var builder = Host.CreateEmptyApplicationBuilder(null);
builder.Services.AddLcmCrdtClient();
using var host = builder.Build();
diff --git a/backend/FwLite/LcmCrdt/LcmCrdt.csproj b/backend/FwLite/LcmCrdt/LcmCrdt.csproj
index c2382ec8a..ce06a235f 100644
--- a/backend/FwLite/LcmCrdt/LcmCrdt.csproj
+++ b/backend/FwLite/LcmCrdt/LcmCrdt.csproj
@@ -1,9 +1,6 @@
- net8.0
- enable
- enable
$(ApplicationDisplayVersion)
$(ApplicationDisplayVersion)
@@ -14,12 +11,12 @@
-
+
-
-
-
+
+
+
diff --git a/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs b/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs
index 525d1d8e6..3a303f643 100644
--- a/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs
+++ b/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs
@@ -10,7 +10,6 @@ namespace LcmCrdt;
public class LcmCrdtDbContext(DbContextOptions dbContextOptions, IOptions options): DbContext(dbContextOptions), ICrdtDbContext
{
public DbSet ProjectData => Set();
- public IQueryable Snapshots => ((ICrdtDbContext)this).Snapshots;
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
diff --git a/backend/FwLite/LocalWebApp/LocalWebApp.csproj b/backend/FwLite/LocalWebApp/LocalWebApp.csproj
index 6d03a3e54..301cc5491 100644
--- a/backend/FwLite/LocalWebApp/LocalWebApp.csproj
+++ b/backend/FwLite/LocalWebApp/LocalWebApp.csproj
@@ -1,9 +1,6 @@
- net8.0
- enable
- enable
Linux
true
false
@@ -20,9 +17,9 @@
-
-
-
+
+
+
diff --git a/backend/FwLite/LocalWebApp/Routes/HistoryRoutes.cs b/backend/FwLite/LocalWebApp/Routes/HistoryRoutes.cs
index 4ea387061..354d0e9ff 100644
--- a/backend/FwLite/LocalWebApp/Routes/HistoryRoutes.cs
+++ b/backend/FwLite/LocalWebApp/Routes/HistoryRoutes.cs
@@ -7,6 +7,7 @@
using LinqToDB.EntityFrameworkCore;
using LocalWebApp.Hubs;
using Microsoft.OpenApi.Models;
+using MiniLcm.Models;
namespace LocalWebApp.Routes;
@@ -32,7 +33,7 @@ public static IEndpointConventionBuilder MapHistoryRoutes(this WebApplication ap
{
//todo requires the timestamp to be exact, otherwise the change made on that timestamp will not be included
//consider using a commitId and looking up the timestamp, but then we should be exact to the commit which we aren't right now.
- return await dataModel.GetAtTime(new DateTimeOffset(timestamp), entityId);
+ return await dataModel.GetAtTime(new DateTimeOffset(timestamp), entityId);
});
group.MapGet("/{entityId}",
(Guid entityId, ICrdtDbContext dbcontext) =>
diff --git a/backend/FwLite/MiniLcm.Tests/MiniLcm.Tests.csproj b/backend/FwLite/MiniLcm.Tests/MiniLcm.Tests.csproj
index be07e4f4e..1e5de3a28 100644
--- a/backend/FwLite/MiniLcm.Tests/MiniLcm.Tests.csproj
+++ b/backend/FwLite/MiniLcm.Tests/MiniLcm.Tests.csproj
@@ -1,10 +1,6 @@
- net8.0
- enable
- enable
-
false
true
@@ -12,9 +8,12 @@
-
-
-
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/backend/FwLite/MiniLcm/MiniLcm.csproj b/backend/FwLite/MiniLcm/MiniLcm.csproj
index 8f4dc0c48..7635880b1 100644
--- a/backend/FwLite/MiniLcm/MiniLcm.csproj
+++ b/backend/FwLite/MiniLcm/MiniLcm.csproj
@@ -1,16 +1,13 @@
- net8.0
- enable
- enable
$(ApplicationDisplayVersion)
$(ApplicationDisplayVersion)
-
+
diff --git a/backend/LexBoxApi/LexBoxApi.csproj b/backend/LexBoxApi/LexBoxApi.csproj
index 238fc7e57..638ba148e 100644
--- a/backend/LexBoxApi/LexBoxApi.csproj
+++ b/backend/LexBoxApi/LexBoxApi.csproj
@@ -1,12 +1,8 @@
- net8.0
- enable
- enable
Linux
true
- dev
7392cddf-9b3b-441c-9316-203bb5c4a6bc
1
@@ -27,22 +23,23 @@
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
-
-
-
+
+
+
@@ -54,6 +51,7 @@
+
diff --git a/backend/LexBoxApi/dev.Dockerfile b/backend/LexBoxApi/dev.Dockerfile
index bbedcbe09..77d9b6d5d 100644
--- a/backend/LexBoxApi/dev.Dockerfile
+++ b/backend/LexBoxApi/dev.Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:1
-FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
+FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
EXPOSE 80
EXPOSE 443
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
@@ -9,13 +9,13 @@ RUN mkdir -p /var/www && chown -R www-data:www-data /var/www
USER www-data:www-data
WORKDIR /src/backend
# Copy the main source project files
-COPY */*.csproj *.sln ./
+COPY */*.csproj *.sln Directory.Build.props ./
# move them into the proper sub folders, based on the name of the project
RUN for file in $(ls *.csproj); do dir=${file%.*}; mkdir -p ${dir}/ && mv -v $file ${dir}/; done
# Do the same for csproj files in slightly different hierarchies
COPY harmony/src/*/*.csproj ./
RUN for file in $(ls *.csproj); do dir=${file%.*}; mkdir -p harmony/src/${dir}/ && mv -v $file harmony/src/${dir}/; done
-COPY harmony/src/Directory.Build.props ./harmony/src/
+COPY harmony/src/Directory.Build.props harmony/Directory.Packages.props ./harmony/src/
COPY FwLite/*/*.csproj ./
RUN for file in $(ls *.csproj); do dir=${file%.*}; mkdir -p FwLite/${dir}/ && mv -v $file FwLite/${dir}/; done
diff --git a/backend/LexCore/LexCore.csproj b/backend/LexCore/LexCore.csproj
index 276363f1a..db0930955 100644
--- a/backend/LexCore/LexCore.csproj
+++ b/backend/LexCore/LexCore.csproj
@@ -1,14 +1,10 @@
- net8.0
- enable
- enable
- dev
-
+
diff --git a/backend/LexData/DataKernel.cs b/backend/LexData/DataKernel.cs
index e12fc003c..25dc734ca 100644
--- a/backend/LexData/DataKernel.cs
+++ b/backend/LexData/DataKernel.cs
@@ -1,5 +1,6 @@
using LexData.Configuration;
using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
@@ -18,6 +19,9 @@ public static void AddLexData(this IServiceCollection services,
options.EnableDetailedErrors();
options.UseNpgsql(serviceProvider.GetRequiredService>().Value.LexBoxConnectionString);
options.UseProjectables();
+ //todo remove this once this bug is fixed: https://github.com/dotnet/efcore/issues/35110
+ //we ended up not upgrading to EF Core 9, so this was disabled for now, may or may not be needed in the future
+ // options.ConfigureWarnings(builder => builder.Ignore(RelationalEventId.PendingModelChangesWarning));
if (useOpenIddict) options.UseOpenIddict();
#if DEBUG
options.EnableSensitiveDataLogging();
diff --git a/backend/LexData/LexData.csproj b/backend/LexData/LexData.csproj
index 1ad6d57d9..65ede2fc7 100644
--- a/backend/LexData/LexData.csproj
+++ b/backend/LexData/LexData.csproj
@@ -1,28 +1,22 @@
- net8.0
- enable
- enable
- dev
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
+
+
+
+
+
-
+
diff --git a/backend/LfClassicData/LfClassicData.csproj b/backend/LfClassicData/LfClassicData.csproj
index cbe4974fa..2a35852ac 100644
--- a/backend/LfClassicData/LfClassicData.csproj
+++ b/backend/LfClassicData/LfClassicData.csproj
@@ -1,15 +1,12 @@
- net8.0
- enable
- enable
-
-
+
+
diff --git a/backend/LfNext/LcmDebugger/LcmDebugger.csproj b/backend/LfNext/LcmDebugger/LcmDebugger.csproj
index e47e15988..92e8860a6 100644
--- a/backend/LfNext/LcmDebugger/LcmDebugger.csproj
+++ b/backend/LfNext/LcmDebugger/LcmDebugger.csproj
@@ -2,9 +2,6 @@
Exe
- net8.0
- enable
- enable
diff --git a/backend/SyncReverseProxy/Dockerfile b/backend/SyncReverseProxy/Dockerfile
deleted file mode 100644
index 8c431359b..000000000
--- a/backend/SyncReverseProxy/Dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
-WORKDIR /app
-EXPOSE 80
-EXPOSE 443
-
-FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
-WORKDIR /src
-COPY ["SyncReverseProxy/SyncReverseProxy.csproj", "SyncReverseProxy/"]
-RUN dotnet restore "SyncReverseProxy/SyncReverseProxy.csproj"
-COPY . .
-WORKDIR "/src/SyncReverseProxy"
-RUN dotnet build "SyncReverseProxy.csproj" -c Release -o /app/build
-
-FROM build AS publish
-RUN dotnet publish "SyncReverseProxy.csproj" -c Release -o /app/publish
-
-FROM base AS final
-WORKDIR /app
-COPY --from=publish /app/publish .
-ENTRYPOINT ["dotnet", "SyncReverseProxy.dll"]
diff --git a/backend/SyncReverseProxy/SyncReverseProxy.csproj b/backend/SyncReverseProxy/SyncReverseProxy.csproj
index 0a58ba985..fe72988bf 100644
--- a/backend/SyncReverseProxy/SyncReverseProxy.csproj
+++ b/backend/SyncReverseProxy/SyncReverseProxy.csproj
@@ -1,27 +1,23 @@
- net8.0
- enable
- enable
Linux
LexSyncReverseProxy
- dev
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
+
diff --git a/backend/Testing/Testing.csproj b/backend/Testing/Testing.csproj
index 3ccb8771e..a473fcdaa 100644
--- a/backend/Testing/Testing.csproj
+++ b/backend/Testing/Testing.csproj
@@ -1,10 +1,6 @@
- net8.0
- enable
- enable
-
false
$(MSBuildProjectDirectory)
@@ -16,7 +12,7 @@
-
+
@@ -27,22 +23,22 @@
-
-
+
+
-
-
-
-
+
+
+
+
-
+
- runtime; build; native; contentfiles; analyzers; buildtransitive
all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/backend/harmony b/backend/harmony
index 33b1aba76..c13987d13 160000
--- a/backend/harmony
+++ b/backend/harmony
@@ -1 +1 @@
-Subproject commit 33b1aba763633e8fc63f97b1d02332d1e1739c5a
+Subproject commit c13987d13f7fa4c37e0ebdd28b04e42a31df7e4c
diff --git a/frontend/tests/pages/userDashboardPage.ts b/frontend/tests/pages/userDashboardPage.ts
index e5d284699..a99fa0d66 100644
--- a/frontend/tests/pages/userDashboardPage.ts
+++ b/frontend/tests/pages/userDashboardPage.ts
@@ -9,12 +9,17 @@ export class UserDashboardPage extends AuthenticatedBasePage {
}
async openProject(projectName: string, projectCode: string): Promise {
+ await this.selectGridView();
const projectHeader = this.page.getByRole('heading', {name: projectName});
const projectCard = this.page.locator('.card', {has: projectHeader});
await projectCard.click();
return new ProjectPage(this.page, projectName, projectCode).waitFor();
}
+ async selectGridView(): Promise {
+ await this.page.click('.i-mdi-grid');
+ }
+
async clickCreateProject(): Promise {
await this.page.getByRole('link', {name: /(Create|Request) Project/, exact: true}).click();
return new CreateProjectPage(this.page).waitFor();