coalesce-mcp 6.5.0 → 6.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ # 6.5.1
2
+ - Broad improvements to accessibility issues identified by axe-core across all components.
3
+ - `vue`, `date-fns`, and `date-fns-tz` are now peer dependencies instead of direct dependencies of `coalesce-vue` and `coalesce-vue-vuetify3`.
4
+ - Fix self-referential foreign key infinite recursion in code generation.
5
+ - Fix Vuetify 4 issues:
6
+ - Margin issue in `c-admin-audit-log-page` `pre` elements
7
+ - Color issue in `c-time-picker`.
8
+
9
+ - The template now uses pnpm instead of npm for better DX. To migrate an existing project:
10
+ 1. Install pnpm: `npm install -g pnpm`
11
+ 2. Delete `package-lock.json`, and copy `pnpm-workspace.yaml` and the root `package.json` from the template into your solution root (next to your `.slnx`). Add your web project as a package in the workspace (`packages: - YourProject.Web`).
12
+ 3. Run `pnpm install`.
13
+ 4. In `Program.cs`, add `c.PackageManagerCommand = "pnpm";` to `UseViteDevelopmentServer` options.
14
+ 5. Add any phantom dependencies that pnpm's strict `node_modules` structure reveals (e.g. `date-fns`, `date-fns-tz`). Build errors or runtime import failures will indicate which ones are missing.
15
+ 6. Update CI/CD scripts to use `pnpm` instead of `npm`. Add a step to install pnpm. Run `pnpm install --frozen-lockfile` from the solution root. Replace other `npm` commands with `pnpm`.
16
+
1
17
  # 6.5.0
2
18
  - Support enums annotated with `[JsonConverter(typeof(JsonStringEnumConverter))]` as string-serialized enums. These are generated as string-valued TypeScript enums and serialized as strings over the wire.
3
19
  - Added `getPromise()` method to API callers, returning the current invocation's promise (or `undefined` if idle).
@@ -7,12 +23,13 @@
7
23
  - `UseViteDevelopmentServer` now exposes a `PackageManagerCommand` option (defaults to "npm") to configure which package manager runs the dev script. Improved error messages when the configured package manager is not installed.
8
24
  - Fix: `no-sort-in-computed` eslint rule false positive when sorting a locally-declared array variable inside `computed()`.
9
25
  - Fix: Handle the possibility that Audit logging's `AuditInterceptor` can end up singleton under specific EF usage patterns (e.g. `AddDbContextFactory` + not using `OnConfiguring`).
26
+ - Re-exported `isAxiosError` from `coalesce-vue` to avoid phantom dependency on `axios`.
10
27
 
11
28
  ## Template Changes
12
29
  - Added Vuetify 4 CSS layer ordering to `index.html` to work around Vite 8/Rolldown CSS ordering bugs.
13
- - Replaced deprecated `typeface-roboto` with `@fontsource/roboto/latin.css` and `@fontsource/roboto/latin-italic.css`.
30
+ - Replaced deprecated `typeface-roboto` package with `@fontsource/roboto/latin.css` and `@fontsource/roboto/latin-italic.css`.
14
31
  - The first-party password/passkey login flow is now two-stage: enter username first, then choose between password, passkey, or a one-time email code. When `Passkeys` is enabled, users who sign in with password or email code are then prompted to create a passkey.
15
- - `Role.Permissions` are no longer EF-mapped as enums. The EF property is now `List<string>`, with a `[NotMapped]` `PermissionEnums` wrapper that silently drops unrecognized values. This prevents `InvalidOperationException` when a `Permission` enum member is removed but old values remain in the database.
32
+ - `Role.Permissions` are no longer EF-mapped as enums. The EF property is now `List<string>`, with a `[NotMapped] PermissionEnums` wrapper that drops unrecognized values. This prevents `InvalidOperationException` when a `Permission` enum member is removed but old values remain in the database.
16
33
  - Added rate limiting to authentication pages (sign-in, register, forgot password, reset password, email confirmation, external login) to mitigate brute-force abuse.
17
34
 
18
35
  # 6.4.0
@@ -49,9 +49,11 @@ jobs:
49
49
  with:
50
50
  node-version: 24.x
51
51
 
52
- - name: npm ci
53
- run: npm ci
54
- working-directory: Coalesce.Starter.Vue.Web
52
+ - name: Install pnpm
53
+ run: npm install -g pnpm@11
54
+
55
+ - name: pnpm install
56
+ run: pnpm install --frozen-lockfile
55
57
 
56
58
  - name: Restore Nuget packages
57
59
  run: dotnet restore
@@ -60,12 +62,12 @@ jobs:
60
62
  run: dotnet coalesce --what-if --verify
61
63
  working-directory: Coalesce.Starter.Vue.Web
62
64
 
63
- - name: npm run lint
64
- run: npm run lint
65
+ - name: pnpm lint
66
+ run: pnpm lint
65
67
  working-directory: Coalesce.Starter.Vue.Web
66
68
 
67
- - name: npm run build
68
- run: npm run build
69
+ - name: pnpm build
70
+ run: pnpm build
69
71
  working-directory: Coalesce.Starter.Vue.Web
70
72
 
71
73
  - name: dotnet build
@@ -308,6 +308,7 @@
308
308
  "**/*.g.ts",
309
309
  "**/*.lock.json",
310
310
  "**/package-lock.json",
311
+ "**/pnpm-lock.yaml",
311
312
  "**/DEVELOPMENT.md"
312
313
  ]
313
314
  },
@@ -12,7 +12,7 @@
12
12
  "xml.format.maxLineWidth": 0,
13
13
  "chat.tools.terminal.autoApprove": {
14
14
  "dotnet test": true,
15
- "npm test": true,
15
+ "pnpm test": true,
16
16
  "dotnet tool restore": true,
17
17
  "dotnet restore": true,
18
18
  "dotnet build": true
@@ -10,13 +10,13 @@ An `IntelliTect Coalesce`–based project. Projects:
10
10
  - Data: EF Core entity models, services, business logic, etc
11
11
  - Data.Test: TUnit automated tests for the Data project.
12
12
  - Migrations: EF Core Migrations assembly. Create and manage migrations here, e.g. `dotnet ef migrations add MigrationName`. Run `dotnet ef` in this project's working directory, don't pass extra args like startup-project to `dotnet ef` calls.
13
- - Web: ASP.NET Core server. Serves both API endpoints and frontend Vue assets. Automatically launches Vite dev server - don't do `npm run dev` manually.
13
+ - Web: ASP.NET Core server. Serves both API endpoints and frontend Vue assets. Automatically launches Vite dev server - don't do `pnpm dev` manually.
14
14
  - Web/src: Vite, Vue 3, Vuetify 4, and Coalesce for data binding and API access.
15
15
 
16
16
  - Coalesce generates DTOs, controllers, and TypeScript from your models. After making changes to your models, invoke code generation with the `coalesce_generate` tool. The `coalesce.json` file is in the workspace root.
17
- - If you run tests with `npm test`, pass `--run` to avoid running in interactive mode. E.g. `npm test -- --run`.
17
+ - If you run tests with `pnpm test`, pass `--run` to avoid running in interactive mode. E.g. `pnpm test --run`.
18
18
  - In Vue files, you don't need to add import statements for components nor composables from `vue`, `vue-router`, or those defined by the project's source code - they will be auto-imported by Vite.
19
- - Do not run `npm run build` to validate changes unless the user asks because this ruins HMR if the app is running. Instead, validate frontend changes by checking for problems with `read/problems`.
19
+ - Do not run `pnpm build` to validate changes unless the user asks because this ruins HMR if the app is running. Instead, validate frontend changes by checking for problems with `read/problems`.
20
20
  - Use SCSS for all styles - `lang="scss"` in .vue files.
21
21
  - Use `date-fns` for date manipulation and formatting, or `.$display(propName)` on Coalesce ViewModel instances, or `c-display` in Vue templates.
22
22
 
@@ -191,6 +191,7 @@ if (app.Environment.IsDevelopment())
191
191
  app.UseViteDevelopmentServer(c =>
192
192
  {
193
193
  c.DevServerPort = 5002;
194
+ c.PackageManagerCommand = "pnpm";
194
195
  });
195
196
 
196
197
  app.MapCoalesceSecurityOverview("coalesce-security");
@@ -3,6 +3,7 @@
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
6
+ "packageManager": "pnpm@11.0.8",
6
7
  "scripts": {
7
8
  "dev": "vite",
8
9
  "build": "vite build && vue-tsc --noEmit",
@@ -13,21 +14,18 @@
13
14
  "coalesce": "dotnet coalesce"
14
15
  },
15
16
  "dependencies": {
17
+ "@fontsource/roboto": "^5.2.6",
16
18
  "@fortawesome/fontawesome-free": "^7.1.0",
17
19
  "@microsoft/applicationinsights-web": "^3.4.1",
18
20
  "@vueuse/core": "^14.3.0",
19
- "coalesce-vue": "6.5.0",
20
- "coalesce-vue-vuetify3": "6.5.0",
21
- "@fontsource/roboto": "^5.2.6",
21
+ "coalesce-vue": "6.5.1",
22
+ "coalesce-vue-vuetify3": "6.5.1",
23
+ "date-fns": "^4.0.0",
24
+ "date-fns-tz": "^3.0.0",
22
25
  "vue": "^3.5.33",
23
26
  "vue-router": "^5.0.6",
24
27
  "vuetify": "^4.0.6"
25
28
  },
26
- "overrides": {
27
- "js-beautify": {
28
- "glob": "13.0.6"
29
- }
30
- },
31
29
  "devDependencies": {
32
30
  "@types/node": "^24.0.0",
33
31
  "@vitejs/plugin-vue": "^6.0.6",
@@ -37,7 +35,7 @@
37
35
  "@vue/test-utils": "^2.4.10",
38
36
  "eslint": "^10.3.0",
39
37
  "eslint-config-prettier": "^10.1.8",
40
- "eslint-plugin-coalesce": "6.5.0",
38
+ "eslint-plugin-coalesce": "6.5.1",
41
39
  "eslint-plugin-prettier": "^5.5.4",
42
40
  "eslint-plugin-vue": "^10.9.0",
43
41
  "jsdom": "^29.1.1",
@@ -1,4 +1,5 @@
1
1
  import { fileURLToPath, URL } from "node:url";
2
+ import { execSync } from "node:child_process";
2
3
 
3
4
  import { defineConfig } from "vite";
4
5
 
@@ -24,11 +25,16 @@ export default defineConfig({
24
25
  test: /\.s?css|type=style/,
25
26
  priority: 30,
26
27
  },
28
+ //#if AppInsights
29
+ { name: "appI", test: /applicationinsights/, priority: 20 },
30
+ //#endif
27
31
  {
28
- name(moduleId) {
32
+ name(moduleId: string) {
29
33
  // Suggest that top level node_modules folders should have their own chunk.
30
34
  return (
31
- /node_modules[/\\]([^/\\]+)/i.exec(moduleId)?.[1] ?? null
35
+ /node_modules[/\\](?:\.pnpm[/\\])?(@?[^@/\\]+)/i.exec(
36
+ moduleId,
37
+ )?.[1] ?? null
32
38
  );
33
39
  },
34
40
  },
@@ -90,6 +96,13 @@ export default defineConfig({
90
96
  },
91
97
 
92
98
  server: {
99
+ fs: {
100
+ allow: [
101
+ // Workaround https://github.com/vitejs/vite/issues/22405
102
+ execSync("pnpm store path", { encoding: "utf8" }).trim(),
103
+ ".",
104
+ ],
105
+ },
93
106
  warmup: {
94
107
  clientFiles: ["./src/views/**/*.vue"],
95
108
  },
@@ -7,7 +7,7 @@
7
7
 
8
8
  <AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
9
9
 
10
- <CoalesceVersion>6.5.0</CoalesceVersion>
10
+ <CoalesceVersion>6.5.1</CoalesceVersion>
11
11
  <!-- Disable Source Link attribute in Debug to avoid hot reload issues.
12
12
  In Release, the source revision is included for app update detection. -->
13
13
  <IncludeSourceRevisionInInformationalVersion Condition="'$(Configuration)' == 'Debug'">false</IncludeSourceRevisionInInformationalVersion>
@@ -22,11 +22,11 @@ steps:
22
22
  inputs:
23
23
  version: "24.x"
24
24
 
25
- - task: Npm@1
26
- displayName: npm ci
27
- inputs:
28
- command: "ci"
29
- workingDir: $(webDir)
25
+ - script: npm install -g pnpm@11
26
+ displayName: Install pnpm
27
+
28
+ - script: pnpm install --frozen-lockfile
29
+ displayName: pnpm install
30
30
 
31
31
  - task: DotNetCoreCLI@2
32
32
  inputs:
@@ -42,19 +42,13 @@ steps:
42
42
  workingDirectory: "$(webDir)"
43
43
  displayName: Check Coalesce has run
44
44
 
45
- - task: Npm@1
46
- displayName: npm run lint
47
- inputs:
48
- command: "custom"
49
- workingDir: $(webDir)
50
- customCommand: "run lint"
45
+ - script: pnpm lint
46
+ displayName: pnpm lint
47
+ workingDirectory: $(webDir)
51
48
 
52
- - task: Npm@1
53
- displayName: npm run build
54
- inputs:
55
- command: "custom"
56
- workingDir: $(webDir)
57
- customCommand: "run build"
49
+ - script: pnpm build
50
+ displayName: pnpm build
51
+ workingDirectory: $(webDir)
58
52
 
59
53
  - task: DotNetCoreCLI@2
60
54
  displayName: dotnet build
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "coalesce-starter-vue",
3
+ "private": true,
4
+ "packageManager": "pnpm@11.0.8",
5
+ "devDependencies": {
6
+ "eslint": "^10.3.0"
7
+ }
8
+ }